use of org.wso2.charon.core.client.SCIMClient in project product-is by wso2.
the class SCIMServiceProviderGroupTestCase method patchGroup.
@Test(alwaysRun = true, description = "Add new SCIM user member to group testeng2 without removing existing users", dependsOnMethods = { "updateGroup" })
@SetEnvironment(executionEnvironments = { ExecutionEnvironment.ALL })
public void patchGroup() throws Exception {
SCIMResponseHandler responseHandler = new SCIMResponseHandler();
responseHandler.setSCIMClient(scimClient);
// set the handler in wink client config
ClientConfig clientConfig = new ClientConfig();
clientConfig.handlers(new ClientHandler[] { responseHandler });
// create a wink rest client with the above config
RestClient restClient = new RestClient(clientConfig);
BasicAuthInfo encodedBasicAuthInfo = SCIMUtils.getBasicAuthInfo(userInfo);
// create resource endpoint to access a known user resource.
Resource groupResource = restClient.resource(scim_url + "Groups/" + scimGroupId);
String response = groupResource.header(SCIMConstants.AUTHORIZATION_HEADER, encodedBasicAuthInfo.getAuthorizationHeader()).contentType(SCIMConstants.APPLICATION_JSON).accept(SCIMConstants.APPLICATION_JSON).get(String.class);
log.info("Retrieved group: " + response);
// decode retrieved group
Group decodedGroup = (Group) scimClient.decodeSCIMResponse(response.replace("PRIMARY/", ""), SCIMConstants.JSON, 2);
decodedGroup.setUserMember(scimUserId2, USERNAME2);
String updatedGroupString = scimClient.encodeSCIMObject(decodedGroup, SCIMConstants.JSON);
Resource updateGroupResource = restClient.resource(scim_url + "Groups/" + scimGroupId);
String responseUpdated = updateGroupResource.header(SCIMConstants.AUTHORIZATION_HEADER, encodedBasicAuthInfo.getAuthorizationHeader()).contentType(SCIMConstants.APPLICATION_JSON).header("X-HTTP-Method-Override", "PATCH").accept(SCIMConstants.APPLICATION_JSON).post(String.class, updatedGroupString);
log.info("Updated group: " + responseUpdated);
Assert.assertTrue(userMgtClient.userNameExists("testeng2", USERNAME) && userMgtClient.userNameExists("testeng2", USERNAME2));
}
use of org.wso2.charon.core.client.SCIMClient in project product-is by wso2.
the class SCIMServiceProviderGroupTestCase method createUser.
public void createUser() throws CharonException {
// create SCIM client
String encodedUser = SCIMUtils.getEncodedSCIMUser(scimClient, USERNAME, "test", new String[] { "scimuser1@gmail.com", "scimuser2@wso2.com" }, "SCIMUser2", "password1", "sinhala", "0772202595");
// create a apache wink ClientHandler to intercept and identify response messages
Resource userResource = SCIMUtils.getUserResource(scimClient, scim_url);
BasicAuthInfo encodedBasicAuthInfo = SCIMUtils.getBasicAuthInfo(userInfo);
String response = userResource.header(SCIMConstants.AUTHORIZATION_HEADER, encodedBasicAuthInfo.getAuthorizationHeader()).contentType(SCIMConstants.APPLICATION_JSON).accept(SCIMConstants.APPLICATION_JSON).post(String.class, encodedUser);
log.info(response);
Object obj = JSONValue.parse(response);
scimUserId = ((JSONObject) obj).get("id").toString();
encodedUser = SCIMUtils.getEncodedSCIMUser(scimClient, USERNAME2, "test2", new String[] { "dkasunw2@gmail.com", "dharshanaw2@wso2.com" }, USERNAME2, "testPW2", "sinhala", "0712202541");
response = userResource.header(SCIMConstants.AUTHORIZATION_HEADER, encodedBasicAuthInfo.getAuthorizationHeader()).contentType(SCIMConstants.APPLICATION_JSON).accept(SCIMConstants.APPLICATION_JSON).post(String.class, encodedUser);
obj = JSONValue.parse(response);
scimUserId2 = ((JSONObject) obj).get("id").toString();
}
use of org.wso2.charon.core.client.SCIMClient in project product-is by wso2.
the class SCIMServiceProviderGroupTestCase method listGroup.
@Test(alwaysRun = true, description = "list SCIM Groups", dependsOnMethods = { "getGroup" })
@SetEnvironment(executionEnvironments = { ExecutionEnvironment.ALL })
public void listGroup() throws Exception {
SCIMResponseHandler responseHandler = new SCIMResponseHandler();
responseHandler.setSCIMClient(scimClient);
// set the handler in wink client config
ClientConfig clientConfig = new ClientConfig();
clientConfig.handlers(new ClientHandler[] { responseHandler });
// create a wink rest client with the above config
RestClient restClient = new RestClient(clientConfig);
BasicAuthInfo encodedBasicAuthInfo = SCIMUtils.getBasicAuthInfo(userInfo);
// create resource endpoint to access a known user resource.
Resource groupResource = restClient.resource(scim_url + "Groups/" + scimGroupId);
String response = groupResource.header(SCIMConstants.AUTHORIZATION_HEADER, encodedBasicAuthInfo.getAuthorizationHeader()).contentType(SCIMConstants.APPLICATION_JSON).accept(SCIMConstants.APPLICATION_JSON).get(String.class);
log.info(response.toString());
FlaggedName[] roleNames = userMgtClient.listRoles("eng", 100);
for (FlaggedName role : roleNames) {
if (!role.getItemName().contains("false")) {
Assert.assertTrue(response.contains(role.getItemName()));
}
}
}
use of org.wso2.charon.core.client.SCIMClient in project product-is by wso2.
the class SCIMServiceProviderGroupTestCase method deleteGroup.
@Test(alwaysRun = true, description = "Add SCIM user", dependsOnMethods = { "patchGroup" })
@SetEnvironment(executionEnvironments = { ExecutionEnvironment.ALL })
public void deleteGroup() throws Exception {
SCIMResponseHandler responseHandler = new SCIMResponseHandler();
responseHandler.setSCIMClient(scimClient);
// set the handler in wink client config
ClientConfig clientConfig = new ClientConfig();
clientConfig.handlers(new ClientHandler[] { responseHandler });
// create a wink rest client with the above config
RestClient restClient = new RestClient(clientConfig);
BasicAuthInfo encodedBasicAuthInfo = SCIMUtils.getBasicAuthInfo(userInfo);
// create resource endpoint to access a known user resource.
Resource groupResource = restClient.resource(scim_url + "Groups/" + scimGroupId);
// had to set content type for the delete request as well, coz wink client sets */* by default.
String response = groupResource.header(SCIMConstants.AUTHORIZATION_HEADER, encodedBasicAuthInfo.getAuthorizationHeader()).accept(SCIMConstants.APPLICATION_JSON).delete(String.class);
// decode the response
log.info(response.toString());
Assert.assertFalse(userMgtClient.roleNameExists(DISPLAY_NAME));
}
use of org.wso2.charon.core.client.SCIMClient in project product-is by wso2.
the class SCIMServiceProviderGroupTestCase method initiate.
@BeforeClass(alwaysRun = true)
public void initiate() throws Exception {
AutomationContext automationContext = new AutomationContext("IDENTITY", TestUserMode.SUPER_TENANT_ADMIN);
userInfo = automationContext.getContextTenant().getContextUser();
backendUrl = automationContext.getContextUrls().getBackEndUrl();
serviceEndPoint = automationContext.getContextUrls().getServiceUrl();
scim_url = backendUrl.substring(0, 22) + "/wso2/scim/";
sessionCookie = new LoginLogoutClient(automationContext).login();
userMgtClient = new UserManagementClient(backendUrl, sessionCookie);
scimConfigAdminClient = new SCIMConfigAdminClient(backendUrl, sessionCookie);
scimClient = new SCIMClient();
// creating users for the test
createUser();
}
Aggregations