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
+
+
+
+
+
+
+