Search in sources :

Example 81 with MUser

use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.

the class SqaleRepoModifyObjectTest method test130ChangePolyStringAttribute.

@Test
public void test130ChangePolyStringAttribute() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
    OperationResult result = createOperationResult();
    given("delta with polystring nickname change for user 1");
    ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_NICK_NAME).add(new PolyString("nick-name")).asObjectDelta(user1Oid);
    and("user row previously having dead property empty (null)");
    MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
    assertThat(originalRow.nickNameOrig).isNull();
    assertThat(originalRow.nickNameNorm).isNull();
    when("modifyObject is called");
    repositoryService.modifyObject(UserType.class, user1Oid, delta.getModifications(), result);
    then("operation is successful");
    assertThatOperationResult(result).isSuccess();
    and("serialized form (fullObject) is updated");
    UserType userObject = repositoryService.getObject(UserType.class, user1Oid, null, result).asObjectable();
    assertThat(userObject.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
    PolyStringType nickName = userObject.getNickName();
    assertThat(nickName.getOrig()).isEqualTo("nick-name");
    assertThat(nickName.getNorm()).isEqualTo("nickname");
    and("externalized column is updated");
    MUser row = selectObjectByOid(QUser.class, user1Oid);
    assertThat(row.version).isEqualTo(originalRow.version + 1);
    assertThat(row.nickNameOrig).isEqualTo("nick-name");
    assertThat(row.nickNameNorm).isEqualTo("nickname");
}
Also used : PolyStringType(com.evolveum.prism.xml.ns._public.types_3.PolyStringType) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) 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 82 with MUser

use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.

the class SqaleRepoModifyObjectTest method test311DeleteAssignmentByCid.

@Test
public void test311DeleteAssignmentByCid() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
    OperationResult result = createOperationResult();
    MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
    QAssignment<?> a = QAssignmentMapping.getAssignmentMapping().defaultAlias();
    int origAssignmentCount = (int) count(a, a.ownerOid.eq(UUID.fromString(user1Oid)));
    given("delta deleting assignments using CID for user 1");
    ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_ASSIGNMENT).delete(new AssignmentType(prismContext).id(// last added assignment
    originalRow.containerIdSeq - 1)).asObjectDelta(user1Oid);
    when("modifyObject is called");
    repositoryService.modifyObject(UserType.class, user1Oid, delta.getModifications(), result);
    then("operation is successful");
    assertThatOperationResult(result).isSuccess();
    and("serialized form (fullObject) is updated");
    UserType userObject = repositoryService.getObject(UserType.class, user1Oid, null, result).asObjectable();
    assertThat(userObject.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
    List<AssignmentType> assignments = userObject.getAssignment();
    assertThat(assignments).hasSize(origAssignmentCount - 1).noneMatch(ass -> ass.getId().equals(originalRow.containerIdSeq - 1));
    and("new assignment row is created");
    MUser row = selectObjectByOid(QUser.class, user1Oid);
    assertThat(row.version).isEqualTo(originalRow.version + 1);
    // no need for change
    assertThat(row.containerIdSeq).isEqualTo(originalRow.containerIdSeq);
    List<MAssignment> aRows = select(a, a.ownerOid.eq(UUID.fromString(user1Oid)));
    assertThat(aRows).hasSize(assignments.size()).noneMatch(aRow -> aRow.cid.equals(originalRow.containerIdSeq - 1));
}
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)

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