Skip to content
This repository was archived by the owner on Feb 18, 2024. It is now read-only.

Commit cec15eb

Browse files
authored
Add support for emails
1 parent 531d761 commit cec15eb

File tree

3 files changed

+31
-33
lines changed

3 files changed

+31
-33
lines changed

Gatekeeper.SCIM.Client.Tests.Integration/ClientTest.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public async Task IntegrationTest()
3333
ExternalId = userId.ToString(),
3434
UserName = "Test1",
3535
Active = false,
36+
Emails = new List<User.EmailAttribute>{
37+
new User.EmailAttribute { Value = "test1@example.com" },
38+
new User.EmailAttribute { Value = "test2@example.com" },
39+
},
3640
};
3741
CreateAction<User> createUserAction = new CreateAction<User>(user);
3842
CreateResult<User> createUserResult = await client.PerformAction<CreateResult<User>>(createUserAction);
@@ -41,7 +45,11 @@ public async Task IntegrationTest()
4145
.OfLikeness<User>()
4246
.Without(u => u.Id)
4347
.Without(u => u.Meta)
48+
.Without(u => u.Emails)
4449
.ShouldEqual(createUserResult.Resource);
50+
user.Emails.AsSource()
51+
.OfLikeness<List<User.EmailAttribute>>()
52+
.ShouldEqual(createUserResult.Resource.Emails);
4553
user.Id = createUserResult.Resource.Id;
4654

4755
// A lookup now should show the user
@@ -51,7 +59,11 @@ public async Task IntegrationTest()
5159
user.AsSource()
5260
.OfLikeness<User>()
5361
.Without(u => u.Meta)
62+
.Without(u => u.Emails)
5463
.ShouldEqual(secondGetUsersRes.Users.First());
64+
user.Emails.AsSource()
65+
.OfLikeness<List<User.EmailAttribute>>()
66+
.ShouldEqual(secondGetUsersRes.Users.First().Emails);
5567
Assert.Equal(StateEnum.Success, secondGetUsersRes.ResultStatus);
5668

5769
// Assign the ID from the SCIM system
@@ -67,7 +79,11 @@ public async Task IntegrationTest()
6779
user.AsSource()
6880
.OfLikeness<User>()
6981
.Without(u => u.Meta)
82+
.Without(u => u.Emails)
7083
.ShouldEqual(updateUserResult.User);
84+
user.Emails.AsSource()
85+
.OfLikeness<List<User.EmailAttribute>>()
86+
.ShouldEqual(updateUserResult.User.Emails);
7187

7288
// Create a group with our only user inside
7389
Group group = new Group
@@ -102,7 +118,11 @@ public async Task IntegrationTest()
102118
user.AsSource()
103119
.OfLikeness<User>()
104120
.Without(g => g.Meta)
121+
.Without(u => u.Emails)
105122
.ShouldEqual(getUserResult.Resource);
123+
user.Emails.AsSource()
124+
.OfLikeness<List<User.EmailAttribute>>()
125+
.ShouldEqual(getUserResult.Resource.Emails);
106126

107127
// Single querying the group should work
108128
GetAction<Group> getGroupAction = new GetAction<Group>(createGroupResult.Resource.Id);

Gatekeeper.SCIM.Client/Gatekeeper.SCIM.Client.csproj

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
<PropertyGroup>
44
<TargetFramework>net5.0</TargetFramework>
55
<Nullable>enable</Nullable>
6+
<IncludeSymbols>true</IncludeSymbols>
7+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
68

7-
<Version>0.0.1-alpha</Version>
9+
<Version>0.0.2-alpha</Version>
810
<Authors>Lukas Reschke</Authors>
911
<Company>Gatekeeper</Company>
1012
<Description>
@@ -16,7 +18,7 @@
1618
<PackageProjectUrl>https://github.com/GetGatekeeper/SCIM.Client</PackageProjectUrl>
1719
<RepositoryUrl>https://github.com/GetGatekeeper/SCIM.Client.git</RepositoryUrl>
1820
<PackageReleaseNotes>
19-
Initial release.
21+
Add support for email attribute.
2022
</PackageReleaseNotes>
2123
<RepositoryType>git</RepositoryType>
2224
<Title>Gatekeeper.SCIM.Client</Title>

Gatekeeper.SCIM.Client/Schema/Core/2.0/User.cs

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ public class User : ISchema, IResource
1010
[JsonPropertyName("userName")]
1111
public string UserName { get; set; } = null!;
1212

13-
[JsonPropertyName("name")]
14-
public INameComponent? Name { get; set; }
15-
1613
[JsonPropertyName("displayName")]
1714
public string? DisplayName { get; set; }
1815

@@ -58,40 +55,19 @@ public class User : ISchema, IResource
5855
[JsonPropertyName("meta")]
5956
public IResource.MetaResourceData? Meta { get; set; }
6057

61-
public class GroupMembership
58+
[JsonPropertyName("emails")]
59+
public List<EmailAttribute>? Emails { get; set; }
60+
61+
public class EmailAttribute
6262
{
6363
[JsonPropertyName("value")]
6464
public string? Value { get; set; }
6565
}
6666

67-
public interface INameComponent
68-
{
69-
string value { get; set; }
70-
}
71-
72-
class FormattedName : INameComponent
73-
{
74-
public string value { get; set; }
75-
}
76-
77-
class FamilyName : INameComponent
78-
{
79-
public string value { get; set; }
80-
}
81-
82-
class GivenName : INameComponent
83-
{
84-
public string value { get; set; }
85-
}
86-
87-
class HonoricPrefix : INameComponent
88-
{
89-
public string value { get; set; }
90-
}
91-
92-
class HonoricSuffix : INameComponent
67+
public class GroupMembership
9368
{
94-
public string value { get; set; }
69+
[JsonPropertyName("value")]
70+
public string? Value { get; set; }
9571
}
9672
}
9773
}

0 commit comments

Comments
 (0)