|
10 | 10 | from scim2_models.messages.patch_op import PatchOp |
11 | 11 | from scim2_models.reference import Reference |
12 | 12 | from scim2_models.resources.enterprise_user import EnterpriseUser |
| 13 | +from scim2_models.resources.group import Group |
| 14 | +from scim2_models.resources.group import GroupMember |
13 | 15 | from scim2_models.resources.resource import Extension |
14 | 16 | from scim2_models.resources.resource import Meta |
15 | 17 | from scim2_models.resources.resource import Resource |
@@ -354,3 +356,36 @@ def test_patch_op_preserves_case_in_sub_value_fields(): |
354 | 356 | value = result["Operations"][0]["value"] |
355 | 357 |
|
356 | 358 | assert value["name"]["givenName"] == "John" |
| 359 | + |
| 360 | + |
| 361 | +def test_complex_attribute_inclusion_includes_sub_attributes(): |
| 362 | + """When a complex attribute is requested, its sub-attributes should be included.""" |
| 363 | + user = User( |
| 364 | + user_name="bjensen", |
| 365 | + name={"given_name": "Barbara", "family_name": "Jensen"}, |
| 366 | + ) |
| 367 | + result = user.model_dump( |
| 368 | + scim_ctx=Context.RESOURCE_QUERY_RESPONSE, |
| 369 | + attributes=["name"], |
| 370 | + ) |
| 371 | + assert result["name"] == {"givenName": "Barbara", "familyName": "Jensen"} |
| 372 | + |
| 373 | + |
| 374 | +def test_multivalued_complex_attribute_inclusion_includes_sub_attributes(): |
| 375 | + """When a multi-valued complex attribute is requested, its sub-attributes should be included.""" |
| 376 | + group = Group( |
| 377 | + id="group-123", |
| 378 | + display_name="Engineering", |
| 379 | + members=[ |
| 380 | + GroupMember(value="user-1", type="User"), |
| 381 | + GroupMember(value="user-2", type="User"), |
| 382 | + ], |
| 383 | + ) |
| 384 | + result = group.model_dump( |
| 385 | + scim_ctx=Context.RESOURCE_QUERY_RESPONSE, |
| 386 | + attributes=["members"], |
| 387 | + ) |
| 388 | + assert result["members"] == [ |
| 389 | + {"value": "user-1", "type": "User"}, |
| 390 | + {"value": "user-2", "type": "User"}, |
| 391 | + ] |
0 commit comments