@Test void createClient() throws Exception { Snippet requestFields = requestFields( (FieldDescriptor[]) ArrayUtils.addAll(idempotentFields, new FieldDescriptor[]{clientSecretField} )); Snippet responseFields = responseFields( (FieldDescriptor[]) ArrayUtils.addAll(idempotentFields, new FieldDescriptor[]{ lastModifiedField } )); ResultActions resultActions = createClientHelper(); resultActions.andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeaders( authorizationHeader, IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ), requestFields, responseFields )); }
.andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("userId").description(userIdDescription)),
.andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("userId").description(userIdDescription)),
.andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("userId").description(userIdDescription)),
.andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeaders(
resultActions.andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters( parameterWithName("client_id").required().description(clientIdDescription)
.andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeaders(
@Test void test_Create_User() throws Exception { user = createScimUserObject(); mockMvc.perform( RestDocumentationRequestBuilders.post("/Users") .accept(APPLICATION_JSON) .header("Authorization", "Bearer " + scimWriteToken) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .content(JsonUtils.writeValueAsString(user)) ) .andExpect(status().isCreated()) .andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeaders( headerWithName("Authorization").description("Access token with `scim.write` or `uaa.admin` scope required"), IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ), createFields, responseFields(createResponse) ) ); }
@Test void createServiceProvider() throws Exception { String json = mockMvc.perform(post("/saml/service-providers") .header("Authorization", "Bearer " + adminToken) .contentType(APPLICATION_JSON) .content(writeValueAsString(requestBody)) ).andExpect(status().isCreated()) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeaders( headerWithName("Authorization").description("Bearer token containing `sps.write`"), IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ), requestFields, responseFields)) .andReturn().getResponse().getContentAsString(); SamlServiceProvider provider = JsonUtils.readValue(json, SamlServiceProvider.class); assertNotNull(provider.getConfig()); assertNotNull(provider.getConfig().getStaticCustomAttributes()); assertEquals(2, provider.getConfig().getStaticCustomAttributes().size()); assertEquals(staticAttributes, provider.getConfig().getStaticCustomAttributes()); }
@Test void testCreateGoogleMfaProvider() throws Exception { MfaProvider<GoogleMfaProviderConfig> mfaProvider = getGoogleMfaProvider(); FieldDescriptor[] idempotentFields = getGoogleMfaProviderFields(); Snippet requestFields = requestFields(idempotentFields); Snippet responseFields = responseFields(getMfaProviderResponseFields(idempotentFields)); mockMvc.perform(RestDocumentationRequestBuilders.post("/mfa-providers", mfaProvider.getId()) .accept(APPLICATION_JSON) .header("Authorization", "Bearer " + adminToken) .contentType(APPLICATION_JSON) .content(serializeExcludingProperties(mfaProvider, "id", "created", "last_modified", "identityZoneId"))) .andExpect(status().isCreated()) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeaders( MFA_AUTHORIZATION_HEADER, IDENTITY_ZONE_ID_HEADER ), requestFields, responseFields) ); }
).andExpect(status().isOk()) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters,
@Test void createExternalGroupMapping() throws Exception { ScimGroup group = new ScimGroup(); group.setDisplayName("Group For Testing Creating External Group Mapping"); group = createGroup(mockMvc, scimWriteToken, group); Snippet requestHeader = requestHeaders( AUTHORIZATION_HEADER, IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ); Snippet requestFields = requestFields( fieldWithPath("groupId").required().description(GROUP_ID_DESC), fieldWithPath("externalGroup").required().description(EXTERNAL_GROUP_DESCRIPTION), fieldWithPath("origin").optional(LDAP).type(STRING).description(ORIGIN_DESC), fieldWithPath("meta.version").optional(0).description(VERSION_DESC), fieldWithPath("meta.created").ignored(), fieldWithPath("schemas").ignored() ); createExternalGroupMappingHelper(group) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeader, requestFields, responseFields)); }
@Test void deleteExternalGroupMappingUsingName() throws Exception { ScimGroup group = new ScimGroup(); group.setDisplayName("Group For Testing Deleting External Group Mapping By Name"); group = createGroup(mockMvc, scimWriteToken, group); ScimGroupExternalMember scimGroupExternalMember = JsonUtils.readValue(createExternalGroupMappingHelper(group) .andReturn().getResponse().getContentAsString(), ScimGroupExternalMember.class); Snippet pathParameters = pathParameters( parameterWithName("displayName").required().description(DISPLAY_NAME_DESC), externalGroup, origin ); Snippet requestHeaders = requestHeaders( AUTHORIZATION_HEADER, IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ); MockHttpServletRequestBuilder delete = delete( "/Groups/External/displayName/{displayName}/externalGroup/{externalGroup}/origin/{origin}", group.getDisplayName(), scimGroupExternalMember.getExternalGroup(), scimGroupExternalMember.getOrigin() ) .header("Authorization", "Bearer " + scimWriteToken) .with(new DecodePathInfoPostProcessor()); mockMvc.perform(delete) .andExpect(status().isOk()) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters, requestHeaders, responseFields)); }
@Test void changeClientSecret() throws Exception { ClientDetails createdClientDetails = JsonUtils.readValue(createClientHelper().andReturn().getResponse().getContentAsString(), BaseClientDetails.class); ResultActions resultActions = mockMvc.perform(put("/oauth/clients/{client_id}/secret", createdClientDetails.getClientId()) .header("Authorization", "Bearer " + clientAdminToken) .contentType(APPLICATION_JSON) .accept(APPLICATION_JSON) .content(writeValueAsString(map( entry("clientId", createdClientDetails.getClientId()), entry("secret", "new_secret") )))) .andExpect(status().isOk()); resultActions.andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters( parameterWithName("client_id").required().description(clientIdDescription) ), requestHeaders( authorizationHeader, IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ), requestFields(secretChangeFields) ) ); }
@Test void deleteExternalGroupMapping() throws Exception { ScimGroup group = new ScimGroup(); group.setDisplayName("Group For Testing Deleting External Group Mapping"); group = createGroup(mockMvc, scimWriteToken, group); ScimGroupExternalMember scimGroupExternalMember = JsonUtils.readValue(createExternalGroupMappingHelper(group) .andReturn().getResponse().getContentAsString(), ScimGroupExternalMember.class); Snippet pathParameters = pathParameters( parameterWithName("groupId").required().description(GROUP_ID_DESC), externalGroup, origin ); Snippet requestHeaders = requestHeaders( AUTHORIZATION_HEADER, IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ); MockHttpServletRequestBuilder delete = delete( "/Groups/External/groupId/{groupId}/externalGroup/{externalGroup}/origin/{origin}", group.getId(), scimGroupExternalMember.getExternalGroup(), scimGroupExternalMember.getOrigin() ) .header("Authorization", "Bearer " + scimWriteToken) .with(new DecodePathInfoPostProcessor()); mockMvc.perform(delete) .andExpect(status().isOk()) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters, requestHeaders, responseFields) ); }
.andExpect(content().string(containsString("<input type=\"hidden\" name=\"SAMLResponse\" value=\""))) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), requestParameters));
@Test void test_status_unlock_user() throws Exception { UserAccountStatus alteredAccountStatus = new UserAccountStatus(); alteredAccountStatus.setLocked(false); String jsonStatus = JsonUtils.writeValueAsString(alteredAccountStatus); mockMvc .perform( RestDocumentationRequestBuilders.patch("/Users/{userId}/status", user.getId()) .header("Authorization", "Bearer " + scimWriteToken) .accept(APPLICATION_JSON) .contentType(APPLICATION_JSON) .content(jsonStatus) ) .andExpect(status().isOk()) .andExpect(content().json(jsonStatus)) .andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("userId").description(userIdDescription)), requestHeaders( headerWithName("Authorization").description("Access token with `scim.write`, `uaa.account_status.write`, or `uaa.admin` required"), IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ), requestFields(fieldWithPath("locked").optional(null).description("Set to `false` in order to unlock the user when they have been locked out according to the password lock-out policy. Setting to `true` will produce an error, as the user cannot be locked out via the API.").type(BOOLEAN)), responseFields(fieldWithPath("locked").description("The `locked` value given in the request.").type(BOOLEAN)) ) ); }
@Test void test_status_password_expire_user() throws Exception { UserAccountStatus alteredAccountStatus = new UserAccountStatus(); alteredAccountStatus.setPasswordChangeRequired(true); String jsonStatus = JsonUtils.writeValueAsString(alteredAccountStatus); mockMvc .perform( RestDocumentationRequestBuilders.patch("/Users/{userId}/status", user.getId()) .header("Authorization", "Bearer " + scimWriteToken) .accept(APPLICATION_JSON) .contentType(APPLICATION_JSON) .content(jsonStatus) ) .andExpect(status().isOk()) .andExpect(content().json(jsonStatus)) .andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("userId").description(userIdDescription)), requestHeaders( headerWithName("Authorization").description("Access token with `scim.write`, `uaa.account_status.write`, or `uaa.admin` required"), IDENTITY_ZONE_ID_HEADER, IDENTITY_ZONE_SUBDOMAIN_HEADER ), requestFields(fieldWithPath("passwordChangeRequired").optional(null).description("Set to `true` in order to force internal user’s password to expire").type(BOOLEAN)), responseFields(fieldWithPath("passwordChangeRequired").description("The `passwordChangeRequired` value given in the request.").type(BOOLEAN)) ) ); }
.andDo( document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("userId").description(userIdDescription)),
.andExpect(status().isOk()) .andDo(document("{ClassName}/{methodName}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestHeader,