use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test212AddingDeeplyNestedEmbeddedContainer.
@Test
public void test212AddingDeeplyNestedEmbeddedContainer() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
given("delta adding whole credential/password container user 1");
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(FocusType.F_CREDENTIALS, CredentialsType.F_PASSWORD).replace(new PasswordType(prismContext).metadata(new MetadataType(prismContext).modifyTimestamp(MiscUtil.asXMLGregorianCalendar(1L)))).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 user = repositoryService.getObject(UserType.class, user1Oid, null, result).asObjectable();
assertThat(user.getVersion()).isEqualTo(String.valueOf(originalRow.version + 1));
assertThat(user.getCredentials().getPassword().getMetadata().getModifyTimestamp().getMillisecond()).isEqualTo(1);
and("externalized column is updated");
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
// not set, left as null
assertThat(row.passwordCreateTimestamp).isNull();
assertThat(row.passwordModifyTimestamp).isEqualTo(Instant.ofEpochMilli(1));
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test301ReplaceItemUnderMultiValueAssignment.
@Test
public void test301ReplaceItemUnderMultiValueAssignment() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
given("delta replacing single-value item inside assignment for user 1");
QAssignment<?> a = QAssignmentMapping.getAssignmentMapping().defaultAlias();
MAssignment origAssignmentRow = selectOne(a, a.ownerOid.eq(UUID.fromString(user1Oid)));
// wasn't previously set
assertThat(origAssignmentRow.orderValue).isNull();
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_ASSIGNMENT, origAssignmentRow.cid, AssignmentType.F_ORDER).replace(47).asObjectDelta(user1Oid);
when("modifyObject is called");
MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
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).isNotNull();
assertThat(assignments.get(0).getOrder()).isEqualTo(47);
and("assignment row is updated properly");
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
MAssignment aRow = selectOne(a, a.ownerOid.eq(UUID.fromString(user1Oid)));
// CID should not change
assertThat(aRow.cid).isEqualTo(origAssignmentRow.cid);
assertThat(aRow.orderValue).isEqualTo(47);
// target ref is still present
assertThat(aRow.targetRefTargetOid).isNotNull();
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test181AddingAndDeletingSubtypeValuesSetsArrayColumn.
@Test
public void test181AddingAndDeletingSubtypeValuesSetsArrayColumn() throws Exception {
OperationResult result = createOperationResult();
given("delta for subtypes with both delete and add values");
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_SUBTYPE).delete("subtype-2", "wrong").add("subtype-3", "subtype-4").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 and has expected subtypes");
UserType userObject = repositoryService.getObject(UserType.class, user1Oid, null, result).asObjectable();
assertThat(userObject.getSubtype()).containsExactlyInAnyOrder("subtype-1", "subtype-3", "subtype-4");
and("column with subtypes is updated");
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.subtypes).containsExactlyInAnyOrder("subtype-1", "subtype-3", "subtype-4");
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test103StringReplacePreviousNullValueIsOk.
@Test
public void test103StringReplacePreviousNullValueIsOk() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
given("delta with email change for user 1 using property replace modification");
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_EMAIL_ADDRESS).replace("newer@email.com").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.getEmailAddress()).isEqualTo("newer@email.com");
and("externalized column is set to NULL");
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.emailAddress).isEqualTo("newer@email.com");
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test186AddingAndDeletingAssignmentPolicySituations.
@Test
public void test186AddingAndDeletingAssignmentPolicySituations() throws Exception {
OperationResult result = createOperationResult();
MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
long assignmentId = originalRow.containerIdSeq - 1;
given("delta both adding and deleting assignment's policy situations");
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_ASSIGNMENT, assignmentId, AssignmentType.F_POLICY_SITUATION).delete("policy-situation-2", "wrong").add("policy-situation-3").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.getAssignment().get(0).getPolicySituation()).containsExactlyInAnyOrder("policy-situation-1", "policy-situation-3");
and("column with subtypes is updated accordingly");
QAssignment<?> a = QAssignmentMapping.getAssignmentMapping().defaultAlias();
MAssignment aRow = selectOne(a, a.ownerOid.eq(UUID.fromString(user1Oid)));
assertThat(aRow.policySituations).extracting(uriId -> cachedUriById(uriId)).containsExactlyInAnyOrder("policy-situation-1", "policy-situation-3");
}
Aggregations