Search in sources :

Example 31 with MUser

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"));
}
Also used : OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) UUID(java.util.UUID) MUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser) Test(org.testng.annotations.Test) SqaleRepoBaseTest(com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest)

Example 32 with MUser

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);
}
Also used : OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) MUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser) Test(org.testng.annotations.Test) SqaleRepoBaseTest(com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest)

Example 33 with MUser

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();
}
Also used : JdbcSession(com.evolveum.midpoint.repo.sqlbase.JdbcSession) QUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.QUser) Jsonb(com.evolveum.midpoint.repo.sqale.jsonb.Jsonb) MUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser) Test(org.testng.annotations.Test) SqaleRepoBaseTest(com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest)

Example 34 with MUser

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();
}
Also used : OperationResult(com.evolveum.midpoint.schema.result.OperationResult) MUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser) Test(org.testng.annotations.Test) SqaleRepoBaseTest(com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest)

Example 35 with MUser

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();
}
Also used : QUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.QUser) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) MUser(com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser) Test(org.testng.annotations.Test) SqaleRepoBaseTest(com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest)

Aggregations

SqaleRepoBaseTest (com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest)82 MUser (com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser)82 Test (org.testng.annotations.Test)82 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)81 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)36 QName (javax.xml.namespace.QName)30 QUser (com.evolveum.midpoint.repo.sqale.qmodel.focus.QUser)23 ItemName (com.evolveum.midpoint.prism.path.ItemName)21 PolyStringType (com.evolveum.prism.xml.ns._public.types_3.PolyStringType)21 BigDecimal (java.math.BigDecimal)21 Jsonb (com.evolveum.midpoint.repo.sqale.jsonb.Jsonb)20 JdbcSession (com.evolveum.midpoint.repo.sqlbase.JdbcSession)20 Instant (java.time.Instant)20 PrismObject (com.evolveum.midpoint.prism.PrismObject)19 RepositoryService (com.evolveum.midpoint.repo.api.RepositoryService)19 com.evolveum.midpoint.repo.sqale.qmodel.accesscert (com.evolveum.midpoint.repo.sqale.qmodel.accesscert)19 com.evolveum.midpoint.repo.sqale.qmodel.assignment (com.evolveum.midpoint.repo.sqale.qmodel.assignment)19 MContainerType (com.evolveum.midpoint.repo.sqale.qmodel.common.MContainerType)19 QConnector (com.evolveum.midpoint.repo.sqale.qmodel.connector.QConnector)19 MReference (com.evolveum.midpoint.repo.sqale.qmodel.ref.MReference)19