|
8 | 8 | from scim2_models import Group |
9 | 9 | from scim2_models import Mutability |
10 | 10 | from scim2_models import PhoneNumber |
| 11 | +from scim2_models import Required |
11 | 12 | from scim2_models import User |
12 | 13 | from scim2_models.attributes import ComplexAttribute |
13 | 14 | from scim2_models.resources.resource import Resource |
@@ -265,3 +266,23 @@ class TestResource(Resource): |
265 | 266 | assert filled_resource.test_attr.readonly_field is None, ( |
266 | 267 | f"readonly_field should be None but got {filled_resource.test_attr.readonly_field}" |
267 | 268 | ) |
| 269 | + |
| 270 | + |
| 271 | +def test_resource_manager_complex_attribute_required_subfields(testing_context): |
| 272 | + """Test that ResourceManager doesn't collect URNs for required sub-attributes of complex fields.""" |
| 273 | + |
| 274 | + class TestName(ComplexAttribute): |
| 275 | + formatted: Annotated[str | None, Required.true] = None |
| 276 | + given_name: str | None = None |
| 277 | + |
| 278 | + class TestUser(Resource): |
| 279 | + schemas: Annotated[list[str], Required.true] = ["urn:test:TestUser"] |
| 280 | + name: Annotated[TestName | None, Required.true] = None |
| 281 | + |
| 282 | + obj = TestUser() |
| 283 | + urns = ["urn:test:TestUser:name"] |
| 284 | + filled = fill_with_random_values(testing_context, obj, urns) |
| 285 | + |
| 286 | + assert filled.name is not None |
| 287 | + assert filled.name.formatted is not None |
| 288 | + assert filled.name.given_name is None |
0 commit comments