Skip to content

Commit 5c9897e

Browse files
authored
Merge branch 'master' into issue-410
2 parents f975dbd + 6b77581 commit 5c9897e

File tree

7 files changed

+121
-86
lines changed

7 files changed

+121
-86
lines changed

json-logs/samples/scim/v1/Groups.json

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
{
2-
"totalResults": 12345,
3-
"itemsPerPage": 12345,
4-
"startIndex": 12345,
52
"schemas": [
63
""
74
],
5+
"id": "S00000000",
6+
"displayName": "",
7+
"members": [
8+
{
9+
"value": "W00000000",
10+
"display": ""
11+
}
12+
],
13+
"meta": {
14+
"created": "",
15+
"location": "https://www.example.com/"
16+
},
17+
"totalResults": 12345,
18+
"itemsPerPage": 12345,
19+
"startIndex": 12345,
820
"Resources": [
921
{
1022
"schemas": [
@@ -57,9 +69,5 @@
5769
"location": "https://www.example.com/"
5870
}
5971
}
60-
],
61-
"Errors": {
62-
"description": "",
63-
"code": 12345
64-
}
72+
]
6573
}

json-logs/samples/scim/v1/Users.json

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,42 @@
11
{
2-
"totalResults": 12345,
3-
"itemsPerPage": 12345,
4-
"startIndex": 12345,
52
"schemas": [
63
""
74
],
5+
"id": "W00000000",
6+
"externalId": "",
7+
"meta": {
8+
"created": "",
9+
"location": "https://www.example.com/"
10+
},
11+
"userName": "",
12+
"nickName": "",
13+
"name": {
14+
"givenName": "",
15+
"familyName": ""
16+
},
17+
"displayName": "",
18+
"profileUrl": "https://www.example.com/",
19+
"title": "",
20+
"timezone": "",
21+
"active": false,
22+
"emails": [
23+
{
24+
"value": "",
25+
"primary": false
26+
}
27+
],
28+
"photos": [
29+
{
30+
"value": "https://www.example.com/",
31+
"type": ""
32+
}
33+
],
34+
"groups": [
35+
""
36+
],
37+
"totalResults": 12345,
38+
"itemsPerPage": 12345,
39+
"startIndex": 12345,
840
"Resources": [
941
{
1042
"schemas": [
@@ -42,16 +74,8 @@
4274
],
4375
"groups": [
4476
{
45-
"schemas": [
46-
"urn:scim:schemas:core:1.0",
47-
"urn:scim:schemas:extension:enterprise:1.0"
48-
],
49-
"id": "",
50-
"displayName": "",
51-
"meta": {
52-
"created": "",
53-
"location": ""
54-
}
77+
"value": "",
78+
"display": ""
5579
}
5680
],
5781
"addresses": [
@@ -82,41 +106,5 @@
82106
"manager": {}
83107
}
84108
}
85-
],
86-
"Errors": {
87-
"description": "",
88-
"code": 12345
89-
},
90-
"id": "W00000000",
91-
"externalId": "",
92-
"meta": {
93-
"created": "",
94-
"location": "https://www.example.com/"
95-
},
96-
"userName": "",
97-
"nickName": "",
98-
"name": {
99-
"givenName": "",
100-
"familyName": ""
101-
},
102-
"displayName": "",
103-
"profileUrl": "https://www.example.com/",
104-
"title": "",
105-
"timezone": "",
106-
"active": false,
107-
"emails": [
108-
{
109-
"value": "",
110-
"primary": false
111-
}
112-
],
113-
"photos": [
114-
{
115-
"value": "https://www.example.com/",
116-
"type": ""
117-
}
118-
],
119-
"groups": [
120-
""
121109
]
122110
}

json-logs/samples/scim/v1/Users/00000000000.json

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,8 @@
3434
],
3535
"groups": [
3636
{
37-
"schemas": [
38-
"urn:scim:schemas:core:1.0",
39-
"urn:scim:schemas:extension:enterprise:1.0"
40-
],
41-
"id": "",
42-
"displayName": "",
43-
"meta": {
44-
"created": "",
45-
"location": ""
46-
}
37+
"value": "",
38+
"display": ""
4739
}
4840
],
4941
"addresses": [

slack-api-client/src/main/java/com/slack/api/scim/model/Group.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@ public static class Meta {
2424
@Data
2525
public static class Member {
2626
private String value;
27+
private String display;
2728
}
2829
}

slack-api-client/src/main/java/com/slack/api/scim/model/User.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,10 @@ public static class Manager {
105105
}
106106
}
107107

108+
@Data
109+
public static class Group {
110+
private String value;
111+
private String display;
112+
}
113+
108114
}

slack-api-client/src/test/java/test_with_remote_apis/scim/ApiTest.java

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ public static void tearDown() throws InterruptedException {
3030

3131
String orgAdminToken = System.getenv(Constants.SLACK_SDK_TEST_GRID_ORG_ADMIN_USER_TOKEN);
3232

33+
private UsersCreateResponse createNewUser() throws IOException, SCIMApiException {
34+
String userName = "user" + System.currentTimeMillis();
35+
User newUser = new User();
36+
newUser.setName(new User.Name());
37+
newUser.getName().setGivenName("Kazuhiro");
38+
newUser.getName().setFamilyName("Sera");
39+
newUser.setUserName(userName);
40+
User.Email email = new User.Email();
41+
email.setValue("seratch+" + System.currentTimeMillis() + "@gmail.com");
42+
newUser.setEmails(Arrays.asList(email));
43+
return slack.scim(orgAdminToken).createUser(req -> req.user(newUser));
44+
}
45+
3346
@Test
3447
public void getServiceProviderConfigs() throws IOException, SCIMApiException {
3548
if (orgAdminToken != null) {
@@ -90,16 +103,7 @@ public void readUser_dummy() throws IOException {
90103
@Test
91104
public void createAndDeleteUser() throws Exception {
92105
if (orgAdminToken != null) {
93-
String userName = "user" + System.currentTimeMillis();
94-
User newUser = new User();
95-
newUser.setName(new User.Name());
96-
newUser.getName().setGivenName("Kazuhiro");
97-
newUser.getName().setFamilyName("Sera");
98-
newUser.setUserName(userName);
99-
User.Email email = new User.Email();
100-
email.setValue("seratch+" + System.currentTimeMillis() + "@gmail.com");
101-
newUser.setEmails(Arrays.asList(email));
102-
UsersCreateResponse creation = slack.scim(orgAdminToken).createUser(req -> req.user(newUser));
106+
UsersCreateResponse creation = createNewUser();
103107
assertThat(creation.getId(), is(notNullValue()));
104108

105109
UsersReadResponse readResp = slack.scim(orgAdminToken).readUser(req -> req.id(creation.getId()));
@@ -109,6 +113,7 @@ public void createAndDeleteUser() throws Exception {
109113
try {
110114
// https://api.slack.com/scim#filter
111115
// filter query matching the created data
116+
String userName = creation.getUserName();
112117
UsersSearchResponse searchResp = slack.scim(orgAdminToken).searchUsers(req -> req.count(1).filter("userName eq \"" + userName + "\""));
113118
assertThat(searchResp.getItemsPerPage(), is(1));
114119
assertThat(searchResp.getResources().size(), is(1));
@@ -167,7 +172,15 @@ public void groups() throws IOException, SCIMApiException {
167172
if (groups.getResources().size() == 0) {
168173
Group newGroup = new Group();
169174
newGroup.setDisplayName("Test Group" + System.currentTimeMillis());
170-
slack.scim(orgAdminToken).createGroup(req -> req.group(newGroup));
175+
176+
Group.Member member = new Group.Member();
177+
UsersCreateResponse newUser = createNewUser();
178+
assertThat(newUser.getId(), is(notNullValue()));
179+
member.setValue(newUser.getId());
180+
newGroup.setMembers(Arrays.asList(member));
181+
182+
GroupsCreateResponse createdGroup = slack.scim(orgAdminToken).createGroup(req -> req.group(newGroup));
183+
assertThat(createdGroup.getMembers().size(), is(1));
171184
}
172185

173186
// pagination
@@ -192,6 +205,35 @@ public void groups() throws IOException, SCIMApiException {
192205
}
193206
}
194207

208+
@Test
209+
public void groupAndUsers() throws IOException, SCIMApiException {
210+
if (orgAdminToken != null) {
211+
Group newGroup = new Group();
212+
newGroup.setDisplayName("Test Group" + System.currentTimeMillis());
213+
UsersCreateResponse newUser = createNewUser();
214+
assertThat(newUser.getId(), is(notNullValue()));
215+
try {
216+
Group.Member member = new Group.Member();
217+
member.setValue(newUser.getId());
218+
newGroup.setMembers(Arrays.asList(member));
219+
GroupsCreateResponse createdGroup = slack.scim(orgAdminToken).createGroup(req -> req.group(newGroup));
220+
assertThat(createdGroup.getMembers().size(), is(1));
221+
try {
222+
String userName = newUser.getUserName();
223+
UsersSearchResponse searchResp = slack.scim(orgAdminToken).searchUsers(req -> req.count(1).filter("userName eq \"" + userName + "\""));
224+
assertThat(searchResp.getResources().size(), is(1));
225+
assertThat(searchResp.getResources().get(0).getGroups().size(), is(1));
226+
} finally {
227+
GroupsDeleteResponse groupDeletion = slack.scim(orgAdminToken).deleteGroup(req -> req.id(createdGroup.getId()));
228+
assertThat(groupDeletion, is(nullValue()));
229+
}
230+
} finally {
231+
UsersDeleteResponse deletion = slack.scim(orgAdminToken).deleteUser(req -> req.id(newUser.getId()));
232+
assertThat(deletion, is(nullValue()));
233+
}
234+
}
235+
}
236+
195237
@Test
196238
public void groups_dummy() throws IOException {
197239
try {

slack-api-client/src/test/java/util/sample_json_generation/JsonDataRecorder.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,12 @@ private void initializeSCIMUser(JsonObject resourceObj) {
197197
User.Role sampleObject = ObjectInitializer.initProperties(new User.Role());
198198
objects.add(GsonFactory.createCamelCase(config).toJsonTree(sampleObject));
199199
}
200-
if (resourceObj.get("groups") == null) {
201-
resourceObj.add("groups", new JsonArray());
202-
}
203-
{
204-
JsonArray objects = resourceObj.get("groups").getAsJsonArray();
205-
clearAllElements(objects);
206-
Group sampleObject = ObjectInitializer.initProperties(new Group());
207-
objects.add(GsonFactory.createCamelCase(config).toJsonTree(sampleObject));
200+
if (resourceObj.get("groups") != null) {
201+
JsonArray groups = new JsonArray();
202+
User.Group group = new User.Group();
203+
ObjectInitializer.initProperties(group);
204+
groups.add(GsonFactory.createCamelCase(config).toJsonTree(group));
205+
resourceObj.add("groups", groups);
208206
}
209207
}
210208

0 commit comments

Comments
 (0)