diff --git a/features/fedramp_extensions.feature b/features/fedramp_extensions.feature index 111dad50a..a055edce5 100644 --- a/features/fedramp_extensions.feature +++ b/features/fedramp_extensions.feature @@ -185,6 +185,8 @@ Examples: | security-level-PASS.yaml | | security-sensitivity-level-matches-security-impact-level-FAIL.yaml | | security-sensitivity-level-matches-security-impact-level-PASS.yaml | + | unique-inventory-item-asset-id-FAIL.yaml | + | unique-inventory-item-asset-id-PASS.yaml | | user-has-authorized-privilege-FAIL.yaml | | user-has-authorized-privilege-PASS.yaml | | user-has-privilege-level-FAIL.yaml | @@ -299,6 +301,7 @@ Examples: | scan-type | | security-level | | security-sensitivity-level-matches-security-impact-level | + | unique-inventory-item-asset-id | | user-has-authorized-privilege | | user-has-privilege-level | | user-has-role-id | diff --git a/package-lock.json b/package-lock.json index 401162427..462475c1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "inquirer": "^10.1.8", "js-yaml": "^4.1.0", "jsdom": "^25.0.0", - "oscal": "^2.0.5-rc-3", + "oscal": "2.0.5", "ts-node": "^10.9.2", "xml-formatter": "^3.6.3", "xml2js": "^0.6.2" @@ -2694,9 +2694,9 @@ } }, "node_modules/oscal": { - "version": "2.0.5-rc-3", - "resolved": "https://registry.npmjs.org/oscal/-/oscal-2.0.5-rc-3.tgz", - "integrity": "sha512-cbJb+XX//rt5WuLxCBmYKA2huSLh560O3Z0jmqLjWxuh+Tb0T+zndZVQ6YvjIJo2rmASCVdjGKdBm4lok8epEQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/oscal/-/oscal-2.0.5.tgz", + "integrity": "sha512-S19CxjK9dYAE/5CYGFF/M1J9z24oIA/WX5Lkk84BzTvmeAa6qWzwIYEnmoeXRCnJnsLP5sNh/9VSFGfvY97omw==", "license": "MIT", "dependencies": { "@terascope/fetch-github-release": "^0.8.10", diff --git a/src/validations/constraints/content/ssp-unique-inventory-item-asset-id-INVALID.xml b/src/validations/constraints/content/ssp-unique-inventory-item-asset-id-INVALID.xml new file mode 100644 index 000000000..da6e78981 --- /dev/null +++ b/src/validations/constraints/content/ssp-unique-inventory-item-asset-id-INVALID.xml @@ -0,0 +1,81 @@ + + + + System Administrator + + + + system-admin + + Admin + +

admin user

+
+ administration +
+
+ + Primary Application Server + +

Main application server hosting the core system functionality.

+
+ main line + + + 11111111-0000-4000-9000-000000000001 + + +

This is the primary application server for the system.

+
+
+ + External API Connection + +

Secure connection to an external API for data enrichment.

+
+ + + + + 11111111-0000-4000-9000-000000000001 + + +

This connection is used for secure data exchange with external systems.

+
+
+ + +

Primary database server

+
+ + + + + + + + 11111111-0000-4000-9000-000000000001 + + + + +
+ + +

Primary database server

+
+ + + + + + + + 11111111-0000-4000-9000-000000000001 + + + + +
+
+
\ 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 6264f4e1c..6ac135b66 100644 --- a/src/validations/constraints/fedramp-external-constraints.xml +++ b/src/validations/constraints/fedramp-external-constraints.xml @@ -454,5 +454,18 @@ - + + + + + Unique Asset Identifier + Ensure each inventory item has a unique asset-id property. + + + +

Asset IDs must be unique across all inventory items to ensure proper identification and tracking of system components.

+
+
+
+
\ No newline at end of file diff --git a/src/validations/constraints/unit-tests/unique-inventory-item-asset-id-FAIL.yaml b/src/validations/constraints/unit-tests/unique-inventory-item-asset-id-FAIL.yaml new file mode 100644 index 000000000..806d1ad70 --- /dev/null +++ b/src/validations/constraints/unit-tests/unique-inventory-item-asset-id-FAIL.yaml @@ -0,0 +1,11 @@ +test-case: + name: Negative Test for unique-inventory-item-asset-id + description: >- + This test case validates the behavior of constraint + unique-inventory-item-asset-id + content: ../content/ssp-unique-inventory-item-asset-id-INVALID.xml + expectations: + - constraint-id: unique-inventory-item-asset-id + fail_count: + type: "exact" + value: 1 \ No newline at end of file diff --git a/src/validations/constraints/unit-tests/unique-inventory-item-asset-id-PASS.yaml b/src/validations/constraints/unit-tests/unique-inventory-item-asset-id-PASS.yaml new file mode 100644 index 000000000..25ce4c022 --- /dev/null +++ b/src/validations/constraints/unit-tests/unique-inventory-item-asset-id-PASS.yaml @@ -0,0 +1,9 @@ +test-case: + name: Positive Test for unique-inventory-item-asset-id + description: >- + This test case validates the behavior of constraint + unique-inventory-item-asset-id + content: ../content/ssp-all-VALID.xml + expectations: + - constraint-id: unique-inventory-item-asset-id + result: pass