Skip to content

Commit a1b7ffc

Browse files
authored
[SDK-4654] support organization get member roles (#574)
1 parent c930419 commit a1b7ffc

4 files changed

Lines changed: 82 additions & 3 deletions

File tree

src/main/java/com/auth0/client/mgmt/OrganizationsEntity.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,22 @@ public Request<Void> delete(String orgId) {
184184
* @see <a href="https://auth0.com/docs/api/management/v2#!/Organizations/get_members">https://auth0.com/docs/api/management/v2#!/Organizations/get_members</a>
185185
*/
186186
public Request<MembersPage> getMembers(String orgId, PageFilter filter) {
187+
return getMembers(orgId, filter, null);
188+
}
189+
190+
/**
191+
* Get the members of an organization. A token with {@code read:organization_members} scope is required.
192+
* <br/>
193+
* Member roles are not sent by default. Supply a {@linkplain FieldsFilter} that includes "roles" (and {@code includeFields = true} to retrieve the roles assigned to each listed member. To include the roles in the response, you must include the {@code read:organization_member_roles} scope in the token.
194+
*
195+
* @param orgId the ID of the organization
196+
* @param pageFilter an optional pagination filter
197+
* @param fieldsFilter an optional fields filter. If null, all fields (except roles) are returned.
198+
* @return a Request to execute
199+
*
200+
* @see <a href="https://auth0.com/docs/api/management/v2#!/Organizations/get_members">https://auth0.com/docs/api/management/v2#!/Organizations/get_members</a>
201+
*/
202+
public Request<MembersPage> getMembers(String orgId, PageFilter pageFilter, FieldsFilter fieldsFilter) {
187203
Asserts.assertNotNull(orgId, "organization ID");
188204

189205
HttpUrl.Builder builder = baseUrl
@@ -192,7 +208,8 @@ public Request<MembersPage> getMembers(String orgId, PageFilter filter) {
192208
.addPathSegment(orgId)
193209
.addPathSegment("members");
194210

195-
applyFilter(filter, builder);
211+
applyFilter(pageFilter, builder);
212+
applyFilter(fieldsFilter, builder);
196213

197214
String url = builder.build().toString();
198215
return new BaseRequest<>(client, tokenProvider, url, HttpMethod.GET, new TypeReference<MembersPage>() {

src/main/java/com/auth0/json/mgmt/organizations/Member.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.auth0.json.mgmt.organizations;
22

3+
import com.auth0.json.mgmt.roles.Role;
34
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
45
import com.fasterxml.jackson.annotation.JsonInclude;
56
import com.fasterxml.jackson.annotation.JsonProperty;
67

8+
import java.util.List;
9+
710
/**
811
* Represents the member of an organization.
912
* @see com.auth0.client.mgmt.OrganizationsEntity
@@ -20,6 +23,8 @@ public class Member {
2023
private String picture;
2124
@JsonProperty("name")
2225
private String name;
26+
@JsonProperty("roles")
27+
private List<Role> roles;
2328

2429
/**
2530
* @return the user ID of this Member.
@@ -75,4 +80,8 @@ public String getName() {
7580
public void setName(String name) {
7681
this.name = name;
7782
}
83+
84+
public List<Role> getRoles() {
85+
return roles;
86+
}
7887
}

src/test/java/com/auth0/client/mgmt/OrganizationEntityTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,27 @@ public void shouldListOrgMembersWithoutFilter() throws Exception {
297297
assertThat(response.getItems(), hasSize(3));
298298
}
299299

300+
@Test
301+
public void shouldListOrgMembersWithFieldsFilter() throws Exception {
302+
FieldsFilter fieldsFilter = new FieldsFilter().withFields("name,email,user_id,roles", true);
303+
304+
Request<MembersPage> request = api.organizations().getMembers("org_abc", null, fieldsFilter);
305+
assertThat(request, is(notNullValue()));
306+
307+
server.jsonResponse(MockServer.ORGANIZATION_MEMBERS_LIST, 200);
308+
MembersPage response = request.execute().getBody();
309+
RecordedRequest recordedRequest = server.takeRequest();
310+
311+
assertThat(recordedRequest, hasMethodAndPath(HttpMethod.GET, "/api/v2/organizations/org_abc/members"));
312+
assertThat(recordedRequest, hasHeader("Content-Type", "application/json"));
313+
assertThat(recordedRequest, hasHeader("Authorization", "Bearer apiToken"));
314+
assertThat(recordedRequest, hasQueryParameter("fields", "name,email,user_id,roles"));
315+
assertThat(recordedRequest, hasQueryParameter("include_fields", "true"));
316+
317+
assertThat(response, is(notNullValue()));
318+
assertThat(response.getItems(), hasSize(3));
319+
}
320+
300321
@Test
301322
public void shouldListOrgMembersWithPage() throws Exception {
302323
PageFilter filter = new PageFilter().withPage(0, 20);
@@ -317,6 +338,30 @@ public void shouldListOrgMembersWithPage() throws Exception {
317338
assertThat(response.getItems(), hasSize(3));
318339
}
319340

341+
@Test
342+
public void shouldListOrgMembersWithFieldsFilterAndPageFilter() throws Exception {
343+
PageFilter pageFilter = new PageFilter().withPage(0, 20);
344+
FieldsFilter fieldsFilter = new FieldsFilter().withFields("name,email,user_id,roles", true);
345+
346+
Request<MembersPage> request = api.organizations().getMembers("org_abc", pageFilter, fieldsFilter);
347+
assertThat(request, is(notNullValue()));
348+
349+
server.jsonResponse(MockServer.ORGANIZATION_MEMBERS_LIST, 200);
350+
MembersPage response = request.execute().getBody();
351+
RecordedRequest recordedRequest = server.takeRequest();
352+
353+
assertThat(recordedRequest, hasMethodAndPath(HttpMethod.GET, "/api/v2/organizations/org_abc/members"));
354+
assertThat(recordedRequest, hasHeader("Content-Type", "application/json"));
355+
assertThat(recordedRequest, hasHeader("Authorization", "Bearer apiToken"));
356+
assertThat(recordedRequest, hasQueryParameter("fields", "name,email,user_id,roles"));
357+
assertThat(recordedRequest, hasQueryParameter("include_fields", "true"));
358+
assertThat(recordedRequest, hasQueryParameter("page", "0"));
359+
assertThat(recordedRequest, hasQueryParameter("per_page", "20"));
360+
361+
assertThat(response, is(notNullValue()));
362+
assertThat(response.getItems(), hasSize(3));
363+
}
364+
320365
@Test
321366
public void shouldListOrgMembersWithTotals() throws Exception {
322367
PageFilter filter = new PageFilter().withTotals(true);

src/test/java/com/auth0/json/mgmt/organizations/MembersTest.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@ public void shouldDeserialize() throws Exception {
3030
" \"user_id\": \"user_123\",\n" +
3131
" \"email\": \"fred@domain.com\",\n" +
3232
" \"picture\": \"https://profilepic.com/mypic.png\",\n" +
33-
" \"name\": \"fred\"\n" +
33+
" \"name\": \"fred\",\n" +
34+
" \"roles\": [\n" +
35+
" {\n" +
36+
" \"id\": \"rol_abc\",\n" +
37+
" \"name\": \"test role\"\n" +
38+
" }\n" +
39+
" ]" +
3440
"}";
3541

3642
Member member = fromJSON(memberJson, Member.class);
@@ -39,6 +45,8 @@ public void shouldDeserialize() throws Exception {
3945
assertThat(member.getEmail(), is("fred@domain.com"));
4046
assertThat(member.getPicture(), is("https://profilepic.com/mypic.png"));
4147
assertThat(member.getName(), is("fred"));
42-
48+
assertThat(member.getRoles().size(), is(1));
49+
assertThat(member.getRoles().get(0).getName(), is("test role"));
50+
assertThat(member.getRoles().get(0).getId(), is("rol_abc"));
4351
}
4452
}

0 commit comments

Comments
 (0)