+
+ Document Creator
@@ -52,6 +58,17 @@
+
+ CSP HQ
+
+ Suite 0000
+ 1234 Some Street
+ Haven
+ ME
+ 00000
+ US
+
+ US
@@ -64,6 +81,15 @@
+
+ Person Name 1
+
+
+ name@example.com
+ 2020000001
+ 27b78960-59ef-4619-82b0-ae20b9c709ac
+ 6b286b5d-8f07-4fa7-8847-1dd0d88f73fb
+ Example OrganizationExOrg
@@ -75,6 +101,9 @@
+
+ 3360e343-9860-4bda-9dfc-ff427c3dfab6
+ 11111111-0000-4000-9000-000000000001
diff --git a/src/validations/constraints/content/ssp-responsible-party-prepared-by-INVALID.xml b/src/validations/constraints/content/ssp-responsible-party-prepared-by-INVALID.xml
new file mode 100644
index 000000000..d13594ec7
--- /dev/null
+++ b/src/validations/constraints/content/ssp-responsible-party-prepared-by-INVALID.xml
@@ -0,0 +1,13 @@
+
+
+
+ Prepared By
+
+
The organization that prepared this SSP.
+
+
+
+ 3360e343-9860-4bda-9dfc-ff427c3dfab6
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-responsible-party-prepared-by-location-valid-INVALID.xml b/src/validations/constraints/content/ssp-responsible-party-prepared-by-location-valid-INVALID.xml
new file mode 100644
index 000000000..f565fc88d
--- /dev/null
+++ b/src/validations/constraints/content/ssp-responsible-party-prepared-by-location-valid-INVALID.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ CSP HQ
+
+ Suite 0000
+ 1234 Some Street
+
+ ME
+ 00000
+
+
+
+ 27b78960-59ef-4619-82b0-ae20b9c709ac
+
+
+ 3360e343-9860-4bda-9dfc-ff427c3dfab6
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-role-defined-prepared-by-INVALID.xml b/src/validations/constraints/content/ssp-role-defined-prepared-by-INVALID.xml
new file mode 100644
index 000000000..ac2413474
--- /dev/null
+++ b/src/validations/constraints/content/ssp-role-defined-prepared-by-INVALID.xml
@@ -0,0 +1,16 @@
+
+
+
+ Prepared By
+
+
The organization that prepared this SSP. If developed in-house, this is the CSP itself.
+
+
+
+ 3360e343-9860-4bda-9dfc-ff427c3dfab6
+
+
Exactly one
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/fedramp-external-constraints.xml b/src/validations/constraints/fedramp-external-constraints.xml
index a565fcd05..60ee68833 100644
--- a/src/validations/constraints/fedramp-external-constraints.xml
+++ b/src/validations/constraints/fedramp-external-constraints.xml
@@ -72,6 +72,9 @@
+
+
+ A FedRAMP SSP MUST have a short system name.
+
+ Role Defined Prepared By
+
+ A FedRAMP SSP MUST have a role defined as "prepared-by".
+
+
+ Responsible Party Prepared By
+
+ A FedRAMP SSP MUST have a responsible party that references a role defined as "prepared-by".
+
+
+ Responsible Party Prepared By Location Valid
+
+ A FedRAMP SSP MUST have a responsible party defined as "prepared-by" that references a party with a valid location.
+
diff --git a/src/validations/constraints/unit-tests/responsible-party-prepared-by-FAIL.yaml b/src/validations/constraints/unit-tests/responsible-party-prepared-by-FAIL.yaml
new file mode 100644
index 000000000..20dd9ebe4
--- /dev/null
+++ b/src/validations/constraints/unit-tests/responsible-party-prepared-by-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for responsible-party-prepared-by
+ description: >-
+ This test case validates the behavior of constraint
+ responsible-party-prepared-by
+ content: ../content/ssp-responsible-party-prepared-by-INVALID.xml
+ expectations:
+ - constraint-id: responsible-party-prepared-by
+ result: fail
diff --git a/src/validations/constraints/unit-tests/responsible-party-prepared-by-PASS.yaml b/src/validations/constraints/unit-tests/responsible-party-prepared-by-PASS.yaml
new file mode 100644
index 000000000..3f55f7247
--- /dev/null
+++ b/src/validations/constraints/unit-tests/responsible-party-prepared-by-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for responsible-party-prepared-by
+ description: >-
+ This test case validates the behavior of constraint
+ responsible-party-prepared-by
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: responsible-party-prepared-by
+ result: pass
diff --git a/src/validations/constraints/unit-tests/responsible-party-prepared-by-location-valid-FAIL.yaml b/src/validations/constraints/unit-tests/responsible-party-prepared-by-location-valid-FAIL.yaml
new file mode 100644
index 000000000..95bac42d9
--- /dev/null
+++ b/src/validations/constraints/unit-tests/responsible-party-prepared-by-location-valid-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for responsible-party-prepared-by-location-valid
+ description: >-
+ This test case validates the behavior of constraint
+ responsible-party-prepared-by-location-valid
+ content: ../content/ssp-responsible-party-prepared-by-location-valid-INVALID.xml
+ expectations:
+ - constraint-id: responsible-party-prepared-by-location-valid
+ result: fail
diff --git a/src/validations/constraints/unit-tests/responsible-party-prepared-by-location-valid-PASS.yaml b/src/validations/constraints/unit-tests/responsible-party-prepared-by-location-valid-PASS.yaml
new file mode 100644
index 000000000..be2cb57b4
--- /dev/null
+++ b/src/validations/constraints/unit-tests/responsible-party-prepared-by-location-valid-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for responsible-party-prepared-by-location-valid
+ description: >-
+ This test case validates the behavior of constraint
+ responsible-party-prepared-by-location-valid
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: responsible-party-prepared-by-location-valid
+ result: pass
diff --git a/src/validations/constraints/unit-tests/role-defined-prepared-by-FAIL.yaml b/src/validations/constraints/unit-tests/role-defined-prepared-by-FAIL.yaml
new file mode 100644
index 000000000..8e16c1f6a
--- /dev/null
+++ b/src/validations/constraints/unit-tests/role-defined-prepared-by-FAIL.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Negative Test for role-defined-prepared-by
+ description: This test case validates the behavior of constraint role-defined-prepared-by
+ content: ../content/ssp-role-defined-prepared-by-INVALID.xml
+ expectations:
+ - constraint-id: role-defined-prepared-by
+ result: fail
diff --git a/src/validations/constraints/unit-tests/role-defined-prepared-by-PASS.yaml b/src/validations/constraints/unit-tests/role-defined-prepared-by-PASS.yaml
new file mode 100644
index 000000000..20380bce1
--- /dev/null
+++ b/src/validations/constraints/unit-tests/role-defined-prepared-by-PASS.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Positive Test for role-defined-prepared-by
+ description: This test case validates the behavior of constraint role-defined-prepared-by
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: role-defined-prepared-by
+ result: pass
diff --git a/src/validations/module.mk b/src/validations/module.mk
index 513867b08..047da3c28 100644
--- a/src/validations/module.mk
+++ b/src/validations/module.mk
@@ -18,7 +18,7 @@ init-validations:
build-validations:
@echo "Running Cucumber Tests"
$(OSCAL_CLI) server start -bg
- @npm run test:server
+ @npm run test
$(OSCAL_CLI) server stop
clean-validations: