|
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