Skip to content

Commit f439b65

Browse files
Ticket #47 : Fix duplicate nested attributes
1 parent aaf80d8 commit f439b65

File tree

6 files changed

+65
-48
lines changed

6 files changed

+65
-48
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<VersionPrefix>1.1.5</VersionPrefix>
3+
<VersionPrefix>1.1.6</VersionPrefix>
44
<Authors>SimpleIdServer</Authors>
55
<Owners>SimpleIdServer</Owners>
66
</PropertyGroup>

src/Scim/SimpleIdServer.Scim.Persistence.EF/Extensions/MappingExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public static SCIMRepresentation ToDomain(this SCIMRepresentationModel represent
148148
ResourceType = representation.ResourceType,
149149
Id = representation.Id,
150150
Schemas = representation.Schemas.Select(s => ToDomain(s.Schema)).ToList(),
151-
Attributes = representation.Attributes.Select(s =>
151+
Attributes = representation.Attributes.Where(_ => _.Parent == null).Select(s =>
152152
{
153153
return ToDomain(s);
154154
}).ToList()

src/Scim/SimpleIdServer.Scim/Commands/Handlers/ReplaceRepresentationCommandHandler.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public async Task<SCIMRepresentation> Handle(ReplaceRepresentationCommand replac
6767
}
6868
}
6969

70+
existingRepresentation.SetExternalId(updatedRepresentation.ExternalId);
7071
existingRepresentation.SetUpdated(DateTime.UtcNow);
7172
using (var transaction = await _scimRepresentationCommandRepository.StartTransaction())
7273
{

src/Scim/SimpleIdServer.Scim/Domain/SCIMRepresentation.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ public void SetCreated(DateTime created)
7070
Created = created;
7171
}
7272

73+
public void SetExternalId(string externalId)
74+
{
75+
ExternalId = externalId;
76+
}
77+
7378
public void SetUpdated(DateTime lastModified)
7479
{
7580
LastModified = lastModified;

tests/SimpleIdServer.Scim.Host.Acceptance.Tests/Features/Users.feature

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,16 @@ Scenario: Check user can be updated (HTTP PUT)
195195
| name | { "formatted" : "formatted", "familyName": "familyName", "givenName": "givenName" } |
196196
| phones | [ { "phoneNumber": "01", "type": "mobile" }, { "phoneNumber": "02", "type": "home" } ] |
197197
| employeeNumber | number |
198+
| externalId | ext |
198199

199200
And extract JSON from body
200201
And extract 'id' from JSON body
201202
And execute HTTP PUT JSON request 'http://localhost/Users/$id$'
202-
| Key | Value |
203-
| schemas | [ "urn:ietf:params:scim:schemas:core:2.0:User" ] |
204-
| name | { "formatted" : "newFormatted", "familyName": "newFamilyName", "givenName": "newGivenName" } |
205-
| id | $id$ |
203+
| Key | Value |
204+
| schemas | [ "urn:ietf:params:scim:schemas:core:2.0:User" ] |
205+
| name | { "formatted" : "newFormatted", "familyName": "newFamilyName", "givenName": "newGivenName" } |
206+
| id | $id$ |
207+
| externalId | newext |
206208

207209
And execute HTTP GET request 'http://localhost/Users/$id$'
208210
And extract JSON from body
@@ -212,6 +214,7 @@ Scenario: Check user can be updated (HTTP PUT)
212214
Then HTTP HEADER contains 'ETag'
213215
Then JSON 'schemas[0]'='urn:ietf:params:scim:schemas:core:2.0:User'
214216
Then JSON 'userName'='bjen'
217+
Then JSON 'externalId'='newext'
215218
Then JSON 'name.formatted'='newFormatted'
216219
Then JSON 'name.familyName'='newFamilyName'
217220
Then JSON 'name.givenName'='newGivenName'

tests/SimpleIdServer.Scim.Host.Acceptance.Tests/Features/Users.feature.cs

Lines changed: 50 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)