use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test825User.
@Test
public void test825User() throws Exception {
OperationResult result = createOperationResult();
given("user object");
String objectName = "user" + getTestNumber();
UserType user = new UserType(prismContext).name(objectName).additionalName("additional-name").employeeNumber("3").familyName("family-name").fullName("full-name").givenName("given-name").honorificPrefix("honorific-prefix").honorificSuffix("honorific-suffix").nickName("nick-name").title("title").organization("org-1").organization("org-2").organizationalUnit("ou-1").organizationalUnit("ou-2");
when("adding it to the repository");
repositoryService.addObject(user.asPrismObject(), null, result);
then("it is stored and relevant attributes are in columns");
assertThatOperationResult(result).isSuccess();
UUID userOid = UUID.fromString(user.getOid());
MUser row = selectObjectByOid(QUser.class, userOid);
// all attributes from MUser
assertThat(row.additionalNameOrig).isEqualTo("additional-name");
assertThat(row.additionalNameNorm).isEqualTo("additionalname");
assertThat(row.employeeNumber).isEqualTo("3");
assertThat(row.familyNameOrig).isEqualTo("family-name");
assertThat(row.familyNameNorm).isEqualTo("familyname");
assertThat(row.fullNameOrig).isEqualTo("full-name");
assertThat(row.fullNameNorm).isEqualTo("fullname");
assertThat(row.givenNameOrig).isEqualTo("given-name");
assertThat(row.givenNameNorm).isEqualTo("givenname");
assertThat(row.honorificPrefixOrig).isEqualTo("honorific-prefix");
assertThat(row.honorificPrefixNorm).isEqualTo("honorificprefix");
assertThat(row.honorificSuffixOrig).isEqualTo("honorific-suffix");
assertThat(row.honorificSuffixNorm).isEqualTo("honorificsuffix");
assertThat(row.nickNameOrig).isEqualTo("nick-name");
assertThat(row.nickNameNorm).isEqualTo("nickname");
assertThat(row.titleOrig).isEqualTo("title");
assertThat(row.titleNorm).isEqualTo("title");
assertThat(row.organizations).isNotNull();
assertThat(Jsonb.toList(row.organizations)).containsExactlyInAnyOrder(Map.of("o", "org-1", "n", "org1"), Map.of("o", "org-2", "n", "org2"));
assertThat(row.organizationUnits).isNotNull();
assertThat(Jsonb.toList(row.organizationUnits)).containsExactlyInAnyOrder(Map.of("o", "ou-1", "n", "ou1"), Map.of("o", "ou-2", "n", "ou2"));
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test111AddWithOverwriteOption.
@Test
public void test111AddWithOverwriteOption() throws ObjectAlreadyExistsException, SchemaException {
OperationResult result = createOperationResult();
given("user already in the repository");
long baseCount = count(QUser.class);
String userName = "user" + getTestNumber();
UserType userType = new UserType(prismContext).name(userName);
repositoryService.addObject(userType.asPrismObject(), null, result);
assertThat(count(QUser.class)).isEqualTo(baseCount + 1);
when("adding it to the repository again with overwrite option");
userType.setFullName(PolyStringType.fromOrig("Overwritten User"));
// should be ignored
userType.setVersion("5");
repositoryService.addObject(userType.asPrismObject(), createOverwrite(), result);
then("operation is successful");
assertThatOperationResult(result).isSuccess();
and("existing user row is modified/overwritten");
// no change in count
assertThat(count(QUser.class)).isEqualTo(baseCount + 1);
MUser row = selectObjectByOid(QUser.class, userType.getOid());
assertThat(row.fullNameOrig).isEqualTo("Overwritten User");
and("provided version for overwrite is ignored");
assertThat(row.version).isEqualTo(SqaleRepositoryService.INITIAL_VERSION_NUMBER + 1);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoSmokeTest method test900WorkingWithPgArraysJsonbAndBytea.
// region low-level tests
/**
* This tests our type mapper/converter classes and related column mapping.
*/
@Test
public void test900WorkingWithPgArraysJsonbAndBytea() {
QUser u = aliasFor(QUser.class);
MUser user = new MUser();
String userName = "user" + getTestNumber();
setName(user, userName);
user.policySituations = new Integer[] { 1, 2 };
user.subtypes = new String[] { "subtype1", "subtype2" };
// more whitespaces/lines
user.ext = new Jsonb("{\"key\" : \"value\",\n\"number\": 47} ");
user.photo = new byte[] { 0, 1, 0, 1 };
try (JdbcSession jdbcSession = startTransaction()) {
jdbcSession.newInsert(u).populate(user).execute();
jdbcSession.commit();
}
MUser row = selectOne(u, u.nameNorm.eq(userName));
assertThat(row.policySituations).contains(1, 2);
assertThat(row.subtypes).contains("subtype1", "subtype2");
// normalized
assertThat(row.ext.value).isEqualTo("{\"key\": \"value\", \"number\": 47}");
// byte[] is used for fullObject, there is no chance to miss a problem with it
assertThat(row.photo).hasSize(4);
// setting NULLs
try (JdbcSession jdbcSession = startTransaction()) {
jdbcSession.newUpdate(u).setNull(u.policySituations).set(u.subtypes, // this should do the same
(String[]) null).setNull(u.ext).setNull(u.photo).where(u.oid.eq(row.oid)).execute();
jdbcSession.commit();
}
row = selectOne(u, u.nameNorm.eq(userName));
assertThat(row.policySituations).isNull();
assertThat(row.subtypes).isNull();
assertThat(row.ext).isNull();
// but we never set fullObject to null, so this is a good test for doing so with byte[]
assertThat(row.photo).isNull();
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoSmokeTest method test221PhotoPersistenceModify.
@Test
public void test221PhotoPersistenceModify() throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException {
OperationResult result = createOperationResult();
given("user without photo");
UserType user = new UserType(prismContext).name("user" + getTestNumber());
String userOid = repositoryService.addObject(user.asPrismObject(), null, result);
when("photo is added for the user");
// noinspection PrimitiveArrayArgumentToVarargsMethod
repositoryService.modifyObject(UserType.class, userOid, prismContext.deltaFor(UserType.class).item(UserType.F_JPEG_PHOTO).add(new byte[] { 0, 1, 2 }).asObjectDelta(userOid).getModifications(), result);
assertThatOperationResult(result).isSuccess();
then("photo is stored in row, but not in fullObject");
MUser row = selectObjectByOid(QUser.class, UUID.fromString(userOid));
assertThat(row.photo).isEqualTo(new byte[] { 0, 1, 2 });
UserType fullObjectUser = parseFullObject(row.fullObject);
assertThat(fullObjectUser.getJpegPhoto()).isNull();
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test110AddWithoutOidIgnoresOverwriteOption.
@Test
public void test110AddWithoutOidIgnoresOverwriteOption() throws ObjectAlreadyExistsException, SchemaException {
OperationResult result = createOperationResult();
given("user with a name but without OID");
String userName = "user" + getTestNumber();
UserType userType = new UserType(prismContext).name(userName);
when("adding it to the repository with overwrite option");
repositoryService.addObject(userType.asPrismObject(), createOverwrite(), result);
then("operation is successful and user row for it is created, overwrite is meaningless");
assertThatOperationResult(result).isSuccess();
QUser u = aliasFor(QUser.class);
List<MUser> users = select(u, u.nameOrig.eq(userName));
assertThat(users).hasSize(1);
assertThat(users.get(0).oid).isNotNull();
}
Aggregations