From 8145a51ca5e9d567b4557d95daaca5b1eb8942fb Mon Sep 17 00:00:00 2001 From: Hakan Dilek Date: Thu, 17 Oct 2024 18:15:33 +0200 Subject: [PATCH] feat: add detailed test fixtures related to bom.definitions Signed-off-by: Hakan Dilek --- tests/_data/models.py | 48 +++++- ...nitions_and_detailed_standards-1.0.xml.bin | 4 + ...nitions_and_detailed_standards-1.1.xml.bin | 4 + ...itions_and_detailed_standards-1.2.json.bin | 10 ++ ...nitions_and_detailed_standards-1.2.xml.bin | 6 + ...itions_and_detailed_standards-1.3.json.bin | 10 ++ ...nitions_and_detailed_standards-1.3.xml.bin | 6 + ...itions_and_detailed_standards-1.4.json.bin | 10 ++ ...nitions_and_detailed_standards-1.4.xml.bin | 6 + ...itions_and_detailed_standards-1.5.json.bin | 20 +++ ...nitions_and_detailed_standards-1.5.xml.bin | 10 ++ ...itions_and_detailed_standards-1.6.json.bin | 142 ++++++++++++++++++ ...nitions_and_detailed_standards-1.6.xml.bin | 104 +++++++++++++ 13 files changed, 379 insertions(+), 1 deletion(-) create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.0.xml.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.1.xml.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.json.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.xml.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.json.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.xml.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.json.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.xml.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.json.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.xml.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.json.bin create mode 100644 tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.xml.bin diff --git a/tests/_data/models.py b/tests/_data/models.py index d005b2b1..85b8610a 100644 --- a/tests/_data/models.py +++ b/tests/_data/models.py @@ -78,7 +78,7 @@ RelatedCryptoMaterialState, RelatedCryptoMaterialType, ) -from cyclonedx.model.definition import Definitions, Standard +from cyclonedx.model.definition import CreId, Definitions, Level, Requirement, Standard from cyclonedx.model.dependency import Dependency from cyclonedx.model.impact_analysis import ( ImpactAnalysisAffectedStatus, @@ -1303,6 +1303,51 @@ def get_bom_with_definitions_standards() -> Bom: ) +def get_bom_with_definitions_and_detailed_standards() -> Bom: + """ + Returns a BOM with definitions and multiple detailed standards including requirements and levels. + """ + return _make_bom( + definitions=Definitions( + standards=[ + Standard(name='Some Standard', version='1.2.3', description='Some description', bom_ref='some-standard', + owner='Some Owner', external_references=[get_external_reference_1()], + requirements=[ + Requirement(identifier='REQ-1', title='Requirement 1', text='some requirement text', + bom_ref='req-1', descriptions=['Requirement 1 described here', 'and here'], + open_cre=[CreId('CRE:1-2')], properties=[Property(name='key1', value='val1')] + ), + Requirement(identifier='REQ-2', title='Requirement 2', text='some requirement text', + bom_ref='req-2', descriptions=['Requirement 2 described here'], + open_cre=[CreId('CRE:1-2'), CreId('CRE:3-4')], + properties=[Property(name='key2', value='val2')], + parent='req-1' + ), + ], + levels=[ + Level(identifier='LVL-1', title='Level 1', description='Level 1 description', + bom_ref='lvl-1', ), + Level(identifier='LVL-2', title='Level 2', description='Level 2 description', + bom_ref='lvl-2', ) + ]), + Standard(name='Other Standard', version='1.0.0', description='Other description', + bom_ref='other-standard', owner='Other Owner', + external_references=[get_external_reference_2()], + requirements=[ + Requirement(identifier='REQ-3', title='Requirement 3', text='some requirement text', + bom_ref='req-3', descriptions=['Requirement 3 described here', 'and here'], + open_cre=[CreId('CRE:5-6'), CreId('CRE:7-8')], + properties=[Property(name='key3', value='val3')] + ) + ], + levels=[ + Level(identifier='LVL-3', title='Level 3', description='Level 3 description', + bom_ref='lvl-3', ) + ]) + ] + )) + + # --- @@ -1350,4 +1395,5 @@ def get_bom_with_definitions_standards() -> Bom: get_bom_for_issue_630_empty_property, get_bom_with_lifecycles, get_bom_with_definitions_standards, + get_bom_with_definitions_and_detailed_standards, } diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.0.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.0.xml.bin new file mode 100644 index 00000000..acb06612 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.0.xml.bin @@ -0,0 +1,4 @@ + + + + diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.1.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.1.xml.bin new file mode 100644 index 00000000..55ef5cda --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.1.xml.bin @@ -0,0 +1,4 @@ + + + + diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.json.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.json.bin new file mode 100644 index 00000000..8f473bd3 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.json.bin @@ -0,0 +1,10 @@ +{ + "metadata": { + "timestamp": "2023-01-07T13:44:32.312678+00:00" + }, + "serialNumber": "urn:uuid:1441d33a-e0fc-45b5-af3b-61ee52a88bac", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.2b.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.2" +} \ No newline at end of file diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.xml.bin new file mode 100644 index 00000000..df1938ec --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.2.xml.bin @@ -0,0 +1,6 @@ + + + + 2023-01-07T13:44:32.312678+00:00 + + diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.json.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.json.bin new file mode 100644 index 00000000..02943890 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.json.bin @@ -0,0 +1,10 @@ +{ + "metadata": { + "timestamp": "2023-01-07T13:44:32.312678+00:00" + }, + "serialNumber": "urn:uuid:1441d33a-e0fc-45b5-af3b-61ee52a88bac", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.3a.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.3" +} \ No newline at end of file diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.xml.bin new file mode 100644 index 00000000..8341ff60 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.3.xml.bin @@ -0,0 +1,6 @@ + + + + 2023-01-07T13:44:32.312678+00:00 + + diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.json.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.json.bin new file mode 100644 index 00000000..48f1745d --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.json.bin @@ -0,0 +1,10 @@ +{ + "metadata": { + "timestamp": "2023-01-07T13:44:32.312678+00:00" + }, + "serialNumber": "urn:uuid:1441d33a-e0fc-45b5-af3b-61ee52a88bac", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.4" +} \ No newline at end of file diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.xml.bin new file mode 100644 index 00000000..d0a7d4c9 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.4.xml.bin @@ -0,0 +1,6 @@ + + + + 2023-01-07T13:44:32.312678+00:00 + + diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.json.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.json.bin new file mode 100644 index 00000000..57b5e590 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.json.bin @@ -0,0 +1,20 @@ +{ + "metadata": { + "timestamp": "2023-01-07T13:44:32.312678+00:00" + }, + "properties": [ + { + "name": "key1", + "value": "val1" + }, + { + "name": "key2", + "value": "val2" + } + ], + "serialNumber": "urn:uuid:1441d33a-e0fc-45b5-af3b-61ee52a88bac", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.5" +} \ No newline at end of file diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.xml.bin new file mode 100644 index 00000000..f952637c --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.5.xml.bin @@ -0,0 +1,10 @@ + + + + 2023-01-07T13:44:32.312678+00:00 + + + val1 + val2 + + diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.json.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.json.bin new file mode 100644 index 00000000..4dd3ed7c --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.json.bin @@ -0,0 +1,142 @@ +{ + "definitions": { + "standards": [ + { + "bom-ref": "other-standard", + "description": "Other description", + "externalReferences": [ + { + "type": "website", + "url": "https://cyclonedx.org" + } + ], + "levels": [ + { + "bom-ref": "lvl-3", + "description": "Level 3 description", + "identifier": "LVL-3", + "title": "Level 3" + } + ], + "name": "Other Standard", + "owner": "Other Owner", + "requirements": [ + { + "bom-ref": "req-3", + "descriptions": [ + "Requirement 3 described here", + "and here" + ], + "identifier": "REQ-3", + "openCre": [ + "CRE:5-6", + "CRE:7-8" + ], + "properties": [ + { + "name": "key3", + "value": "val3" + } + ], + "text": "some requirement text", + "title": "Requirement 3" + } + ], + "version": "1.0.0" + }, + { + "bom-ref": "some-standard", + "description": "Some description", + "externalReferences": [ + { + "comment": "No comment", + "hashes": [ + { + "alg": "SHA-256", + "content": "806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b" + } + ], + "type": "distribution", + "url": "https://cyclonedx.org" + } + ], + "levels": [ + { + "bom-ref": "lvl-1", + "description": "Level 1 description", + "identifier": "LVL-1", + "title": "Level 1" + }, + { + "bom-ref": "lvl-2", + "description": "Level 2 description", + "identifier": "LVL-2", + "title": "Level 2" + } + ], + "name": "Some Standard", + "owner": "Some Owner", + "requirements": [ + { + "bom-ref": "req-1", + "descriptions": [ + "Requirement 1 described here", + "and here" + ], + "identifier": "REQ-1", + "openCre": [ + "CRE:1-2" + ], + "properties": [ + { + "name": "key1", + "value": "val1" + } + ], + "text": "some requirement text", + "title": "Requirement 1" + }, + { + "bom-ref": "req-2", + "descriptions": [ + "Requirement 2 described here" + ], + "identifier": "REQ-2", + "openCre": [ + "CRE:1-2", + "CRE:3-4" + ], + "parent": "req-1", + "properties": [ + { + "name": "key2", + "value": "val2" + } + ], + "text": "some requirement text", + "title": "Requirement 2" + } + ], + "version": "1.2.3" + } + ] + }, + "metadata": { + "timestamp": "2023-01-07T13:44:32.312678+00:00" + }, + "properties": [ + { + "name": "key1", + "value": "val1" + }, + { + "name": "key2", + "value": "val2" + } + ], + "serialNumber": "urn:uuid:1441d33a-e0fc-45b5-af3b-61ee52a88bac", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6" +} \ No newline at end of file diff --git a/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.xml.bin b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.xml.bin new file mode 100644 index 00000000..2ba3df70 --- /dev/null +++ b/tests/_data/snapshots/get_bom_with_definitions_and_detailed_standards-1.6.xml.bin @@ -0,0 +1,104 @@ + + + + 2023-01-07T13:44:32.312678+00:00 + + + val1 + val2 + + + + + Other Standard + 1.0.0 + Other description + Other Owner + + + REQ-3 + Requirement 3 + some requirement text + + Requirement 3 described here + and here + + CRE:5-6 + CRE:7-8 + + val3 + + + + + + LVL-3 + Level 3 + Level 3 description + + + + + https://cyclonedx.org + + + + + Some Standard + 1.2.3 + Some description + Some Owner + + + REQ-1 + Requirement 1 + some requirement text + + Requirement 1 described here + and here + + CRE:1-2 + + val1 + + + + REQ-2 + Requirement 2 + some requirement text + + Requirement 2 described here + + CRE:1-2 + CRE:3-4 + req-1 + + val2 + + + + + + LVL-1 + Level 1 + Level 1 description + + + LVL-2 + Level 2 + Level 2 description + + + + + https://cyclonedx.org + No comment + + 806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b + + + + + + +