Skip to content

Commit 459d324

Browse files
committed
test-data
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
1 parent 60bfc69 commit 459d324

File tree

6 files changed

+159
-9
lines changed

6 files changed

+159
-9
lines changed

.isort.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ skip_glob =
99
.git/*,.tox/*,.venv/*,venv/*,.venv*/*,venv*/*,
1010
_OLD/*,_TEST/*,
1111
docs/*
12+
examples/*
1213
combine_as_imports = true
1314
default_section = THIRDPARTY
1415
ensure_newline_before_comments = true

tests/data.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,19 +130,34 @@ def get_bom_with_dependencies_valid() -> Bom:
130130
]
131131
)
132132

133+
133134
def get_bom_with_dependencies_hanging() -> Bom:
134-
"""A bom with a RootCOmponent. but all dependencies are not conected to the root. """
135-
c1 = get_component_setuptools_simple()
136-
c2 = get_component_toml_with_hashes_with_references()
137-
return Bom(
138-
metadata=BomMetaData(component=Component(name='rootComponent', type=ComponentType.APPLICATION)),
139-
components=[c1, c2], dependencies=[
140-
Dependency(ref=c1.bom_ref, dependencies=[
141-
Dependency(ref=c2.bom_ref)
135+
"""
136+
A bom with a RootComponent and components,
137+
but no dependencies are connected to RootComponent.
138+
"""
139+
c1 = get_component_setuptools_simple('setuptools')
140+
c2 = get_component_toml_with_hashes_with_references('toml')
141+
bom = Bom(
142+
serial_number=UUID(hex='12345678395b41f5a30f1234567890ab'),
143+
version=23,
144+
metadata=BomMetaData(
145+
component=Component(name='rootComponent', type=ComponentType.APPLICATION, bom_ref='root-component'),
146+
),
147+
components=[c1, c2],
148+
dependencies=[
149+
Dependency(c1.bom_ref, [
150+
Dependency(c2.bom_ref)
142151
]),
143-
Dependency(ref=c2.bom_ref)
152+
Dependency(c2.bom_ref)
144153
]
145154
)
155+
bom.metadata.tools.clear()
156+
bom.metadata.timestamp = datetime(
157+
year=2023, month=6, day=1,
158+
hour=3, minute=3, second=7, microsecond=0,
159+
tzinfo=timezone.utc)
160+
return bom
146161

147162

148163
def get_bom_with_dependencies_invalid() -> Bom:
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json",
3+
"bomFormat": "CycloneDX",
4+
"specVersion": "1.4",
5+
"serialNumber": "urn:uuid:12345678-395b-41f5-a30f-1234567890ab",
6+
"version": 23,
7+
"metadata": {
8+
"component": {
9+
"bom-ref": "root-component",
10+
"name": "rootComponent",
11+
"type": "application"
12+
},
13+
"timestamp": "2023-06-01T03:03:07+00:00"
14+
},
15+
"components": [
16+
{
17+
"author": "Test Author",
18+
"bom-ref": "setuptools",
19+
"licenses": [
20+
{
21+
"expression": "MIT License"
22+
}
23+
],
24+
"name": "setuptools",
25+
"purl": "pkg:pypi/setuptools@50.3.2?extension=tar.gz",
26+
"type": "library",
27+
"version": "50.3.2"
28+
},
29+
{
30+
"bom-ref": "toml",
31+
"externalReferences": [
32+
{
33+
"comment": "No comment",
34+
"hashes": [
35+
{
36+
"alg": "SHA-256",
37+
"content": "806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"
38+
}
39+
],
40+
"type": "distribution",
41+
"url": "https://cyclonedx.org"
42+
}
43+
],
44+
"hashes": [
45+
{
46+
"alg": "SHA-256",
47+
"content": "806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"
48+
}
49+
],
50+
"name": "toml",
51+
"purl": "pkg:pypi/toml@0.10.2?extension=tar.gz",
52+
"type": "library",
53+
"version": "0.10.2"
54+
}
55+
],
56+
"dependencies": [
57+
{
58+
"ref": "root-component"
59+
},
60+
{
61+
"ref": "setuptools",
62+
"dependsOn": [
63+
"toml"
64+
]
65+
},
66+
{
67+
"ref": "toml"
68+
}
69+
]
70+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<bom xmlns="http://cyclonedx.org/schema/bom/1.4"
3+
serialNumber="urn:uuid:12345678-395b-41f5-a30f-1234567890ab"
4+
version="23">
5+
<metadata>
6+
<timestamp>2023-06-01T03:03:07+00:00</timestamp>
7+
<component type="application" bom-ref="root-component">
8+
<name>rootComponent</name>
9+
</component>
10+
</metadata>
11+
<components>
12+
<component type="library" bom-ref="setuptools">
13+
<author>Test Author</author>
14+
<name>setuptools</name>
15+
<version>50.3.2</version>
16+
<licenses>
17+
<expression>MIT License</expression>
18+
</licenses>
19+
<purl>pkg:pypi/setuptools@50.3.2?extension=tar.gz</purl>
20+
</component>
21+
<component type="library" bom-ref="toml">
22+
<name>toml</name>
23+
<version>0.10.2</version>
24+
<hashes>
25+
<hash alg="SHA-256">806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b</hash>
26+
</hashes>
27+
<purl>pkg:pypi/toml@0.10.2?extension=tar.gz</purl>
28+
<externalReferences>
29+
<reference type="distribution">
30+
<url>https://cyclonedx.org</url>
31+
<comment>No comment</comment>
32+
<hashes>
33+
<hash alg="SHA-256">806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b</hash>
34+
</hashes>
35+
</reference>
36+
</externalReferences>
37+
</component>
38+
</components>
39+
<dependencies>
40+
<dependency ref="root-component"/>
41+
<dependency ref="setuptools">
42+
<dependency ref="toml"/>
43+
</dependency>
44+
<dependency ref="toml"/>
45+
</dependencies>
46+
</bom>
47+

tests/test_output_json.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
get_bom_with_component_setuptools_with_release_notes,
4343
get_bom_with_component_setuptools_with_vulnerability,
4444
get_bom_with_component_toml_1,
45+
get_bom_with_dependencies_hanging,
4546
get_bom_with_dependencies_valid,
4647
get_bom_with_external_references,
4748
get_bom_with_metadata_component_and_dependencies,
@@ -384,6 +385,13 @@ def test_bom_v1_2_issue_275_components(self) -> None:
384385
fixture='bom_issue_275_components.json'
385386
)
386387

388+
def test_bom_v1_4_warn_dependencies(self) -> None:
389+
with self.assertWarns(UserWarning):
390+
self._validate_json_bom(
391+
bom=get_bom_with_dependencies_hanging(), schema_version=SchemaVersion.V1_4,
392+
fixture='bom_with_dependencies_hanging.json'
393+
)
394+
387395
# region Helper methods
388396

389397
def _validate_json_bom(self, bom: Bom, schema_version: SchemaVersion, fixture: str) -> None:

tests/test_output_xml.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
get_bom_with_component_setuptools_with_release_notes,
4242
get_bom_with_component_setuptools_with_vulnerability,
4343
get_bom_with_component_toml_1,
44+
get_bom_with_dependencies_hanging,
4445
get_bom_with_dependencies_valid,
4546
get_bom_with_external_references,
4647
get_bom_with_metadata_component_and_dependencies,
@@ -514,6 +515,14 @@ def test_bom_v1_0_issue_275_components(self) -> None:
514515
fixture='bom_issue_275_components.xml'
515516
)
516517

518+
def test_bom_v1_4_warn_dependencies(self) -> None:
519+
with self.assertWarns(UserWarning):
520+
self._validate_xml_bom(
521+
bom=get_bom_with_dependencies_hanging(), schema_version=SchemaVersion.V1_4,
522+
fixture='bom_with_dependencies_hanging.xml'
523+
)
524+
525+
517526
# region Helper methods
518527

519528
def _validate_xml_bom(self, bom: Bom, schema_version: SchemaVersion, fixture: str) -> None:

0 commit comments

Comments
 (0)