use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoSmokeTest method test220PhotoPersistenceAdd.
@Test
public void test220PhotoPersistenceAdd() throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException {
OperationResult result = createOperationResult();
when("user with photo is persisted");
UserType user = new UserType(prismContext).name("user" + getTestNumber()).jpegPhoto(new byte[] { 0, 1, 2 });
String userOid = repositoryService.addObject(user.asPrismObject(), null, 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();
and("user obtained without special options does not have the photo");
UserType userWithoutPhoto = repositoryService.getObject(UserType.class, userOid, null, result).asObjectable();
assertThat(userWithoutPhoto.getJpegPhoto()).isNull();
and("user obtained with options to fetch photo has the photo");
Collection<SelectorOptions<GetOperationOptions>> photoOptions = SchemaService.get().getOperationOptionsBuilder().item(FocusType.F_JPEG_PHOTO).retrieve().build();
UserType userWithPhoto = repositoryService.getObject(UserType.class, userOid, photoOptions, result).asObjectable();
assertThat(userWithPhoto.getJpegPhoto()).isEqualTo(new byte[] { 0, 1, 2 });
assertThat(userWithPhoto.asPrismObject().findProperty(FocusType.F_JPEG_PHOTO).isIncomplete()).isFalse();
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test991ChangeInsideNonPersistedContainerWorksOk.
@Test
public void test991ChangeInsideNonPersistedContainerWorksOk() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
given("delta with email change for user 1 using property add modification");
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_BEHAVIOR, BehaviorType.F_AUTHENTICATION, AuthenticationBehavioralDataType.F_FAILED_LOGINS).replace(5).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));
assertThat(userObject.getBehavior().getAuthentication().getFailedLogins()).isEqualTo(5);
and("externalized version is updated");
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test302AddingMoreAssignmentsIncludingNestedContainersAndRefs.
@Test
public void test302AddingMoreAssignmentsIncludingNestedContainersAndRefs() throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException {
OperationResult result = createOperationResult();
MUser originalRow = selectObjectByOid(QUser.class, user1Oid);
given("delta adding two more assignments for user 1");
UUID roleOid = UUID.randomUUID();
UUID resourceOid = UUID.randomUUID();
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(UserType.F_ASSIGNMENT).add(new AssignmentType(prismContext).targetRef(roleOid.toString(), RoleType.COMPLEX_TYPE).metadata(new MetadataType().createChannel("create-channel").createApproverRef(UUID.randomUUID().toString(), UserType.COMPLEX_TYPE).createApproverRef(UUID.randomUUID().toString(), UserType.COMPLEX_TYPE)).order(48), new AssignmentType(prismContext).construction(new ConstructionType().resourceRef(resourceOid.toString(), ResourceType.COMPLEX_TYPE)).order(49)).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(3).allMatch(a -> a.getId() != null && a.getId() < originalRow.containerIdSeq + 2);
and("new assignment rows are created");
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.version).isEqualTo(originalRow.version + 1);
assertThat(row.containerIdSeq).isEqualTo(originalRow.containerIdSeq + 2);
QAssignment<?> a = QAssignmentMapping.getAssignmentMapping().defaultAlias();
List<MAssignment> aRows = select(a, a.ownerOid.eq(UUID.fromString(user1Oid)));
assertThat(aRows).hasSize(3).anyMatch(// previous one
aRow -> aRow.cid < originalRow.containerIdSeq).anyMatch(aRow -> aRow.cid == row.containerIdSeq - 2 && aRow.orderValue == 48 && aRow.targetRefTargetOid.equals(roleOid) && cachedUriById(aRow.createChannelId).equals("create-channel")).anyMatch(aRow -> aRow.cid == row.containerIdSeq - 1 && aRow.resourceRefTargetOid.equals(resourceOid));
QAssignmentReference ar = QAssignmentReferenceMapping.getForAssignmentCreateApprover().defaultAlias();
List<MAssignmentReference> refRows = select(ar, ar.ownerOid.eq(UUID.fromString(user1Oid)).and(ar.assignmentCid.eq(row.containerIdSeq - 2)));
assertThat(refRows).hasSize(2).allMatch(rr -> rr.targetType == MObjectType.USER);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test800ModifyWithPositivePrecondition.
// endregion
// region precondition and modify dynamically
@Test
public void test800ModifyWithPositivePrecondition() throws Exception {
OperationResult result = createOperationResult();
given("delta adding int extension item");
ObjectDelta<UserType> delta = prismContext.deltaFor(UserType.class).item(FocusType.F_EMAIL_ADDRESS).replace(getTestNumber() + "@email.com").asObjectDelta(user1Oid);
when("modifyObject is called with positive precondition");
repositoryService.modifyObject(UserType.class, user1Oid, delta.getModifications(), // obviously true precondition, we want to use the object, not just return true
u -> u.asObjectable().getOid() != null, null, result);
then("operation is successful and modification is executed");
assertThatOperationResult(result).isSuccess();
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.emailAddress).isEqualTo(getTestNumber() + "@email.com");
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoModifyObjectTest method test810ModifyDynamically.
@Test
public void test810ModifyDynamically() throws Exception {
OperationResult result = createOperationResult();
when("modifyObjectDynamically is called");
repositoryService.modifyObjectDynamically(UserType.class, user1Oid, null, u -> prismContext.deltaFor(UserType.class).item(FocusType.F_EMAIL_ADDRESS).replace(getTestNumber() + "@email.com").asItemDeltas(), null, result);
then("operation is successful and modification is executed");
assertThatOperationResult(result).isSuccess();
MUser row = selectObjectByOid(QUser.class, user1Oid);
assertThat(row.emailAddress).isEqualTo(getTestNumber() + "@email.com");
}
Aggregations