|
20 | 20 | from enum import Enum |
21 | 21 | from unittest import TestCase |
22 | 22 |
|
| 23 | +from ddt import ddt, named_data |
| 24 | + |
23 | 25 | from cyclonedx._internal.compare import ComparableTuple |
24 | 26 | from cyclonedx.exception.model import ( |
25 | 27 | InvalidLocaleTypeException, |
@@ -139,8 +141,8 @@ def test_compare_last_item_missing(self) -> None: |
139 | 141 | self.assertNotEqual(tuple2, tuple1) |
140 | 142 |
|
141 | 143 | def test_compare_enum(self) -> None: |
142 | | - tuple1 = ComparableTuple((DummyStringEnum.FIRST, )) |
143 | | - tuple2 = ComparableTuple((DummyStringEnum.SECOND, )) |
| 144 | + tuple1 = ComparableTuple((DummyStringEnum.FIRST,)) |
| 145 | + tuple2 = ComparableTuple((DummyStringEnum.SECOND,)) |
144 | 146 | self.assertLess(tuple1, tuple2) |
145 | 147 | self.assertGreater(tuple2, tuple1) |
146 | 148 | self.assertNotEqual(tuple1, tuple2) |
@@ -239,19 +241,34 @@ def test_sort(self) -> None: |
239 | 241 | self.assertListEqual(sorted_refs, expected_refs) |
240 | 242 |
|
241 | 243 |
|
| 244 | +@ddt |
242 | 245 | class TestModelHashType(TestCase): |
243 | 246 |
|
244 | | - def test_hash_type_from_composite_str_1(self) -> None: |
245 | | - h = HashType.from_composite_str('sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b') |
246 | | - self.assertEqual(h.alg, HashAlgorithm.SHA_256) |
247 | | - self.assertEqual(h.content, '806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b') |
248 | | - |
249 | | - def test_hash_type_from_composite_str_2(self) -> None: |
250 | | - h = HashType.from_composite_str('md5:dc26cd71b80d6757139f38156a43c545') |
251 | | - self.assertEqual(h.alg, HashAlgorithm.MD5) |
252 | | - self.assertEqual(h.content, 'dc26cd71b80d6757139f38156a43c545') |
| 247 | + @named_data( |
| 248 | + ('sha256', 'sha256', '806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b', HashAlgorithm.SHA_256), |
| 249 | + ('MD5', 'MD5', 'dc26cd71b80d6757139f38156a43c545', HashAlgorithm.MD5), |
| 250 | + ) |
| 251 | + def test_hash_type_from_hashlib_alg(self, alg: str, content: str, e_alg: HashAlgorithm) -> None: |
| 252 | + h = HashType.from_hashlib_alg(alg, content) |
| 253 | + self.assertIs(h.alg, e_alg) |
| 254 | + self.assertEqual(h.content, content) |
253 | 255 |
|
254 | | - def test_hash_type_from_unknown(self) -> None: |
| 256 | + def test_hash_type_from_hashlib_alg_throws_on_unknown(self) -> None: |
| 257 | + with self.assertRaises(UnknownHashTypeException): |
| 258 | + HashType.from_hashlib_alg('unknown', 'dc26cd71b80d6757139f38156a43c545') |
| 259 | + |
| 260 | + @named_data( |
| 261 | + ('sha256', 'sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b', |
| 262 | + HashAlgorithm.SHA_256, '806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b'), |
| 263 | + ('MD5', 'MD5:dc26cd71b80d6757139f38156a43c545', |
| 264 | + HashAlgorithm.MD5, 'dc26cd71b80d6757139f38156a43c545'), |
| 265 | + ) |
| 266 | + def test_hash_type_from_composite_str(self, composite: str, e_alg: HashAlgorithm, e_content: str) -> None: |
| 267 | + h = HashType.from_composite_str(composite) |
| 268 | + self.assertIs(h.alg, e_alg) |
| 269 | + self.assertEqual(h.content, e_content) |
| 270 | + |
| 271 | + def test_hash_type_from_composite_str_throws_on_unknown(self) -> None: |
255 | 272 | with self.assertRaises(UnknownHashTypeException): |
256 | 273 | HashType.from_composite_str('unknown:dc26cd71b80d6757139f38156a43c545') |
257 | 274 |
|
|
0 commit comments