Skip to content

Commit 87e855c

Browse files
committed
add task_owner as required field in TaskFilter
1 parent 0a583a5 commit 87e855c

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class MyTaskFilter(TaskFilter):
4444
"""
4545

4646
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
47+
task_owner: Annotated[str, StringConstraints(min_length=1, pattern=r"^[a-z_-]+$")]
4748

4849
@model_validator(mode="after")
4950
def _check_valid_filters(self) -> Self:

packages/service-library/tests/test_celery.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
from typing import Annotated
2+
13
# pylint: disable=redefined-outer-name
24
# pylint: disable=protected-access
35
import pydantic
46
import pytest
57
from faker import Faker
6-
from pydantic import BaseModel
8+
from pydantic import BaseModel, StringConstraints
79
from servicelib.celery.models import TaskFilter, TaskUUID
810

911
_faker = Faker()
@@ -80,3 +82,22 @@ class MyModel(BaseModel):
8082
def test_task_filter_validator_raises_on_forbidden_chars(bad_data):
8183
with pytest.raises(pydantic.ValidationError):
8284
TaskFilter.model_validate(bad_data)
85+
86+
87+
async def test_task_owner():
88+
class MyFilter(TaskFilter):
89+
extra_field: str
90+
91+
with pytest.raises(pydantic.ValidationError):
92+
MyFilter(task_owner="", extra_field="value")
93+
94+
with pytest.raises(pydantic.ValidationError):
95+
MyFilter(task_owner="UPPER_CASE", extra_field="value")
96+
97+
class MyNextFilter(TaskFilter):
98+
task_owner: Annotated[
99+
str, StringConstraints(strip_whitespace=True, pattern=r"^the_task_owner$")
100+
]
101+
102+
with pytest.raises(pydantic.ValidationError):
103+
MyNextFilter(task_owner="wrong_owner")

0 commit comments

Comments
 (0)