diff --git a/compute_sdk/tests/unit/test_serialization.py b/compute_sdk/tests/unit/test_serialization.py index 7f2cd187c..f9e356bdc 100644 --- a/compute_sdk/tests/unit/test_serialization.py +++ b/compute_sdk/tests/unit/test_serialization.py @@ -623,3 +623,55 @@ def deserialize(self, payload): assert "is not a known serialization strategy" in str(e) SerializationStrategy._CACHE.pop(NewStrategy.identifier) + + +@pytest.mark.parametrize("id", ["", "1", "12", "1234"]) +def test_init_subclass_requires_correct_length(id): + with pytest.raises(ValueError) as pyt_exc: + + class NewStrategy(SerializationStrategy): + identifier = id + for_code = True + + def serialize(self, data): + pass + + def deserialize(self, payload): + pass + + assert "must be 3 characters long" in str(pyt_exc.value) + + +def test_init_subclass_requires_newline(): + with pytest.raises(ValueError) as pyt_exc: + + class NewStrategy(SerializationStrategy): + identifier = "123" + for_code = True + + def serialize(self, data): + pass + + def deserialize(self, payload): + pass + + assert "must end with a newline character" in str(pyt_exc.value) + + +@pytest.mark.parametrize( + "id", [s.identifier for s in SerializationStrategy._CACHE.values()] +) +def test_init_subclass_requires_unique_identifier(id): + with pytest.raises(ValueError) as pyt_exc: + + class NewStrategy(SerializationStrategy): + identifier = id + for_code = True + + def serialize(self, data): + pass + + def deserialize(self, payload): + pass + + assert f"{id!r} is already used by" in str(pyt_exc.value)