private void recordError(OperationResult objectResult, PrismObject<? extends ObjectType> object, String errorLabel, Exception e) { String objectLabel = object != null && object.getName() != null ? object.asObjectable().getClass().getSimpleName() + " \"" + object.getName().getOrig() + "\"" : "object"; // We intentionally do NOT record the exception here, because it could override our message with the localizable // one it (potentially) carries. And we really want to show the following message as it contains the name of the object // that couldn't be imported. We hope the exception is recorded in some inner result. objectResult.recordFatalError("Import of " + objectLabel + " failed: " + errorLabel + ": " + e.getMessage()); LOGGER.error("Import of object {} failed: {}: {}", object, errorLabel, e.getMessage(), e); }
private void checkNamesArePresent(Collection<ObjectDeltaOperation<? extends ObjectType>> deltas, PrismObject<? extends ObjectType> primaryObject) { if (primaryObject != null) { for (ObjectDeltaOperation<? extends ObjectType> delta : deltas) { if (delta.getObjectName() == null) { delta.setObjectName(primaryObject.getName()); } } } }
public PrismObjectAsserter<O,RA> assertName() { assertNotNull("No name in "+desc(), getObject().getName()); return this; }
public PrismObjectAsserter<O,RA> assertName(String expectedOrig) { PrismAsserts.assertEqualsPolyString("Wrong name in "+desc(), expectedOrig, getObject().getName()); return this; }
@NotNull public String getResourceName() { PolyString name = dotModel.getDataModel().getResource(dataItem.getResourceOid()).getName(); return name != null ? name.getOrig() : dataItem.getResourceOid(); }
public static PolyStringType getName(ObjectReferenceType ref) { if (ref == null) { return null; } else if (ref.asReferenceValue().getObject() != null && ref.asReferenceValue().getObject().getName() != null) { return new PolyStringType(ref.asReferenceValue().getObject().getName()); } else { return ref.getTargetName(); } }
private void assertTargetPath(EvaluatedAssignmentImpl<UserType> evaluatedAssignment, String targetName, String expectedPath) { EvaluatedAssignmentTargetImpl target = evaluatedAssignment.getRoles().getAllValues().stream() .filter(tgt -> targetName.equals(tgt.getTarget().getName().getOrig())) .findFirst().orElseThrow(() -> new AssertionError("Target " + targetName + " is not present")); String realPath = getStringRepresentation(target.getAssignmentPath()); System.out.println("Path for " + targetName + " is: " + realPath); assertEquals("Wrong evaluation order for " + targetName, expectedPath, realPath); }
private void assertTargets(String type, Collection<EvaluatedAssignmentTargetImpl> targets, Boolean evaluateConstructions, List<String> expectedValid, List<String> expectedInvalid) { targets = CollectionUtils.emptyIfNull(targets); Collection<EvaluatedAssignmentTargetImpl> realValid = targets.stream() .filter(t -> t.isValid() && matchesConstructions(t, evaluateConstructions)).collect(Collectors.toList()); Collection<EvaluatedAssignmentTargetImpl> realInvalid = targets.stream() .filter(t -> !t.isValid() && matchesConstructions(t, evaluateConstructions)).collect(Collectors.toList()); String ec = evaluateConstructions != null ? " (evaluateConstructions: " + evaluateConstructions + ")" : ""; assertUnsortedListsEquals("Wrong valid targets in " + type + " set" + ec, expectedValid, realValid, t -> t.getTarget().getName().getOrig()); assertUnsortedListsEquals("Wrong invalid targets in " + type + " set" + ec, expectedInvalid, realInvalid, t -> t.getTarget().getName().getOrig()); }
public static <O extends ObjectType> ObjectReferenceType createObjectReference(PrismObject<O> object, Class<? extends ObjectType> implicitReferenceTargetType) { ObjectReferenceType ref = new ObjectReferenceType(); ref.setOid(object.getOid()); if (implicitReferenceTargetType == null || !implicitReferenceTargetType.equals(object.getCompileTimeClass())) { ref.setType(ObjectTypes.getObjectType(object.getCompileTimeClass()).getTypeQName()); } ref.setTargetName(PolyString.toPolyStringType(object.getName())); return ref; }
@Test public void emptyRoleTypeSearchTest() throws Exception { ObjectQuery query = prismContext.queryFor(RoleType.class) .item(RoleType.F_ROLE_TYPE).isNull() .build(); OperationResult result = new OperationResult("search"); List<PrismObject<RoleType>> roles = repositoryService.searchObjects(RoleType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find two roles", 2, roles.size()); int judge = roles.get(0).getName().getOrig().startsWith("J") ? 0 : 1; assertEquals("Wrong role1 name", "Judge", roles.get(judge).getName().getOrig()); assertEquals("Wrong role2 name", "Admin-owned role", roles.get(1-judge).getName().getOrig()); }
private NameImpl createSceneName(PrismObject<? extends ObjectType> object) { NameImpl name = new NameImpl(object.getName() != null ? getOrig(object.getName()) : object.getOid()); name.setId(object.getOid()); ObjectType objectType = object.asObjectable(); name.setDescription(objectType.getDescription()); if (objectType instanceof UserType) { name.setDisplayName(getOrig(((UserType) objectType).getFullName())); } else if (objectType instanceof AbstractRoleType) { name.setDisplayName(getOrig(((AbstractRoleType) objectType).getDisplayName())); } name.setNamesAreResourceKeys(false); return name; }
@Test public void notBusinessRoleTypeSearchTest() throws Exception { ObjectQuery query = prismContext.queryFor(RoleType.class) .not().item(RoleType.F_ROLE_TYPE).eq("business") .build(); OperationResult result = new OperationResult("search"); List<PrismObject<RoleType>> roles = repositoryService.searchObjects(RoleType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find two roles", 2, roles.size()); int judge = roles.get(0).getName().getOrig().startsWith("J") ? 0 : 1; assertEquals("Wrong role1 name", "Judge", roles.get(judge).getName().getOrig()); assertEquals("Wrong role2 name", "Admin-owned role", roles.get(1-judge).getName().getOrig()); }
@Test public void orgAssignmentSearchTestByOid() throws Exception { ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref("00000000-8888-6666-0000-100000000085") .build(); OperationResult result = new OperationResult("search"); List<PrismObject<UserType>> users = repositoryService.searchObjects(UserType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one user", 1, users.size()); assertEquals("Wrong user name", "atestuserX00002", users.get(0).getName().getOrig()); System.out.println("Found user:\n" + users.get(0).debugDump()); }
@SuppressWarnings("unused") private void dumpAccountAndGroups(PrismObject<UserType> user, String dummyResourceName) throws ConflictException, SchemaViolationException, FileNotFoundException, ConnectException, InterruptedException { String userName = user.getName().getOrig(); DummyAccount dummyAccount = getDummyAccount(dummyResourceName, userName); display("dummy account: " + dummyResourceName, dummyAccount); List<DummyGroup> groups = getGroupsForUser(dummyResourceName, userName); display("dummy account groups: " + dummyResourceName, groups); }
@Test public void businessRoleTypeSearchTest() throws Exception { ObjectQuery query = prismContext.queryFor(RoleType.class) .item(RoleType.F_ROLE_TYPE).eq("business") .build(); OperationResult result = new OperationResult("search"); List<PrismObject<RoleType>> roles = repositoryService.searchObjects(RoleType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one role", 1, roles.size()); assertEquals("Wrong role name", "Pirate", roles.get(0).getName().getOrig()); }
@Test public void nonEmptyRoleTypeSearchTest() throws Exception { ObjectQuery query = prismContext.queryFor(RoleType.class) .not().item(RoleType.F_ROLE_TYPE).isNull() .build(); OperationResult result = new OperationResult("search"); List<PrismObject<RoleType>> roles = repositoryService.searchObjects(RoleType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one role", 1, roles.size()); assertEquals("Wrong role name", "Pirate", roles.get(0).getName().getOrig()); }
private void checkGroupPirates(PrismObject<ShadowType> shadow, OperationResult result) throws SchemaException { checkGroupShadow(shadow, result); PrismAsserts.assertEqualsPolyString("Name not equal.", transformNameFromResource(GROUP_PIRATES_NAME), shadow.getName()); assertEquals("Wrong kind (provisioning)", ShadowKindType.ENTITLEMENT, shadow.asObjectable().getKind()); assertAttribute(shadow, DummyResourceContoller.DUMMY_GROUP_ATTRIBUTE_DESCRIPTION, "Scurvy pirates"); Collection<ResourceAttribute<?>> attributes = ShadowUtil.getAttributes(shadow); assertEquals("Unexpected number of attributes", 3, attributes.size()); assertNull("The _PASSSWORD_ attribute sneaked into shadow", ShadowUtil.getAttributeValues( shadow, new QName(SchemaConstants.NS_ICF_SCHEMA, "password"))); }
@Test public void roleAssignmentSearchTest() throws Exception { PrismReferenceValue r456 = itemFactory().createReferenceValue("r123", RoleType.COMPLEX_TYPE); ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref(r456) .build(); OperationResult result = new OperationResult("search"); List<PrismObject<UserType>> users = repositoryService.searchObjects(UserType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one user", 1, users.size()); assertEquals("Wrong user name", "atestuserX00002", users.get(0).getName().getOrig()); }
@Test public void orgAssignmentSearchTestNoTargetType() throws Exception { PrismReferenceValue org = itemFactory().createReferenceValue("00000000-8888-6666-0000-100000000085", null); ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref(org) .build(); OperationResult result = new OperationResult("search"); List<PrismObject<UserType>> users = repositoryService.searchObjects(UserType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one user", 1, users.size()); assertEquals("Wrong user name", "atestuserX00002", users.get(0).getName().getOrig()); }
@Test public void orgAssignmentSearchTest() throws Exception { PrismReferenceValue org = itemFactory().createReferenceValue("00000000-8888-6666-0000-100000000085", OrgType.COMPLEX_TYPE); ObjectQuery query = prismContext.queryFor(UserType.class) .item(UserType.F_ASSIGNMENT, AssignmentType.F_TARGET_REF).ref(org) .build(); OperationResult result = new OperationResult("search"); List<PrismObject<UserType>> users = repositoryService.searchObjects(UserType.class, query, null, result); result.recomputeStatus(); assertTrue(result.isSuccess()); assertEquals("Should find one user", 1, users.size()); assertEquals("Wrong user name", "atestuserX00002", users.get(0).getName().getOrig()); }