Skip to content

Commit c362254

Browse files
committed
use of UUID corrected within unit tests prior to completing JSON unit tests
Signed-off-by: Paul Horton <[email protected]>
1 parent 51a4198 commit c362254

24 files changed

+417
-335
lines changed

cyclonedx/model/component.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from enum import Enum
2222
from os.path import exists
2323
from typing import Any, Iterable, Optional, Set, Union
24+
from uuid import uuid4
2425

2526
# See https://github.com/package-url/packageurl-python/issues/65
2627
import serializable
@@ -767,7 +768,10 @@ def __init__(self, *, name: str, type_: ComponentType = ComponentType.LIBRARY,
767768
) -> None:
768769
self.type_ = type_
769770
self.mime_type = mime_type
770-
self._bom_ref = BomRef(value=bom_ref) if type(bom_ref) == str else bom_ref
771+
if type(bom_ref) == BomRef:
772+
self._bom_ref = bom_ref
773+
else:
774+
self._bom_ref = BomRef(value=str(bom_ref) if bom_ref else str(uuid4()))
771775
self.supplier = supplier
772776
self.author = author
773777
self.publisher = publisher
@@ -1269,7 +1273,7 @@ def __hash__(self) -> int:
12691273
))
12701274

12711275
def __repr__(self) -> str:
1272-
return f'<Component bom-ref={self.bom_ref.value}, group={self.group}, name={self.name}, ' \
1276+
return f'<Component bom-ref={self.bom_ref}, group={self.group}, name={self.name}, ' \
12731277
f'version={self.version}, type={self.type_}>'
12741278

12751279
# Deprecated methods

cyclonedx/model/dependency.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ def __eq__(self, other: object) -> bool:
7272

7373
def __lt__(self, other: Any) -> bool:
7474
if isinstance(other, Dependency):
75-
return ComparableTuple((self.ref.value, tuple(self.dependencies))) < ComparableTuple(
76-
(other.ref.value, tuple(other.dependencies)))
75+
return ComparableTuple((self.ref, tuple(self.dependencies))) < ComparableTuple(
76+
(other.ref, tuple(other.dependencies)))
7777
return NotImplemented
7878

7979
def __hash__(self) -> int:

cyclonedx/model/service.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import serializable
2121
from sortedcontainers import SortedSet
22+
from uuid import uuid4
2223

2324
from cyclonedx.serialization import BomRefHelper
2425

@@ -63,7 +64,10 @@ def __init__(self, *, name: str, bom_ref: Optional[Union[str, BomRef]] = None, p
6364
services: Optional[Iterable['Service']] = None,
6465
release_notes: Optional[ReleaseNotes] = None,
6566
) -> None:
66-
self._bom_ref = BomRef(value=bom_ref) if type(bom_ref) == str else bom_ref
67+
if type(bom_ref) == BomRef:
68+
self._bom_ref = bom_ref
69+
else:
70+
self._bom_ref = BomRef(value=str(bom_ref) if bom_ref else str(uuid4()))
6771
self.provider = provider
6872
self.group = group
6973
self.name = name
@@ -348,4 +352,4 @@ def __hash__(self) -> int:
348352
))
349353

350354
def __repr__(self) -> str:
351-
return f'<Service bom-ref={self.bom_ref.value}, group={self.group}, name={self.name}, version={self.version}>'
355+
return f'<Service bom-ref={self.bom_ref}, group={self.group}, name={self.name}, version={self.version}>'

cyclonedx/model/vulnerability.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from decimal import Decimal
2424
from enum import Enum
2525
from typing import Any, Iterable, Optional, Tuple, Union
26+
from uuid import uuid4
2627

2728
import serializable
2829
from sortedcontainers import SortedSet
@@ -835,7 +836,10 @@ def __init__(self, *, bom_ref: Optional[Union[str, BomRef]] = None, id_: Optiona
835836
# Deprecated Parameters kept for backwards compatibility
836837
source_name: Optional[str] = None, source_url: Optional[str] = None,
837838
recommendations: Optional[Iterable[str]] = None) -> None:
838-
self._bom_ref = BomRef(value=bom_ref) if type(bom_ref) == str else bom_ref
839+
if type(bom_ref) == BomRef:
840+
self._bom_ref = bom_ref
841+
else:
842+
self._bom_ref = BomRef(value=str(bom_ref) if bom_ref else str(uuid4()))
839843
self.id_ = id_
840844
self.source = source
841845
self.references = references or [] # type: ignore

tests/data.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from datetime import datetime, timezone
2222
from decimal import Decimal
2323
from typing import List, Optional, TypeVar
24+
from uuid import UUID
2425

2526
# See https://github.com/package-url/packageurl-python/issues/65
2627
from packageurl import PackageURL # type: ignore
@@ -85,10 +86,14 @@
8586
MOCK_UUID_4 = 'cd3e9c95-9d41-49e7-9924-8cf0465ae789'
8687
MOCK_UUID_5 = 'bb5911d6-1a1d-41c9-b6e0-46e848d16655'
8788
MOCK_UUID_6 = 'df70b5f1-8f53-47a4-be48-669ae78795e6'
88-
MOCK_BOM_UUID_1 = '3e671687-395b-41f5-a30f-a58921a69b79'
89+
MOCK_UUID_7 = UUID('6f266d1c-760f-4552-ae3b-41a9b74232fa')
90+
MOCK_UUID_8 = UUID('77d15ab9-5602-4cca-8ed2-59ae579aafd3')
91+
MOCK_UUID_9 = UUID('859ff614-35a7-4d37-803b-d89130cb2577')
92+
MOCK_UUID_10 = UUID('0afa65bc-4acd-428b-9e17-8e97b1969745')
93+
MOCK_BOM_UUID_1 = UUID('3e671687-395b-41f5-a30f-a58921a69b79')
8994

9095
TEST_UUIDS = [
91-
MOCK_UUID_1, MOCK_UUID_2, MOCK_UUID_3, MOCK_UUID_4, MOCK_UUID_5, MOCK_UUID_6
96+
UUID(MOCK_UUID_1), UUID(MOCK_UUID_2), UUID(MOCK_UUID_3), UUID(MOCK_UUID_4), UUID(MOCK_UUID_5), UUID(MOCK_UUID_6)
9297
]
9398

9499

tests/fixtures/json/1.2/bom_services_complex.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
],
1616
"component": {
1717
"type": "library",
18-
"bom-ref": "17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda",
18+
"bom-ref": "bb5911d6-1a1d-41c9-b6e0-46e848d16655",
1919
"name": "cyclonedx-python-lib",
2020
"version": "1.0.0"
2121
}
@@ -76,7 +76,7 @@
7676
],
7777
"dependencies": [
7878
{
79-
"ref": "17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda"
79+
"ref": "bb5911d6-1a1d-41c9-b6e0-46e848d16655"
8080
},
8181
{
8282
"ref": "my-specific-bom-ref-for-my-first-service"

tests/fixtures/json/1.2/bom_services_simple.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
],
1616
"component": {
1717
"type": "library",
18-
"bom-ref": "0b049d09-64c0-4490-a0f5-c84d9aacf857",
18+
"bom-ref": "df70b5f1-8f53-47a4-be48-669ae78795e6",
1919
"name": "cyclonedx-python-lib",
2020
"version": "1.0.0"
2121
}
@@ -38,7 +38,7 @@
3838
"ref": "be2c6502-7e9a-47db-9a66-e34f729810a3"
3939
},
4040
{
41-
"ref": "0b049d09-64c0-4490-a0f5-c84d9aacf857"
41+
"ref": "df70b5f1-8f53-47a4-be48-669ae78795e6"
4242
}
4343
]
4444
}

tests/fixtures/json/1.3/bom_services_complex.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
],
1616
"component": {
1717
"type": "library",
18-
"bom-ref": "17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda",
18+
"bom-ref": "bb5911d6-1a1d-41c9-b6e0-46e848d16655",
1919
"name": "cyclonedx-python-lib",
2020
"version": "1.0.0"
2121
}
@@ -98,7 +98,7 @@
9898
"ref": "be2c6502-7e9a-47db-9a66-e34f729810a3"
9999
},
100100
{
101-
"ref": "17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda"
101+
"ref": "bb5911d6-1a1d-41c9-b6e0-46e848d16655"
102102
}
103103
]
104104
}

tests/fixtures/json/1.3/bom_services_simple.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
],
1616
"component": {
1717
"type": "library",
18-
"bom-ref": "0b049d09-64c0-4490-a0f5-c84d9aacf857",
18+
"bom-ref": "df70b5f1-8f53-47a4-be48-669ae78795e6",
1919
"name": "cyclonedx-python-lib",
2020
"version": "1.0.0"
2121
}
@@ -38,7 +38,7 @@
3838
"ref": "be2c6502-7e9a-47db-9a66-e34f729810a3"
3939
},
4040
{
41-
"ref": "0b049d09-64c0-4490-a0f5-c84d9aacf857"
41+
"ref": "df70b5f1-8f53-47a4-be48-669ae78795e6"
4242
}
4343
]
4444
}

tests/fixtures/json/1.4/bom_services_complex.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
],
5050
"component": {
5151
"type": "library",
52-
"bom-ref": "17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda",
52+
"bom-ref": "bb5911d6-1a1d-41c9-b6e0-46e848d16655",
5353
"name": "cyclonedx-python-lib",
5454
"version": "1.0.0"
5555
}
@@ -185,7 +185,7 @@
185185
],
186186
"dependencies": [
187187
{
188-
"ref": "17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda"
188+
"ref": "bb5911d6-1a1d-41c9-b6e0-46e848d16655"
189189
},
190190
{
191191
"ref": "my-specific-bom-ref-for-my-first-service"

tests/fixtures/json/1.4/bom_services_simple.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
],
5050
"component": {
5151
"type": "library",
52-
"bom-ref": "0b049d09-64c0-4490-a0f5-c84d9aacf857",
52+
"bom-ref": "df70b5f1-8f53-47a4-be48-669ae78795e6",
5353
"name": "cyclonedx-python-lib",
5454
"version": "1.0.0"
5555
}
@@ -66,7 +66,7 @@
6666
],
6767
"dependencies": [
6868
{
69-
"ref": "0b049d09-64c0-4490-a0f5-c84d9aacf857"
69+
"ref": "df70b5f1-8f53-47a4-be48-669ae78795e6"
7070
},
7171
{
7272
"ref": "be2c6502-7e9a-47db-9a66-e34f729810a3"

tests/fixtures/xml/1.2/bom_services_complex.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<version>TESTING</version>
1111
</tool>
1212
</tools>
13-
<component type="library" bom-ref="17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda">
13+
<component type="library" bom-ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789">
1414
<name>cyclonedx-python-lib</name>
1515
<version>1.0.0</version>
1616
</component>
@@ -58,7 +58,7 @@
5858
</service>
5959
</services>
6060
<dependencies>
61-
<dependency ref="17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda"/>
61+
<dependency ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789"/>
6262
<dependency ref="be2c6502-7e9a-47db-9a66-e34f729810a3"/>
6363
<dependency ref="my-specific-bom-ref-for-my-first-service"/>
6464
</dependencies>

tests/fixtures/xml/1.2/bom_services_nested.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<version>TESTING</version>
1111
</tool>
1212
</tools>
13-
<component type="library" bom-ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789">
13+
<component type="library" bom-ref="df70b5f1-8f53-47a4-be48-669ae78795e6">
1414
<name>cyclonedx-python-lib</name>
1515
<version>1.0.0</version>
1616
</component>
@@ -106,7 +106,7 @@
106106
</service>
107107
</services>
108108
<dependencies>
109-
<dependency ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789"/>
109+
<dependency ref="df70b5f1-8f53-47a4-be48-669ae78795e6"/>
110110
<dependency ref="my-specific-bom-ref-for-my-first-service"/>
111111
<dependency ref="0b049d09-64c0-4490-a0f5-c84d9aacf857"/>
112112
</dependencies>

tests/fixtures/xml/1.3/bom_services_complex.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<version>TESTING</version>
1111
</tool>
1212
</tools>
13-
<component type="library" bom-ref="17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda">
13+
<component type="library" bom-ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789">
1414
<name>cyclonedx-python-lib</name>
1515
<version>1.0.0</version>
1616
</component>
@@ -65,7 +65,7 @@
6565
</service>
6666
</services>
6767
<dependencies>
68-
<dependency ref="17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda" />
68+
<dependency ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789" />
6969
<dependency ref="my-specific-bom-ref-for-my-first-service"/>
7070
<dependency ref="be2c6502-7e9a-47db-9a66-e34f729810a3"/>
7171
</dependencies>

tests/fixtures/xml/1.3/bom_services_nested.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<version>TESTING</version>
1111
</tool>
1212
</tools>
13-
<component type="library" bom-ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789">
13+
<component type="library" bom-ref="df70b5f1-8f53-47a4-be48-669ae78795e6">
1414
<name>cyclonedx-python-lib</name>
1515
<version>1.0.0</version>
1616
</component>
@@ -113,7 +113,7 @@
113113
</service>
114114
</services>
115115
<dependencies>
116-
<dependency ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789"/>
116+
<dependency ref="df70b5f1-8f53-47a4-be48-669ae78795e6"/>
117117
<dependency ref="my-specific-bom-ref-for-my-first-service"/>
118118
<dependency ref="0b049d09-64c0-4490-a0f5-c84d9aacf857"/>
119119
</dependencies>

tests/fixtures/xml/1.4/bom_services_complex.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</externalReferences>
3737
</tool>
3838
</tools>
39-
<component type="library" bom-ref="17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda">
39+
<component type="library" bom-ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789">
4040
<name>cyclonedx-python-lib</name>
4141
<version>1.0.0</version>
4242
</component>
@@ -135,7 +135,7 @@
135135
</service>
136136
</services>
137137
<dependencies>
138-
<dependency ref="17e3b199-dc0b-42ef-bfdd-1fa81a1e3eda"/>
138+
<dependency ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789"/>
139139
<dependency ref="my-specific-bom-ref-for-my-first-service"/>
140140
<dependency ref="be2c6502-7e9a-47db-9a66-e34f729810a3"/>
141141
</dependencies>

tests/fixtures/xml/1.4/bom_services_nested.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</externalReferences>
3737
</tool>
3838
</tools>
39-
<component type="library" bom-ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789">
39+
<component type="library" bom-ref="df70b5f1-8f53-47a4-be48-669ae78795e6">
4040
<name>cyclonedx-python-lib</name>
4141
<version>1.0.0</version>
4242
</component>
@@ -183,7 +183,7 @@
183183
</service>
184184
</services>
185185
<dependencies>
186-
<dependency ref="cd3e9c95-9d41-49e7-9924-8cf0465ae789"/>
186+
<dependency ref="df70b5f1-8f53-47a4-be48-669ae78795e6"/>
187187
<dependency ref="my-specific-bom-ref-for-my-first-service"/>
188188
<dependency ref="0b049d09-64c0-4490-a0f5-c84d9aacf857" />
189189
</dependencies>

0 commit comments

Comments
 (0)