| import com.google.common.collect.Lists; |
| import com.google.common.collect.Sets; |
| import com.google.gson.Gson; |
| import org.apache.commons.lang.RandomStringUtils; |
| import org.apache.fineract.cn.anubis.api.v1.domain.AllowedOperation; |
| import org.apache.fineract.cn.anubis.api.v1.domain.PermittableEndpoint; |
| import org.apache.fineract.cn.anubis.api.v1.domain.Signature; |
| import org.apache.fineract.cn.api.context.AutoUserContext; |
| import org.apache.fineract.cn.identity.api.v1.PermittableGroupIds; |
| import org.apache.fineract.cn.identity.api.v1.domain.*; |
| import org.apache.fineract.cn.identity.api.v1.events.*; |
| import org.apache.fineract.cn.lang.security.RsaKeyPairFactory; |
| import org.apache.fineract.cn.test.env.TestEnvironment; |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.springframework.beans.factory.annotation.Autowired; |
| import org.springframework.http.MediaType; |
| import org.springframework.restdocs.JUnitRestDocumentation; |
| import org.springframework.test.web.servlet.MockMvc; |
| import org.springframework.test.web.servlet.setup.MockMvcBuilders; |
| import org.springframework.web.context.WebApplicationContext; |
| |
| import java.util.Collections; |
| import java.util.List; |
| |
| import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; |
| import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; |
| import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; |
| import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; |
| import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; |
| import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; |
| import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.put; |
| import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; |
| import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete; |
| import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
| import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; |
| import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; |
| import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; |
| |
| |
| public class IdentityApiDocumentation extends AbstractIdentityTest { |
| |
| @Rule |
| public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-identity"); |
| |
| @Autowired |
| private WebApplicationContext context; |
| |
| private MockMvc mockMvc; |
| |
| @Before |
| public void setUp ( ) { |
| this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) |
| .apply(documentationConfiguration(this.restDocumentation)) |
| .build(); |
| } |
| |
| @Test |
| public void documentCreateRole ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| |
| final String roleIdentifier = generateRoleIdentifier(); |
| final Permission rolePermission = buildRolePermission(); |
| final Role copyist = buildRole(roleIdentifier, rolePermission); |
| |
| Gson serializer = new Gson(); |
| this.mockMvc.perform(post("/roles") |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(copyist))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-create-role", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description("Identifier"), |
| fieldWithPath("permissions[].permittableEndpointGroupIdentifier").description("permittable endpoints"), |
| fieldWithPath("permissions[].allowedOperations").type("Set<AllowedOperation>").description("Set of allowed operations") |
| ) |
| )); |
| |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| @Test |
| public void documentDeleteRole ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| final String roleIdentifier = generateRoleIdentifier(); |
| |
| final Permission rolePermission = buildRolePermission(); |
| final Role scribe = buildRole(roleIdentifier, rolePermission); |
| |
| getTestSubject().createRole(scribe); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_ROLE, scribe.getIdentifier()); |
| |
| try { |
| this.mockMvc.perform(delete("/roles/" + scribe.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-delete-role", preprocessRequest(prettyPrint()))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| @Test |
| public void documentUpdateRole ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| final String roleIdentifier = createRoleManagementRole(); |
| |
| final Role role = getTestSubject().getRole(roleIdentifier); |
| role.getPermissions().add(buildUserPermission()); |
| |
| Gson gson = new Gson(); |
| role.getPermissions().remove(0); |
| |
| try { |
| this.mockMvc.perform(put("/roles/" + role.getIdentifier()) |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(gson.toJson(role))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-update-role", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description("Identifier"), |
| fieldWithPath("permissions[].permittableEndpointGroupIdentifier").description("permittable endpoints"), |
| fieldWithPath("permissions[].allowedOperations").type("Set<AllowedOperation>").description("Set of allowed operations") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetRole ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| |
| final String roleIdentifier = generateRoleIdentifier(); |
| |
| final Permission rolePermission = buildRolePermission(); |
| final Role scribe = buildRole(roleIdentifier, rolePermission); |
| |
| getTestSubject().createRole(scribe); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_ROLE, scribe.getIdentifier()); |
| |
| try { |
| this.mockMvc.perform(get("/roles/" + scribe.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-role", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("identifier").description("Identifier"), |
| fieldWithPath("permissions[].permittableEndpointGroupIdentifier").description("permittable endpoints"), |
| fieldWithPath("permissions[].allowedOperations").type("Set<AllowedOperation>").description("Set of allowed operations") |
| ))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| @Test |
| public void documentFindRoles ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| |
| final String roleIdentifierOne = generateRoleIdentifier(); |
| |
| final Permission rolePermission = buildRolePermission(); |
| final Role scribeOne = buildRole(roleIdentifierOne, rolePermission); |
| |
| getTestSubject().createRole(scribeOne); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_ROLE, scribeOne.getIdentifier()); |
| |
| final String roleIdentifierTwo = generateRoleIdentifier(); |
| |
| final Permission userPermission = buildUserPermission(); |
| final Role scribeTwo = buildRole(roleIdentifierTwo, userPermission); |
| |
| List <Role> roles = Lists.newArrayList(scribeOne, scribeTwo); |
| roles.stream() |
| .forEach(scribe -> { |
| try { |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_ROLE, scribe.getIdentifier()); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| }); |
| |
| try { |
| this.mockMvc.perform(get("/roles") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-find-roles", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("[].identifier").description("first role's identifier"), |
| fieldWithPath("[].permissions[].permittableEndpointGroupIdentifier").description("first role's roles permittable"), |
| fieldWithPath("[].permissions[].allowedOperations").type("Set<AllowedOperation>").description("Set of first role's allowed operations"), |
| fieldWithPath("[].permissions[1].permittableEndpointGroupIdentifier").description("first role's users permittable"), |
| fieldWithPath("[].permissions[1].allowedOperations").type("Set<AllowedOperation>").description("Set of first role's allowed operations"), |
| fieldWithPath("[].permissions[2].permittableEndpointGroupIdentifier").description("first role's self permittable"), |
| fieldWithPath("[].permissions[2].allowedOperations").type("Set<AllowedOperation>").description("Set of first role's allowed operations"), |
| fieldWithPath("[].permissions[3].permittableEndpointGroupIdentifier").description("first role's app_self permittable"), |
| fieldWithPath("[].permissions[3].allowedOperations").type("Set<AllowedOperation>").description("Set of first role's allowed operations"), |
| fieldWithPath("[1].identifier").description("second role's identifier"), |
| fieldWithPath("[1].permissions[].permittableEndpointGroupIdentifier").description("second role's roles permittable"), |
| fieldWithPath("[1].permissions[].allowedOperations").type("Set<AllowedOperation>").description("Set of second role's allowed operations") |
| ))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| @Test |
| public void documentCreatePGroup ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| |
| final String identifier = testEnvironment.generateUniqueIdentifer("group"); |
| |
| final PermittableEndpoint permittableEndpoint = buildPermittableEndpoint(); |
| final PermittableGroup pgroup = buildPermittableGroup(identifier, permittableEndpoint); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(post("/permittablegroups") |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(pgroup))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-create-p-group", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description("Permittable group identifier"), |
| fieldWithPath("permittables[].path").description("RequestMapping value"), |
| fieldWithPath("permittables[].method").type("RequestMethod").description("HTTP Request Method"), |
| fieldWithPath("permittables[].groupId").type("String").description("permittable identifier"), |
| fieldWithPath("permittables[].acceptTokenIntendedForForeignApplication").type(Boolean.TYPE).description("Accept token for foreign application") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentFindPGroup ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| |
| final String identifier = testEnvironment.generateUniqueIdentifer("pgroup"); |
| |
| final PermittableEndpoint permittableEndpoint = buildPermittableEndpoint(); |
| final PermittableGroup pgroup = buildPermittableGroup(identifier, permittableEndpoint); |
| |
| getTestSubject().createPermittableGroup(pgroup); |
| |
| { |
| final boolean found = eventRecorder.wait(EventConstants.OPERATION_POST_PERMITTABLE_GROUP, pgroup.getIdentifier()); |
| Assert.assertTrue(found); |
| } |
| |
| try { |
| this.mockMvc.perform(get("/permittablegroups/" + pgroup.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-find-p-group", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("identifier").description("Permittable group identifier"), |
| fieldWithPath("permittables[].path").description("RequestMapping value"), |
| fieldWithPath("permittables[].method").type("RequestMethod").description("HTTP Request Method"), |
| fieldWithPath("permittables[].groupId").type("String").description("permittable identifier"), |
| fieldWithPath("permittables[].acceptTokenIntendedForForeignApplication").type(Boolean.TYPE).description("Accept token for foreign application ?") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentFindAllPGroups ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignore = loginAdmin()) { |
| |
| final String firstIdentifier = testEnvironment.generateUniqueIdentifer("pgroup"); |
| final String secondIdentifier = testEnvironment.generateUniqueIdentifer("pgroup"); |
| |
| final List <String> identifierstrings = Lists.newArrayList(firstIdentifier, secondIdentifier); |
| |
| identifierstrings.stream() |
| .forEach(string -> { |
| |
| final PermittableEndpoint permittableEndpoint = buildPermittableEndpoint(); |
| final PermittableGroup pGroup = buildPermittableGroup(string, permittableEndpoint); |
| |
| getTestSubject().createPermittableGroup(pGroup); |
| |
| { |
| final boolean found; |
| try { |
| found = eventRecorder.wait(EventConstants.OPERATION_POST_PERMITTABLE_GROUP, pGroup.getIdentifier()); |
| Assert.assertTrue(found); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| }); |
| |
| try { |
| this.mockMvc.perform(get("/permittablegroups") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-find-all-p-groups", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("[].identifier").description("Permittable group identifier"), |
| fieldWithPath("[].permittables[].path").description("RequestMapping value"), |
| fieldWithPath("[].permittables[].method").type("RequestMethod").description("HTTP Request Method"), |
| fieldWithPath("[].permittables[].groupId").type("String").description("permittable identifier"), |
| fieldWithPath("[].permittables[].acceptTokenIntendedForForeignApplication").type(Boolean.TYPE).description("Accept token for foreign application ?"), |
| fieldWithPath("[1].identifier").description("Permittable group identifier"), |
| fieldWithPath("[1].permittables[].path").description("RequestMapping value"), |
| fieldWithPath("[1].permittables[].method").type("RequestMethod").description("HTTP Request Method"), |
| fieldWithPath("[1].permittables[].groupId").type("String").description("permittable identifier"), |
| fieldWithPath("[1].permittables[].acceptTokenIntendedForForeignApplication").type(Boolean.TYPE).description("Accept token for foreign application ?") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentCreateUser ( ) throws InterruptedException { |
| |
| final String username = createUserWithNonexpiredPassword(AHMES_PASSWORD, ADMIN_ROLE); |
| |
| final Authentication userAuthentication = |
| getTestSubject().login(username, TestEnvironment.encodePassword(AHMES_PASSWORD)); |
| |
| try (final AutoUserContext ignored = new AutoUserContext(username, userAuthentication.getAccessToken())) { |
| |
| UserWithPassword newUser = new UserWithPassword("Ahmes_friend", "scribe", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD)); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(post("/users") |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(newUser))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-create-user", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description("user's identifier"), |
| fieldWithPath("role").description("user's role"), |
| fieldWithPath("password").description("user's password") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentFindUser ( ) throws InterruptedException { |
| |
| final String username = createUserWithNonexpiredPassword(AHMES_PASSWORD, ADMIN_ROLE); |
| |
| final Authentication userAuthentication = |
| getTestSubject().login(username, TestEnvironment.encodePassword(AHMES_PASSWORD)); |
| |
| try (final AutoUserContext ignored = new AutoUserContext(username, userAuthentication.getAccessToken())) { |
| |
| UserWithPassword newUser = new UserWithPassword("Ahmes_friend", "scribe", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD)); |
| getTestSubject().createUser(newUser); |
| final boolean found = eventRecorder.wait(EventConstants.OPERATION_POST_USER, newUser.getIdentifier()); |
| Assert.assertTrue(found); |
| |
| try { |
| this.mockMvc.perform(get("/users/" + newUser.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-find-user", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("identifier").description("user's identifier"), |
| fieldWithPath("role").description("user's role") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentFindAllUsers ( ) throws InterruptedException { |
| |
| final String username = createUserWithNonexpiredPassword(AHMES_PASSWORD, ADMIN_ROLE); |
| |
| final Authentication userAuthentication = |
| getTestSubject().login(username, TestEnvironment.encodePassword(AHMES_PASSWORD)); |
| |
| try (final AutoUserContext ignored = new AutoUserContext(username, userAuthentication.getAccessToken())) { |
| |
| UserWithPassword ahmesFriend = new UserWithPassword("Ahmes_friend", "scribe", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD)); |
| getTestSubject().createUser(ahmesFriend); |
| final boolean found = eventRecorder.wait(EventConstants.OPERATION_POST_USER, ahmesFriend.getIdentifier()); |
| Assert.assertTrue(found); |
| |
| UserWithPassword ahmesOtherFriend = new UserWithPassword("Ahmes_Other_friend", "cobbler", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD + "Other")); |
| getTestSubject().createUser(ahmesOtherFriend); |
| Assert.assertTrue(eventRecorder.wait(EventConstants.OPERATION_POST_USER, ahmesOtherFriend.getIdentifier())); |
| |
| try { |
| this.mockMvc.perform(get("/users") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-find-all-users", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("[].identifier").description("first user's identifier"), |
| fieldWithPath("[].role").description("first user's role"), |
| fieldWithPath("[1].identifier").description("second user's identifier"), |
| fieldWithPath("[1].role").description("second user's role"), |
| fieldWithPath("[2].identifier").description("third user's identifier"), |
| fieldWithPath("[2].role").description("third user's role"), |
| fieldWithPath("[3].identifier").description("fourth user's identifier"), |
| fieldWithPath("[3].role").description("fourth user's role") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentChangeUserRole ( ) throws InterruptedException { |
| |
| final String userName = createUserWithNonexpiredPassword(AHMES_PASSWORD, ADMIN_ROLE); |
| |
| final Authentication userAuthentication = |
| getTestSubject().login(userName, TestEnvironment.encodePassword(AHMES_PASSWORD)); |
| |
| try (final AutoUserContext ignored = new AutoUserContext(userName, userAuthentication.getAccessToken())) { |
| |
| UserWithPassword user = new UserWithPassword("Ahmes_friend", "scribe", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD)); |
| getTestSubject().createUser(user); |
| Assert.assertTrue(eventRecorder.wait(EventConstants.OPERATION_POST_USER, user.getIdentifier())); |
| |
| RoleIdentifier newRole = new RoleIdentifier("cobbler"); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(put("/users/" + user.getIdentifier() + "/roleIdentifier") |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(newRole))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-change-user-role", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description(" updated role identifier") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetUserPermissions ( ) throws InterruptedException { |
| |
| final String userName = createUserWithNonexpiredPassword(AHMES_PASSWORD, ADMIN_ROLE); |
| |
| final Authentication userAuthentication = |
| getTestSubject().login(userName, TestEnvironment.encodePassword(AHMES_PASSWORD)); |
| |
| try (final AutoUserContext ignored = new AutoUserContext(userName, userAuthentication.getAccessToken())) { |
| |
| UserWithPassword user = new UserWithPassword("Ahmes_friend", "scribe", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD)); |
| getTestSubject().createUser(user); |
| Assert.assertTrue(eventRecorder.wait(EventConstants.OPERATION_POST_USER, user.getIdentifier())); |
| |
| try { |
| this.mockMvc.perform(get("/users/" + user.getIdentifier() + "/permissions") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-user-permissions", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("[].permittableEndpointGroupIdentifier").description(" permittable endpoint group identifier"), |
| fieldWithPath("[].allowedOperations").type("Set<AllowedOperation>").description("Set of allowed operations") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentChangeUserPassword ( ) throws InterruptedException { |
| |
| final String userName = createUserWithNonexpiredPassword(AHMES_PASSWORD, ADMIN_ROLE); |
| |
| final Authentication userAuthentication = |
| getTestSubject().login(userName, TestEnvironment.encodePassword(AHMES_PASSWORD)); |
| |
| try (final AutoUserContext ignored = new AutoUserContext(userName, userAuthentication.getAccessToken())) { |
| |
| UserWithPassword user = new UserWithPassword("Daddy", "bearer", |
| TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD)); |
| getTestSubject().createUser(user); |
| Assert.assertTrue(eventRecorder.wait(EventConstants.OPERATION_POST_USER, user.getIdentifier())); |
| |
| Password passw = new Password(TestEnvironment.encodePassword(AHMES_FRIENDS_PASSWORD + "Daddy")); |
| |
| user.setPassword(passw.getPassword()); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(put("/users/" + user.getIdentifier() + "/password") |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(passw))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-change-user-password", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("password").description("updated password") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetApplications ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData firstApplication = setApplicationSignature(); |
| final ApplicationSignatureTestData secondApplication = setApplicationSignature(); |
| |
| try { |
| this.mockMvc.perform(get("/applications") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-applications", preprocessResponse(prettyPrint()))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentDeleteApplication ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData firstApplication = setApplicationSignature(); |
| |
| try { |
| this.mockMvc.perform(delete("/applications/" + firstApplication.getApplicationIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-delete-application", preprocessResponse(prettyPrint()))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentSetApplicationSignature ( ) throws InterruptedException { |
| |
| final String appIdentifier = "testApp" + RandomStringUtils.randomNumeric(3) + "-v1"; |
| |
| final RsaKeyPairFactory.KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair(); |
| |
| final String appTimeStamp = keyPair.getTimestamp(); |
| |
| final Signature signature = new Signature(keyPair.getPublicKeyMod(), keyPair.getPublicKeyExp()); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(put("/applications/" + appIdentifier + "/signatures/" + appTimeStamp) |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(signature))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-set-application-signature", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("publicKeyMod").type("BigInteger").description(" public key mod"), |
| fieldWithPath("publicKeyExp").type("BigInteger").description(" public key exp") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| @Test |
| public void documentGetApplicationSignature ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final String appIdentifier = "testApp" + RandomStringUtils.randomNumeric(3) + "-v1"; |
| |
| final RsaKeyPairFactory.KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair(); |
| |
| final String appTimeStamp = keyPair.getTimestamp(); |
| |
| final Signature signature = new Signature(keyPair.getPublicKeyMod(), keyPair.getPublicKeyExp()); |
| |
| getTestSubject().setApplicationSignature(appIdentifier, appTimeStamp, signature); |
| this.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_SIGNATURE, new ApplicationSignatureEvent(appIdentifier, keyPair.getTimestamp())); |
| |
| try { |
| this.mockMvc.perform(get("/applications/" + appIdentifier + "/signatures/" + appTimeStamp) |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.ALL_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-application-signature", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("publicKeyMod").type("BigInteger").description("public key mod"), |
| fieldWithPath("publicKeyExp").type("BigInteger").description("public key exp") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentCreateApplicationPermission ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| |
| final String appIdentifier = "testApp" + RandomStringUtils.randomNumeric(3) + "-v1"; |
| |
| final RsaKeyPairFactory.KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair(); |
| |
| final String appTimeStamp = keyPair.getTimestamp(); |
| |
| final Signature signature = new Signature(keyPair.getPublicKeyMod(), keyPair.getPublicKeyExp()); |
| |
| getTestSubject().setApplicationSignature(appIdentifier, appTimeStamp, signature); |
| this.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_SIGNATURE, new ApplicationSignatureEvent(appIdentifier, keyPair.getTimestamp())); |
| |
| final Permission newPermission = new Permission(PermittableGroupIds.IDENTITY_MANAGEMENT, Sets.newHashSet(AllowedOperation.READ)); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(post("/applications/" + appIdentifier + "/permissions") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serializer.toJson(newPermission))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-create-application-permission", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("permittableEndpointGroupIdentifier").description("permittable group endpoint identifier"), |
| fieldWithPath("allowedOperations").type("Set<AllowedOperation>").description("Set of Allowed Operations") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetApplicationPermission ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| |
| final String appIdentifier = "testApp" + RandomStringUtils.randomNumeric(3) + "-v1"; |
| |
| final RsaKeyPairFactory.KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair(); |
| |
| final String appTimeStamp = keyPair.getTimestamp(); |
| |
| final Signature signature = new Signature(keyPair.getPublicKeyMod(), keyPair.getPublicKeyExp()); |
| |
| getTestSubject().setApplicationSignature(appIdentifier, appTimeStamp, signature); |
| this.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_SIGNATURE, new ApplicationSignatureEvent(appIdentifier, keyPair.getTimestamp())); |
| |
| final Permission newPermission = new Permission(PermittableGroupIds.IDENTITY_MANAGEMENT, Sets.newHashSet(AllowedOperation.CHANGE)); |
| |
| createApplicationPermission(appIdentifier, newPermission); |
| |
| Gson serializer = new Gson(); |
| try { |
| this.mockMvc.perform(get("/applications/" + appIdentifier + "/permissions/" + newPermission.getPermittableEndpointGroupIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-application-permission", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("permittableEndpointGroupIdentifier").description("permittable group endpoint identifier"), |
| fieldWithPath("allowedOperations").type("Set<AllowedOperation>").description("Set of Allowed Operations") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetApplicationPermissions ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| |
| final String appIdentifier = "testApp" + RandomStringUtils.randomNumeric(3) + "-v1"; |
| |
| final RsaKeyPairFactory.KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair(); |
| |
| final String appTimeStamp = keyPair.getTimestamp(); |
| |
| final Signature signature = new Signature(keyPair.getPublicKeyMod(), keyPair.getPublicKeyExp()); |
| |
| getTestSubject().setApplicationSignature(appIdentifier, appTimeStamp, signature); |
| this.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_SIGNATURE, new ApplicationSignatureEvent(appIdentifier, keyPair.getTimestamp())); |
| |
| final Permission firstPermission = new Permission(PermittableGroupIds.IDENTITY_MANAGEMENT, Sets.newHashSet(AllowedOperation.CHANGE)); |
| createApplicationPermission(appIdentifier, firstPermission); |
| |
| final Permission secondPermission = new Permission(PermittableGroupIds.ROLE_MANAGEMENT, Sets.newHashSet(AllowedOperation.DELETE)); |
| createApplicationPermission(appIdentifier, secondPermission); |
| |
| try { |
| this.mockMvc.perform(get("/applications/" + appIdentifier + "/permissions") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-application-permissions", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("[].permittableEndpointGroupIdentifier").description("first permittable group endpoint identifier"), |
| fieldWithPath("[].allowedOperations").type("Set<AllowedOperation>").description("Set of Allowed Operations"), |
| fieldWithPath("[1].permittableEndpointGroupIdentifier").description("second permittable group endpoint identifier"), |
| fieldWithPath("[1].allowedOperations").type("Set<AllowedOperation>").description("Set of Allowed Operations") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentDeleteApplicationPermission ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| |
| final String appIdentifier = "testApp" + RandomStringUtils.randomNumeric(3) + "-v1"; |
| final RsaKeyPairFactory.KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair(); |
| final String appTimeStamp = keyPair.getTimestamp(); |
| final Signature signature = new Signature(keyPair.getPublicKeyMod(), keyPair.getPublicKeyExp()); |
| |
| getTestSubject().setApplicationSignature(appIdentifier, appTimeStamp, signature); |
| this.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_SIGNATURE, new ApplicationSignatureEvent(appIdentifier, keyPair.getTimestamp())); |
| |
| final Permission newPermission = new Permission(PermittableGroupIds.IDENTITY_MANAGEMENT, Sets.newHashSet(AllowedOperation.CHANGE)); |
| createApplicationPermission(appIdentifier, newPermission); |
| |
| try { |
| this.mockMvc.perform(delete("/applications/" + appIdentifier + "/permissions/" + newPermission.getPermittableEndpointGroupIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-delete-application-permission", preprocessResponse(prettyPrint()))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentCreateApplicationCallEndpointSet ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData application = setApplicationSignature(); |
| |
| final String endpointSetIdentifier = testEnvironment.generateUniqueIdentifer("end_pt_set"); |
| final CallEndpointSet endpointSet = new CallEndpointSet(); |
| endpointSet.setIdentifier(endpointSetIdentifier); |
| endpointSet.setPermittableEndpointGroupIdentifiers(Collections.emptyList()); |
| |
| Gson serial = new Gson(); |
| try { |
| this.mockMvc.perform(post("/applications/" + application.getApplicationIdentifier() + "/callendpointset") |
| .accept(MediaType.APPLICATION_JSON_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serial.toJson(endpointSet))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-create-application-call-endpoint-set", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description("call endpoint set identifier"), |
| fieldWithPath("permittableEndpointGroupIdentifiers").type("List<String>").description("permittable group endpoint identifier") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentChangeApplicationCallEndpointSet ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData application = setApplicationSignature(); |
| |
| final String endpointSetIdentifier = testEnvironment.generateUniqueIdentifer("end_pt_set"); |
| PermittableEndpoint pEndPointOne = buildPermittableEndpoint(); |
| PermittableEndpoint pEndPointTwo = buildPermittableEndpoint(); |
| |
| PermittableGroup pgroup1 = buildPermittableGroup("ideeOne", pEndPointOne); |
| PermittableGroup pgroup2 = buildPermittableGroup("ideeTwo", pEndPointTwo); |
| |
| List enlist = Lists.newArrayList(pgroup1.getIdentifier(), pgroup2.getIdentifier()); |
| |
| final CallEndpointSet endpointSet = new CallEndpointSet(); |
| endpointSet.setIdentifier(endpointSetIdentifier); |
| endpointSet.setPermittableEndpointGroupIdentifiers(enlist); |
| |
| getTestSubject().createApplicationCallEndpointSet(application.getApplicationIdentifier(), endpointSet); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_APPLICATION_CALLENDPOINTSET, |
| new ApplicationCallEndpointSetEvent(application.getApplicationIdentifier(), endpointSetIdentifier)); |
| |
| Gson serial = new Gson(); |
| try { |
| this.mockMvc.perform(put("/applications/" + application.getApplicationIdentifier() + "/callendpointset/" + endpointSet.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE) |
| .content(serial.toJson(endpointSet))) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-change-application-call-endpoint-set", preprocessRequest(prettyPrint()), |
| requestFields( |
| fieldWithPath("identifier").description("call endpoint set identifier"), |
| fieldWithPath("permittableEndpointGroupIdentifiers").type("List<String>").description("permittable group endpoint identifier") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetApplicationCallEndpointSets ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData application = setApplicationSignature(); |
| |
| final String endpointSetIdentifierOne = testEnvironment.generateUniqueIdentifer("end_pt_set"); |
| final String endpointSetIdentifierTwo = testEnvironment.generateUniqueIdentifer("endptset"); |
| |
| PermittableEndpoint pEndPointZero = buildPermittableEndpoint(); |
| PermittableEndpoint pEndPointOne = buildPermittableEndpoint(); |
| PermittableEndpoint pEndPointTwo = buildPermittableEndpoint(); |
| |
| PermittableGroup pgroup = buildPermittableGroup("ideeZero", pEndPointZero); |
| PermittableGroup pgroup1 = buildPermittableGroup("ideeOne", pEndPointOne); |
| PermittableGroup pgroup2 = buildPermittableGroup("ideeTwo", pEndPointTwo); |
| |
| List enlist1 = Lists.newArrayList(pgroup1.getIdentifier(), pgroup2.getIdentifier()); |
| |
| final CallEndpointSet endpointSetOne = new CallEndpointSet(); |
| endpointSetOne.setIdentifier(endpointSetIdentifierOne); |
| endpointSetOne.setPermittableEndpointGroupIdentifiers(enlist1); |
| |
| getTestSubject().createApplicationCallEndpointSet(application.getApplicationIdentifier(), endpointSetOne); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_APPLICATION_CALLENDPOINTSET, |
| new ApplicationCallEndpointSetEvent(application.getApplicationIdentifier(), endpointSetIdentifierOne)); |
| |
| List enlist2 = Lists.newArrayList(pgroup.getIdentifier()); |
| final CallEndpointSet endpointSetTwo = new CallEndpointSet(); |
| endpointSetTwo.setIdentifier(endpointSetIdentifierTwo); |
| endpointSetTwo.setPermittableEndpointGroupIdentifiers(enlist2); |
| |
| getTestSubject().createApplicationCallEndpointSet(application.getApplicationIdentifier(), endpointSetTwo); |
| super.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_CALLENDPOINTSET, |
| new ApplicationCallEndpointSetEvent(application.getApplicationIdentifier(), endpointSetIdentifierTwo)); |
| |
| Assert.assertTrue(getTestSubject().getApplicationCallEndpointSets(application.getApplicationIdentifier()).size() == 2); |
| |
| try { |
| this.mockMvc.perform(get("/applications/" + application.getApplicationIdentifier() + "/callendpointset") |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-application-call-endpoint-sets", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("[].identifier").description("first call endpoint call set identifier"), |
| fieldWithPath("[].permittableEndpointGroupIdentifiers").type("List<String>").description("first permittable group endpoint identifier"), |
| fieldWithPath("[2].identifier").description("second call endpoint call set identifier"), |
| fieldWithPath("[2].permittableEndpointGroupIdentifiers").type("List<String>").description("second permittable group endpoint identifier") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentGetApplicationCallEndpointSet ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData application = setApplicationSignature(); |
| |
| final String endpointSetIdentifierOne = testEnvironment.generateUniqueIdentifer("end_pt_set"); |
| final String endpointSetIdentifierTwo = testEnvironment.generateUniqueIdentifer("endptset"); |
| |
| PermittableEndpoint pEndPointZero = buildPermittableEndpoint(); |
| PermittableEndpoint pEndPointOne = buildPermittableEndpoint(); |
| PermittableEndpoint pEndPointTwo = buildPermittableEndpoint(); |
| |
| PermittableGroup pgroup = buildPermittableGroup("ideeZero", pEndPointZero); |
| PermittableGroup pgroup1 = buildPermittableGroup("ideeOne", pEndPointOne); |
| PermittableGroup pgroup2 = buildPermittableGroup("ideeTwo", pEndPointTwo); |
| |
| List enlist1 = Lists.newArrayList(pgroup1.getIdentifier(), pgroup2.getIdentifier()); |
| |
| final CallEndpointSet endpointSetOne = new CallEndpointSet(); |
| endpointSetOne.setIdentifier(endpointSetIdentifierOne); |
| endpointSetOne.setPermittableEndpointGroupIdentifiers(enlist1); |
| |
| getTestSubject().createApplicationCallEndpointSet(application.getApplicationIdentifier(), endpointSetOne); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_APPLICATION_CALLENDPOINTSET, |
| new ApplicationCallEndpointSetEvent(application.getApplicationIdentifier(), endpointSetIdentifierOne)); |
| |
| List enlist2 = Lists.newArrayList(pgroup.getIdentifier()); |
| final CallEndpointSet endpointSetTwo = new CallEndpointSet(); |
| endpointSetTwo.setIdentifier(endpointSetIdentifierTwo); |
| endpointSetTwo.setPermittableEndpointGroupIdentifiers(enlist2); |
| |
| getTestSubject().createApplicationCallEndpointSet(application.getApplicationIdentifier(), endpointSetTwo); |
| super.eventRecorder.wait(EventConstants.OPERATION_PUT_APPLICATION_CALLENDPOINTSET, |
| new ApplicationCallEndpointSetEvent(application.getApplicationIdentifier(), endpointSetIdentifierTwo)); |
| |
| Assert.assertTrue(getTestSubject().getApplicationCallEndpointSets(application.getApplicationIdentifier()).size() == 2); |
| |
| try { |
| this.mockMvc.perform(get("/applications/" + application.getApplicationIdentifier() + "/callendpointset/" + endpointSetOne.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isOk()) |
| .andDo(document("document-get-application-call-endpoint-set", preprocessResponse(prettyPrint()), |
| responseFields( |
| fieldWithPath("identifier").description("call endpoint call set identifier"), |
| fieldWithPath("permittableEndpointGroupIdentifiers").type("List<String>").description("permittable group endpoint identifier") |
| ) |
| )); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| @Test |
| public void documentDeleteApplicationCallEndpointSet ( ) throws InterruptedException { |
| |
| try (final AutoUserContext ignored |
| = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) { |
| final ApplicationSignatureTestData application = setApplicationSignature(); |
| |
| final String endpointSetIdentifier = testEnvironment.generateUniqueIdentifer("end_pt_set"); |
| PermittableEndpoint pEndPointOne = buildPermittableEndpoint(); |
| PermittableEndpoint pEndPointTwo = buildPermittableEndpoint(); |
| |
| PermittableGroup pgroup1 = buildPermittableGroup("yepue", pEndPointOne); |
| PermittableGroup pgroup2 = buildPermittableGroup("yetah", pEndPointTwo); |
| |
| List enlist = Lists.newArrayList(pgroup1.getIdentifier(), pgroup2.getIdentifier()); |
| |
| final CallEndpointSet endpointSet = new CallEndpointSet(); |
| endpointSet.setIdentifier(endpointSetIdentifier); |
| endpointSet.setPermittableEndpointGroupIdentifiers(enlist); |
| |
| getTestSubject().createApplicationCallEndpointSet(application.getApplicationIdentifier(), endpointSet); |
| super.eventRecorder.wait(EventConstants.OPERATION_POST_APPLICATION_CALLENDPOINTSET, |
| new ApplicationCallEndpointSetEvent(application.getApplicationIdentifier(), endpointSetIdentifier)); |
| |
| try { |
| this.mockMvc.perform(delete("/applications/" + application.getApplicationIdentifier() + "/callendpointset/" + endpointSet.getIdentifier()) |
| .accept(MediaType.ALL_VALUE) |
| .contentType(MediaType.APPLICATION_JSON_VALUE)) |
| .andExpect(status().isAccepted()) |
| .andDo(document("document-delete-application-call-endpoint-set", preprocessRequest(prettyPrint()))); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| private PermittableGroup buildPermittableGroup (final String identifier, final PermittableEndpoint permittableEndpoint) { |
| final PermittableGroup ret = new PermittableGroup(); |
| ret.setIdentifier(identifier); |
| ret.setPermittables(Collections.singletonList(permittableEndpoint)); |
| return ret; |
| } |
| |
| private PermittableEndpoint buildPermittableEndpoint ( ) { |
| final PermittableEndpoint ret = new PermittableEndpoint(); |
| ret.setPath("/exx/eyy/eze"); |
| ret.setMethod("POST"); |
| ret.setGroupId("id"); |
| return ret; |
| } |
| } |