Search in sources :

Example 6 with CustomAttributes

use of io.jans.scim.model.scim2.CustomAttributes in project jans by JanssenProject.

the class FullUserTest method searchEscapingChars.

@SkipTest(databases = { "couchbase", "spanner" })
@Test(dependsOnMethods = "updateNonExisting", groups = "lastTests")
public void searchEscapingChars() {
    char quote = '"', backslash = '\\';
    String scapedQuote = String.valueOf(new char[] { backslash, quote });
    String scapedBkSlash = String.valueOf(new char[] { backslash, backslash });
    // Used to generate a random Unicode char
    String rnd = UUID.randomUUID().toString().substring(0, 4);
    String unicodeStr = String.valueOf(Character.toChars(Integer.parseInt(rnd, 16)));
    Name name = user.getName();
    name.setGivenName(String.format("with %cquotes%c", quote, quote));
    name.setMiddleName(String.format("with backslash %c", backslash));
    name.setFamilyName(String.format("%c %c %s", quote, backslash, unicodeStr));
    CustomAttributes attrs = new CustomAttributes(USER_EXT_SCHEMA_ID);
    attrs.setAttribute("scimCustomFirst", String.valueOf(quote));
    user.addCustomAttributes(attrs);
    Response response = client.updateUser(user, user.getId(), null, null);
    assertEquals(response.getStatus(), OK.getStatusCode());
    // => name.givenName co "\""
    String filter = String.format("name.givenName co %c%s%c", quote, scapedQuote, quote);
    // => and name.middleName ew "\\"
    filter += String.format(" and name.middleName ew %c%s%c", quote, scapedBkSlash, quote);
    String compValue = String.format("%s %s %cu%s", scapedQuote, scapedBkSlash, backslash, rnd);
    // => and name.familyName eq ""\ \\ \\uWXYZ"
    filter += String.format(" and name.familyName eq %c%s%c", quote, compValue, quote);
    String customFirst = String.format("%s:%s", USER_EXT_SCHEMA_ID, "scimCustomFirst");
    filter += String.format(" and %s eq %c%s%c", customFirst, quote, scapedQuote, quote);
    SearchRequest sr = new SearchRequest();
    sr.setFilter(filter);
    sr.setCount(1);
    sr.setAttributes("name, " + customFirst);
    response = client.searchUsersPost(sr);
    user = (UserResource) response.readEntity(ListResponse.class).getResources().get(0);
    assertEquals(name.getGivenName(), user.getName().getGivenName());
    assertEquals(name.getMiddleName(), user.getName().getMiddleName());
    assertEquals(name.getFamilyName(), user.getName().getFamilyName());
    // Verify the unicode character is intact
    compValue = user.getName().getFamilyName();
    // pick the last char
    compValue = compValue.substring(compValue.length() - 1);
    assertEquals(unicodeStr, compValue);
}
Also used : Response(javax.ws.rs.core.Response) ListResponse(io.jans.scim.model.scim2.ListResponse) SearchRequest(io.jans.scim.model.scim2.SearchRequest) CustomAttributes(io.jans.scim.model.scim2.CustomAttributes) Name(io.jans.scim.model.scim2.user.Name) UserBaseTest(io.jans.scim2.client.UserBaseTest) Test(org.testng.annotations.Test) SkipTest(io.jans.scim2.listener.SkipTest) SkipTest(io.jans.scim2.listener.SkipTest)

Example 7 with CustomAttributes

use of io.jans.scim.model.scim2.CustomAttributes in project jans by JanssenProject.

the class QueryParamCreateUpdateTest method update1.

@Test(dependsOnMethods = "create2")
public void update1() throws Exception {
    // Change some attributes existing in user object
    UserResource cheapClone = getDeepCloneUsr(user);
    cheapClone.getName().setGivenName("Bavara");
    cheapClone.setNickName("Cloned");
    String rndString = Double.toString(Math.random());
    // For help on usage of io.jans.scim.model.scim2.CustomAttributes class, read its api docs (oxtrust-scim maven project)
    CustomAttributes custAttrs = cheapClone.getCustomAttributes(USER_EXT_SCHEMA_ID);
    custAttrs.setAttribute("scimCustomFirst", rndString);
    String include = "userName, name.givenName, nickName, urn:ietf:params:scim:schemas:extension:gluu:2.0:User:scimCustomFirst";
    Response response = client.updateUser(cheapClone, cheapClone.getId(), include, null);
    assertEquals(response.getStatus(), OK.getStatusCode());
    user = response.readEntity(usrClass);
    assertNull(user.getDisplayName());
    assertEquals(user.getName().getGivenName(), cheapClone.getName().getGivenName());
    assertEquals(user.getNickName(), cheapClone.getNickName());
    custAttrs = user.getCustomAttributes(USER_EXT_SCHEMA_ID);
    assertNull(custAttrs.getValues("scimCustomSecond", Date.class));
    assertNull(custAttrs.getValue("scimCustomThird", Integer.class));
    assertEquals(custAttrs.getValue("scimCustomFirst", String.class), rndString);
}
Also used : Response(javax.ws.rs.core.Response) CustomAttributes(io.jans.scim.model.scim2.CustomAttributes) UserResource(io.jans.scim.model.scim2.user.UserResource) Date(java.util.Date) UserBaseTest(io.jans.scim2.client.UserBaseTest) Test(org.testng.annotations.Test)

Aggregations

CustomAttributes (io.jans.scim.model.scim2.CustomAttributes)7 UserBaseTest (io.jans.scim2.client.UserBaseTest)6 Test (org.testng.annotations.Test)6 Response (javax.ws.rs.core.Response)5 UserResource (io.jans.scim.model.scim2.user.UserResource)4 SkipTest (io.jans.scim2.listener.SkipTest)3 Parameters (org.testng.annotations.Parameters)3 ListResponse (io.jans.scim.model.scim2.ListResponse)2 Date (java.util.Date)2 SearchRequest (io.jans.scim.model.scim2.SearchRequest)1 PatchOperation (io.jans.scim.model.scim2.patch.PatchOperation)1 PatchRequest (io.jans.scim.model.scim2.patch.PatchRequest)1 Name (io.jans.scim.model.scim2.user.Name)1 PhoneNumber (io.jans.scim.model.scim2.user.PhoneNumber)1 Optional (java.util.Optional)1