use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test120AddUserWithProvidedOidWorksOk.
@Test
public void test120AddUserWithProvidedOidWorksOk() throws ObjectAlreadyExistsException, SchemaException {
OperationResult result = createOperationResult();
given("user with provided OID");
UUID providedOid = UUID.randomUUID();
String userName = "user" + getTestNumber();
UserType userType = new UserType(prismContext).oid(providedOid.toString()).name(userName);
when("adding it to the repository");
repositoryService.addObject(userType.asPrismObject(), null, result);
then("operation is successful and user row with provided OID is created");
assertThatOperationResult(result).isSuccess();
QUser u = aliasFor(QUser.class);
List<MUser> users = select(u, u.nameOrig.eq(userName));
assertThat(users).hasSize(1);
MUser mUser = users.get(0);
assertThat(mUser.oid).isEqualTo(providedOid);
assertThat(mUser.version).isEqualTo(SqaleRepositoryService.INITIAL_VERSION_NUMBER);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test310AddObjectWithAssignmentExtensions.
@Test
public void test310AddObjectWithAssignmentExtensions() throws ObjectAlreadyExistsException, SchemaException {
OperationResult result = createOperationResult();
given("object with extension items in assignment");
String objectName = "user" + getTestNumber();
AssignmentType assignment = new AssignmentType(prismContext).extension(new ExtensionType(prismContext));
UserType object = new UserType(prismContext).name(objectName).assignment(assignment);
ExtensionType extensionContainer = assignment.getExtension();
addExtensionValue(extensionContainer, "string-mv", "string-value1", "string-value2");
addExtensionValue(extensionContainer, "integer", BigInteger.valueOf(1));
String targetOid = UUID.randomUUID().toString();
addExtensionValue(extensionContainer, "ref", ref(targetOid, UserType.COMPLEX_TYPE));
when("adding it to the repository");
String returnedOid = repositoryService.addObject(object.asPrismObject(), null, result);
then("operation is successful and assignment's ext column stores the values");
assertThatOperationResult(result).isSuccess();
assertThat(returnedOid).isEqualTo(object.getOid());
QAssignment<MUser> a = QAssignmentMapping.<MUser>getAssignmentMapping().defaultAlias();
MAssignment row = selectOne(a, a.ownerOid.eq(UUID.fromString(returnedOid)));
assertThat(row.ext).isNotNull();
assertThat(Jsonb.toMap(row.ext)).containsEntry(extensionKey(extensionContainer, "string-mv"), List.of("string-value1", "string-value2")).containsEntry(extensionKey(extensionContainer, "integer"), // returned as Integer
1).containsEntry(extensionKey(extensionContainer, "ref"), Map.of("o", targetOid, "t", MObjectType.USER.name(), "r", cachedUriId(SchemaConstants.ORG_DEFAULT)));
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test112AddWithOverwriteOptionWithNewOidActsLikeNormalAdd.
@Test
public void test112AddWithOverwriteOptionWithNewOidActsLikeNormalAdd() throws ObjectAlreadyExistsException, SchemaException {
OperationResult result = createOperationResult();
given("user with random OID is not in the repository");
long baseCount = count(QUser.class);
UUID oid = UUID.randomUUID();
assertThat(selectNullableObjectByOid(QUser.class, oid)).isNull();
when("adding it to the repository again with overwrite option");
String userName = "user" + getTestNumber();
UserType userType = new UserType(prismContext).oid(oid.toString()).name(userName).version("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());
and("provided version for overwrite is ignored");
assertThat(row.version).isEqualTo(SqaleRepositoryService.INITIAL_VERSION_NUMBER);
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test206AddObjectWithMultivalueRefsOnAssignment.
@Test
public void test206AddObjectWithMultivalueRefsOnAssignment() throws ObjectAlreadyExistsException, SchemaException {
OperationResult result = createOperationResult();
given("user with ref");
String userName = "user" + getTestNumber();
UUID approverRef1 = UUID.randomUUID();
UUID approverRef2 = UUID.randomUUID();
QName approverRelation = QName.valueOf("{https://random.org/ns}conn-rel");
UserType user = new UserType(prismContext).name(userName).assignment(new AssignmentType(prismContext).metadata(new MetadataType().createApproverRef(approverRef1.toString(), UserType.COMPLEX_TYPE, approverRelation).createApproverRef(approverRef2.toString(), UserType.COMPLEX_TYPE)));
when("adding it to the repository");
String oid = repositoryService.addObject(user.asPrismObject(), null, result);
then("object and its reference rows are created");
assertThatOperationResult(result).isSuccess();
MUser userRow = selectObjectByOid(QUser.class, oid);
assertThat(userRow.oid).isNotNull();
QAssignmentReference ar = QAssignmentReferenceMapping.getForAssignmentCreateApprover().defaultAlias();
List<MAssignmentReference> projectionRefs = select(ar, ar.ownerOid.eq(userRow.oid));
assertThat(projectionRefs).hasSize(2).allMatch(rRow -> rRow.referenceType == MReferenceType.ASSIGNMENT_CREATE_APPROVER).allMatch(rRow -> rRow.ownerOid.equals(userRow.oid)).allMatch(// there's just one container
rRow -> rRow.assignmentCid.equals(1L)).anyMatch(refRowMatcher(approverRef1, approverRelation));
}
use of com.evolveum.midpoint.repo.sqale.qmodel.focus.MUser in project midpoint by Evolveum.
the class SqaleRepoAddDeleteObjectTest method test302AddObjectWithExtensionItemOfNonIndexableType.
@Test
public void test302AddObjectWithExtensionItemOfNonIndexableType() throws ObjectAlreadyExistsException, SchemaException, ObjectNotFoundException {
OperationResult result = createOperationResult();
given("object with extension item of non-indexable type");
String objectName = "user" + getTestNumber();
UserType object = new UserType(prismContext).name(objectName).extension(new ExtensionType(prismContext));
ExtensionType extensionContainer = object.getExtension();
addExtensionValue(extensionContainer, "blob", "bytes".getBytes(StandardCharsets.UTF_8));
when("adding it to the repository");
String returnedOid = repositoryService.addObject(object.asPrismObject(), null, result);
then("operation is successful and ext column is null");
assertThatOperationResult(result).isSuccess();
assertThat(returnedOid).isEqualTo(object.getOid());
MUser row = selectObjectByOid(QUser.class, returnedOid);
assertThat(row.ext).isNull();
and("stored object contains the extension item");
PrismObject<UserType> storedObject = repositoryService.getObject(UserType.class, returnedOid, null, result);
assertThat(storedObject.getExtension().findItem(new ItemName("blob"))).isNotNull();
}
Aggregations