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);
}
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);
}
Aggregations