protected WorkItemType getWorkItem(Task task, OperationResult result) throws SchemaException, SecurityViolationException, ConfigurationException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException { //Collection<SelectorOptions<GetOperationOptions>> options = GetOperationOptions.resolveItemsNamed(WorkItemType.F_TASK_REF); SearchResultList<WorkItemType> itemsAll = modelService.searchContainers(WorkItemType.class, null, null, task, result); if (itemsAll.size() != 1) { System.out.println("Unexpected # of work items: " + itemsAll.size()); for (WorkItemType workItem : itemsAll) { System.out.println(PrismUtil.serializeQuietly(prismContext, workItem)); } } assertEquals("Wrong # of total work items", 1, itemsAll.size()); return itemsAll.get(0); }
private void checkResult(Class<? extends ObjectType> queryClass, Class<? extends ObjectType> realClass, String oid, ObjectQuery query, String[] names) throws SchemaException { OperationResult result = new OperationResult("search"); SearchResultList<? extends PrismObject<? extends ObjectType>> objects = repositoryService.searchObjects(queryClass, query, null, result); System.out.println(realClass.getSimpleName() + " owned by " + oid + ": " + objects.size()); assertEquals("Wrong # of found objects", names.length, objects.size()); Set<String> expectedNames = new HashSet<>(Arrays.asList(names)); Set<String> realNames = new HashSet<>(); for (PrismObject<? extends ObjectType> object : objects) { realNames.add(object.asObjectable().getName().getOrig()); } assertEquals("Wrong names of found objects", expectedNames, realNames); }
@Test public void test100SearchCases() throws Exception { final String TEST_NAME = "test100CreateCase"; Task task = taskManager.createTaskInstance(TEST_NAME); OperationResult result = task.getResult(); login(userAdministrator); SearchResultList<PrismObject<CaseType>> cases = controller.searchObjects(CaseType.class, null, null, task, result); assertEquals(3, cases.size()); SearchResultList<CaseWorkItemType> workItems = controller.searchContainers(CaseWorkItemType.class, null, null, task, result); assertEquals(4, workItems.size()); }
@Test public void test020ResourcesSanity() throws Exception { final String TEST_NAME = "test020ResourcesSanity"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); SearchResultList<PrismObject<ResourceType>> resources = repositoryService.searchObjects(ResourceType.class, null, null, result); display("Resources", resources.size() + ": " + resources); assertEquals("Unexpected number of resources", 3, resources.size()); ObjectQuery query = prismContext.queryFor(ResourceType.class) .item("extension","provisioning").eq("propagated") .build(); SearchResultList<PrismObject<ResourceType>> propagatedResources = repositoryService.searchObjects(ResourceType.class, query, null, result); display("Propagated resources", propagatedResources.size() + ": " + propagatedResources); assertEquals("Unexpected number of propagated resources", 1, propagatedResources.size()); }
private void executeFilter(ObjectFilter filter, int expectedNumberOfResults, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException { ObjectQuery query = prismContext.queryFactory().createQuery(filter); SearchResultList<PrismObject<UserType>> objects = modelService.searchObjects(UserType.class, query, null, task, result); display("Found objects", objects); assertEquals("Wrong number of results (found: "+objects+")", expectedNumberOfResults, objects.size()); }
@Test public void test300SearchByAssignee() throws Exception { final String TEST_NAME = "test210SearchByAssignee"; TestUtil.displayTestTitle(this, TEST_NAME); login(userAdministrator); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); List<PrismReferenceValue> assigneeRefs = new ArrayList<>(); assigneeRefs.add(prv("oid-number-1")); assigneeRefs.add(prv(userLead1Oid)); assigneeRefs.add(prv("oid-number-3")); assigneeRefs.add(prv("oid-number-4")); assigneeRefs.add(prv("oid-number-5")); assigneeRefs.add(prv("oid-number-6")); ObjectQuery query = prismContext.queryFor(WorkItemType.class) .item(WorkItemType.F_ASSIGNEE_REF).ref(assigneeRefs) .build(); SearchResultList<WorkItemType> items = modelService .searchContainers(WorkItemType.class, query, null, task, result); assertEquals("Wrong # of work items found using multi-assignee/multi-delegate query", 1, items.size()); }
@Test public void test600SearchAllDummyAccounts() throws Exception { final String TEST_NAME = "test600SearchAllDummyAccounts"; displayTestTitle(TEST_NAME); // GIVEN loginAdministrator(); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_DUMMY_OID, new QName(RESOURCE_DUMMY_NAMESPACE, "AccountObjectClass"), prismContext); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = modelService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); display("Found", objects); assertEquals("Wrong number of objects found", 17, objects.size()); }
@Test public void test452ListLdapGroupsKindIntent() throws Exception { final String TEST_NAME = "test452ListLdapGroupsKindIntent"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndKindIntent(RESOURCE_OPENDJ_OID, ShadowKindType.ENTITLEMENT, "ldapGroup", prismContext); display("query", query); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); display("found objects", objects); result.computeStatus(); TestUtil.assertSuccess(result); assertEquals("Wrong number of objects found", 5, objects.size()); assertShadows(21); }
@Test public void test457ListLdapGroupsKindIntent() throws Exception { final String TEST_NAME = "test457ListLdapGroupsKindIntent"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndKindIntent(RESOURCE_OPENDJ_OID, ShadowKindType.ENTITLEMENT, "ldapGroup", prismContext); display("query", query); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); display("found objects", objects); result.computeStatus(); TestUtil.assertSuccess(result); assertEquals("Wrong number of objects found", 5, objects.size()); assertShadows(23); }
@Test public void test450ListGroupsObjectclass() throws Exception { final String TEST_NAME = "test450ListGroupsObjectclass"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_OPENDJ_OID, RESOURCE_OPENDJ_GROUP_OBJECTCLASS, prismContext); display("query", query); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); display("found objects", objects); result.computeStatus(); TestUtil.assertSuccess(result); assertEquals("Wrong number of objects found", 5, objects.size()); assertShadows(21); }
@Test public void test454ListSpecialGroupsKindIntent() throws Exception { final String TEST_NAME = "test454ListSpecialGroupsKindIntent"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndKindIntent(RESOURCE_OPENDJ_OID, ShadowKindType.ENTITLEMENT, "specialGroup", prismContext); display("query", query); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); display("found objects", objects); result.computeStatus(); TestUtil.assertSuccess(result); // Check that none of the normal LDAP groups appear here ... even if they have the same objectclass assertEquals("Wrong number of objects found", 0, objects.size()); // Discovered base context for specialgroups assertShadows(22); }
@Test public void test458ListSpecialGroupsKindIntent() throws Exception { final String TEST_NAME = "test458ListSpecialGroupsKindIntent"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndKindIntent(RESOURCE_OPENDJ_OID, ShadowKindType.ENTITLEMENT, "specialGroup", prismContext); display("query", query); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); display("found objects", objects); result.computeStatus(); TestUtil.assertSuccess(result); // Check that none of the normal LDAP groups appear here ... even if they have the same objectclass assertEquals("Wrong number of objects found", 1, objects.size()); // Discovered base context for specialgroups assertShadows(23); }
@Test public void test610SearchDummyAccountsNameSubstring() throws Exception { final String TEST_NAME = "test610SearchDummyAccountsNameSubstring"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassFilterPrefix(RESOURCE_DUMMY_OID, new QName(RESOURCE_DUMMY_NAMESPACE, "AccountObjectClass"), prismContext) .and().item(ItemPath.create(ShadowType.F_ATTRIBUTES, SchemaConstants.ICFS_NAME), ObjectFactory.createResourceAttributeDefinition(SchemaConstants.ICFS_NAME, DOMUtil.XSD_STRING, prismContext)) .contains("s") .build(); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> objects = modelService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); display("Found", objects); assertEquals("Wrong number of objects found", 6, objects.size()); }
@Test public void test155SearchDisabledAccounts() throws Exception { final String TEST_NAME = "test155SearchDisabledAccounts"; displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestDummy.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_DUMMY_OID, ProvisioningTestUtil.getDefaultAccountObjectClass(resourceType), prismContext); ObjectQueryUtil.filterAnd(query.getFilter(), prismContext.queryFor(ShadowType.class) .item(ShadowType.F_ACTIVATION, ActivationType.F_ADMINISTRATIVE_STATUS).eq(ActivationStatusType.DISABLED) .buildFilter(), prismContext); syncServiceMock.reset(); // WHEN SearchResultList<PrismObject<ShadowType>> resultList = provisioningService.searchObjects(ShadowType.class, query, null, null, result); // THEN result.computeStatus(); display(result); TestUtil.assertSuccess(result); assertEquals("Unexpected number of search results", 0, resultList.size()); assertSteadyResource(); }
@Test public void test163SearchLockedAccounts() throws Exception { final String TEST_NAME = "test163SearchLockedAccounts"; displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestDummy.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_DUMMY_OID, ProvisioningTestUtil.getDefaultAccountObjectClass(resourceType), prismContext); ObjectQueryUtil.filterAnd(query.getFilter(), prismContext.queryFor(ShadowType.class) .item(ShadowType.F_ACTIVATION, ActivationType.F_LOCKOUT_STATUS).eq(LockoutStatusType.LOCKED) .buildFilter(), prismContext); syncServiceMock.reset(); // WHEN SearchResultList<PrismObject<ShadowType>> resultList = provisioningService.searchObjects(ShadowType.class, query, null, null, result); // THEN result.computeStatus(); display(result); TestUtil.assertSuccess(result); assertEquals("Unexpected number of search results", 0, resultList.size()); assertSteadyResource(); }
@Test public void test160SearchLockedAccounts() throws Exception { final String TEST_NAME = "test160SearchLockedAccounts"; displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestDummy.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_DUMMY_OID, ProvisioningTestUtil.getDefaultAccountObjectClass(resourceType), prismContext); ObjectQueryUtil.filterAnd(query.getFilter(), prismContext.queryFor(ShadowType.class) .item(ShadowType.F_ACTIVATION, ActivationType.F_LOCKOUT_STATUS).eq(LockoutStatusType.LOCKED) .buildFilter(), prismContext); syncServiceMock.reset(); // WHEN SearchResultList<PrismObject<ShadowType>> resultList = provisioningService.searchObjects(ShadowType.class, query, null, null, result); // THEN result.computeStatus(); display(result); TestUtil.assertSuccess(result); assertEquals("Unexpected number of search results", 1, resultList.size()); PrismObject<ShadowType> shadow = resultList.get(0); display("Shadow", shadow); assertShadowLockout(shadow, LockoutStatusType.LOCKED); assertSteadyResource(); }
@Test public void test151SearchDisabledAccounts() throws Exception { final String TEST_NAME = "test151SearchDisabledAccounts"; displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestDummy.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_DUMMY_OID, ProvisioningTestUtil.getDefaultAccountObjectClass(resourceType), prismContext); ObjectQueryUtil.filterAnd(query.getFilter(), prismContext.queryFor(ShadowType.class) .item(ShadowType.F_ACTIVATION, ActivationType.F_ADMINISTRATIVE_STATUS).eq(ActivationStatusType.DISABLED) .buildFilter(), prismContext); syncServiceMock.reset(); // WHEN SearchResultList<PrismObject<ShadowType>> resultList = provisioningService.searchObjects(ShadowType.class, query, null, null, result); // THEN result.computeStatus(); display(result); TestUtil.assertSuccess(result); assertEquals("Unexpected number of search results", 1, resultList.size()); PrismObject<ShadowType> shadow = resultList.get(0); display("Shadow", shadow); assertActivationAdministrativeStatus(shadow, ActivationStatusType.DISABLED); assertSteadyResource(); }
@Test public void test010HireIndigo() throws Exception { final String TEST_NAME = "test010HireIndigo"; TestUtil.displayTestTitle(this, TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestAdHocCertification.class.getName() + "." + TEST_NAME); task.setOwner(userAdministrator.asPrismObject()); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); assignOrg(USER_INDIGO_OID, ORG_LABORATORY_OID, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); SearchResultList<PrismObject<AccessCertificationCampaignType>> campaigns = getAllCampaigns(result); assertEquals("Wrong # of campaigns", 1, campaigns.size()); AccessCertificationCampaignType campaign = campaigns.get(0).asObjectable(); campaign = getCampaignWithCases(campaign.getOid()); display("campaign", campaign); assertSanityAfterCampaignStart(campaign, assignmentCertificationDefinition, 1); // beware, maybe not all details would match (in the future) - then adapt this test assertPercentCompleteAll(campaign, 0, 0, 0); // no cases, no problems assertCasesCount(campaign.getOid(), 1); }
private PrismObject<ShadowType> getGroupShadow(DummyResourceContoller dummyResourceCtl, QName objectClass, String name, Task task, OperationResult result) throws Exception { PrismObject<ResourceType> resource = dummyResourceCtl.getResource(); ObjectClassComplexTypeDefinition groupDef = RefinedResourceSchema.getRefinedSchema(resource) .findObjectClassDefinition(dummyResourceCtl.getGroupObjectClass()); ResourceAttributeDefinition<Object> nameDef = groupDef.findAttributeDefinition(SchemaConstants.ICFS_NAME); assertNotNull("No icfs:name definition", nameDef); ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassFilterPrefix(resource.getOid(), objectClass, prismContext) .and().item(ItemPath.create(ShadowType.F_ATTRIBUTES, SchemaConstants.ICFS_NAME), nameDef).eq(name) .build(); SearchResultList<PrismObject<ShadowType>> shadows = modelService.searchObjects(ShadowType.class, query, null, task, result); assertEquals("Wrong # of results for " + name + " of " + objectClass + " at " + resource, 1, shadows.size()); return shadows.get(0); }
@Test public void test201SearchObjects() throws Exception { final String TEST_NAME = "test201SearchObjects"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ShadowType object = parseObjectType(ACCOUNT_SEARCH_FILE, ShadowType.class); display("New object", object); String addedObjectOid = provisioningService.addObject(object.asPrismObject(), null, null, taskManager.createTaskInstance(), result); assertEquals(ACCOUNT_SEARCH_OID, addedObjectOid); QueryType queryType = PrismTestUtil.parseAtomicValue(QUERY_ALL_ACCOUNTS_FILE, QueryType.COMPLEX_TYPE); ObjectQuery query = getQueryConverter().createObjectQuery(ShadowType.class, queryType); rememberCounter(InternalCounters.CONNECTOR_OPERATION_COUNT); rememberCounter(InternalCounters.CONNECTOR_SIMULATED_PAGING_SEARCH_COUNT); // WHEN SearchResultList<PrismObject<ShadowType>> searchResults = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN result.computeStatus(); assertSuccess(result); display("Search resutls", searchResults); assertEquals("Unexpected number of search results", 14, searchResults.size()); assertConnectorOperationIncrement(1, 29); assertCounterIncrement(InternalCounters.CONNECTOR_SIMULATED_PAGING_SEARCH_COUNT, 0); // SPR search. No estimate. assertApproxNumberOfAllResults(searchResults.getMetadata(), null); }