Skip to content

Commit e442965

Browse files
committed
add extra fields in OwnerMetadata
1 parent 419a23b commit e442965

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

packages/service-library/src/servicelib/celery/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class StorageOwnerMetadata(OwnerMetadata):
5050
5151
"""
5252

53+
model_config = ConfigDict(extra="allow", frozen=True)
5354
owner: Annotated[
5455
str,
5556
StringConstraints(min_length=1, pattern=r"^[a-z_-]+$"),

packages/service-library/tests/test_celery.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class _TestOwnerMetadata(OwnerMetadata):
2626

2727

2828
@pytest.fixture
29-
def owner_metadata() -> dict[str, str | int | bool | None | list[str]]:
29+
def test_owner_metadata() -> dict[str, str | int | bool | None | list[str]]:
3030
data = {
3131
"string_": _faker.word(),
3232
"int_": _faker.random_int(),
@@ -40,10 +40,10 @@ def owner_metadata() -> dict[str, str | int | bool | None | list[str]]:
4040

4141

4242
async def test_task_filter_serialization(
43-
owner_metadata: dict[str, str | int | bool | None | list[str]],
43+
test_owner_metadata: dict[str, str | int | bool | None | list[str]],
4444
):
45-
task_filter = _TestOwnerMetadata.model_validate(owner_metadata)
46-
assert task_filter.model_dump() == owner_metadata
45+
task_filter = _TestOwnerMetadata.model_validate(test_owner_metadata)
46+
assert task_filter.model_dump() == test_owner_metadata
4747

4848

4949
async def test_task_filter_sorting_key_not_serialized():
@@ -66,9 +66,9 @@ class _OwnerMetadata(OwnerMetadata):
6666

6767

6868
async def test_task_filter_task_uuid(
69-
owner_metadata: dict[str, str | int | bool | None | list[str]],
69+
test_owner_metadata: dict[str, str | int | bool | None | list[str]],
7070
):
71-
task_filter = _TestOwnerMetadata.model_validate(owner_metadata)
71+
task_filter = _TestOwnerMetadata.model_validate(test_owner_metadata)
7272
task_uuid = TaskUUID(_faker.uuid4())
7373
task_id = task_filter.model_dump_task_id(task_uuid)
7474
assert OwnerMetadata.get_task_uuid(task_id=task_id) == task_uuid
@@ -138,3 +138,13 @@ class MyNextFilter(OwnerMetadata):
138138

139139
with pytest.raises(pydantic.ValidationError):
140140
MyNextFilter(owner="wrong_owner")
141+
142+
143+
def test_owner_metadata_serialize_deserialize(test_owner_metadata):
144+
test_owner_metadata = _TestOwnerMetadata.model_validate(test_owner_metadata)
145+
data = test_owner_metadata.model_dump()
146+
deserialized_data = OwnerMetadata.model_validate(data)
147+
assert len(_TestOwnerMetadata.model_fields) == len(
148+
OwnerMetadata.model_fields
149+
) # ensure extra data is available in _TestOwnerMetadata -> needed for RPC
150+
assert deserialized_data.model_dump() == data

0 commit comments

Comments
 (0)