/** * Avoid any smart processing of the data except for schema application. Do not synchronize the data, do not apply * any expressions, etc. */ public static Collection<SelectorOptions<GetOperationOptions>> createRawCollection() { return SelectorOptions.createCollection(createRaw()); }
protected <O extends ObjectType> void assertSearchRaw(Class<O> type, ObjectQuery query, int expectedResults) throws Exception { assertSearch(type, query, SelectorOptions.createCollection(GetOperationOptions.createRaw()), expectedResults); }
@Override protected Collection<PrismObject<? extends ObjectType>> searchObjects(Object query, Collection<SelectorOptions<GetOperationOptions>> options) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException{ return reportService.searchObjects((ObjectQuery) query, SelectorOptions.createCollection(GetOperationOptions.createRaw())); }
protected void assertReadAllowRaw(int expectedNumAllUsers) throws Exception { assertGetAllow(UserType.class, USER_JACK_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertGetAllow(UserType.class, USER_GUYBRUSH_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearch(UserType.class, null, SelectorOptions.createCollection(GetOperationOptions.createRaw()), expectedNumAllUsers); assertSearch(UserType.class, createNameQuery(USER_JACK_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw()), 1); assertSearch(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw()), 1); }
protected void assertReadDenyRaw() throws Exception { assertGetDeny(UserType.class, USER_JACK_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertGetDeny(UserType.class, USER_GUYBRUSH_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearchDeny(UserType.class, null, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearchDeny(UserType.class, createNameQuery(USER_JACK_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearchDeny(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw())); }
SelectorOptions.createCollection(GetOperationOptions.createRaw()); PrismObject<UserType> user = model.getObject(UserType.class, oid, options, task, parentResult);
results = searchObjects(query, SelectorOptions.createCollection(GetOperationOptions.createRaw())); return createDataSourceFromObjects(results); } else {
protected void assertReadDeny(int expectedNumAllUsers) throws Exception { assertGetDeny(UserType.class, USER_JACK_OID); assertGetDeny(UserType.class, USER_JACK_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertGetDeny(UserType.class, USER_GUYBRUSH_OID); assertGetDeny(UserType.class, USER_GUYBRUSH_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearch(UserType.class, null, expectedNumAllUsers); assertSearch(UserType.class, createNameQuery(USER_JACK_USERNAME), 0); assertSearch(UserType.class, createNameQuery(USER_JACK_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw()), 0); assertSearch(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), 0); assertSearch(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw()), 0); }
opts.add(new SelectorOptions(GetOperationOptions.createRaw()));
/** * Read guybrush again. * The operation should fail, because the raw mode itself does not allow raw data (except for some objects). * * TODO reconsider this eventually, and change the test */ @Test public void test522ShipReadBadRaw() throws Exception { final String TEST_NAME = "test522ShipReadBadRaw"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); dummyAuditService.clear(); // WHEN + THEN try { modelService.getObject(UserType.class, USER_GUYBRUSH_OID, SelectorOptions.createCollection(createRaw()), task, result); fail("unexpected success"); } catch (Throwable t) { System.out.println("Got expected exception: " + t); } }
private void assertDummyAccountShadows(int expected, boolean raw, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException, ExpressionEvaluationException { ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(RESOURCE_DUMMY_OID, new QName(RESOURCE_DUMMY_NAMESPACE, "AccountObjectClass"), prismContext); final MutableInt count = new MutableInt(0); ResultHandler<ShadowType> handler = (shadow, parentResult) -> { count.increment(); display("Found",shadow); return true; }; Collection<SelectorOptions<GetOperationOptions>> options = null; if (raw) { options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); } modelService.searchObjectsIterative(ShadowType.class, query, handler, options, task, result); assertEquals("Unexpected number of search results (raw="+raw+")", expected, count.getValue()); }
@Test public void test102GetAccountMurrayRaw() throws Exception { TestUtil.displayTestTitle(this, "test102GetAccountMurrayRaw"); // GIVEN Task task = taskManager.createTaskInstance(TestBrokenResources.class.getName() + ".test102GetAccountMurrayRaw"); OperationResult result = task.getResult(); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); // WHEN PrismObject<ShadowType> account = modelService.getObject(ShadowType.class, ACCOUNT_SHADOW_MURRAY_CSVFILE_OID, options, task, result); display("getObject account", account); result.computeStatus(); display("getObject result", result); TestUtil.assertSuccess("getObject result", result); // TODO: better asserts assertNotNull("Null resource", account); }
@Test public void test200GetResourceRawAfterSchema() throws Exception { final String TEST_NAME = "test200GetResourceRawAfterSchema"; displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestResources.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); assumeAssignmentPolicy(AssignmentPolicyEnforcementType.POSITIVE); IntegrationTestTools.assertNoRepoCache(); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); // WHEN PrismObject<ResourceType> resource = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, options , task, result); // THEN IntegrationTestTools.assertNoRepoCache(); SqlRepoTestUtil.assertVersionProgress(null, resource.getVersion()); lastVersion = resource.getVersion(); display("Initial version", lastVersion); assertSuccess(result); IntegrationTestTools.displayXml("Initialized dummy resource", resource); }
@Test public void test200ExportUsers() throws Exception { final String TEST_NAME = "test200ExportUsers"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); // WHEN displayWhen(TEST_NAME); List<PrismObject<UserType>> users = modelService.searchObjects(UserType.class, null, SelectorOptions.createCollection(GetOperationOptions.createRaw()), task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); assertEquals("Unexpected number of users", 5, users.size()); for (PrismObject<UserType> user: users) { display("Exporting user", user); assertNotNull("Null definition in "+user, user.getDefinition()); display("Definition", user.getDefinition()); String xmlString = prismContext.serializerFor(PrismContext.LANG_XML).serialize(user); display("Exported user", xmlString); Document xmlDocument = DOMUtil.parseDocument(xmlString); Schema javaxSchema = prismContext.getSchemaRegistry().getJavaxSchema(); Validator validator = javaxSchema.newValidator(); validator.setResourceResolver(prismContext.getEntityResolver()); validator.validate(new DOMSource(xmlDocument)); PrismObject<Objectable> parsedUser = prismContext.parseObject(xmlString); assertTrue("Re-parsed user is not equal to original: "+user, user.equals(parsedUser)); } }
@Test public void test103GetAccountRaw() throws Exception { TestUtil.displayTestTitle(this, "test103GetAccountRaw"); // GIVEN Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + ".test103GetAccountRaw"); OperationResult result = task.getResult(); preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); // WHEN PrismObject<ShadowType> account = modelService.getObject(ShadowType.class, accountJackOid, options , task, result); display("Account", account); display("Account def", account.getDefinition()); assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 0); PrismContainer<Containerable> accountContainer = account.findContainer(ShadowType.F_ATTRIBUTES); display("Account attributes def", accountContainer.getDefinition()); display("Account attributes def complex type def", accountContainer.getDefinition().getComplexTypeDefinition()); assertDummyAccountShadowRepo(account, accountJackOid, "jack"); assertSuccess("getObject result", result); assertSteadyResources(); }
assertGetDeny(UserType.class, USER_JACK_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertGetDeny(UserType.class, USER_GUYBRUSH_OID); assertGetDeny(UserType.class, USER_GUYBRUSH_OID, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertReadDenyRaw(); assertSearch(ObjectType.class, null, 2); assertSearch(UserType.class, createNameQuery(USER_JACK_USERNAME), 1); assertSearchDeny(UserType.class, createNameQuery(USER_JACK_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearch(ObjectType.class, createNameQuery(USER_JACK_USERNAME), 1); assertSearch(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), 0); assertSearchDeny(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearch(ObjectType.class, createNameQuery(USER_GUYBRUSH_USERNAME), 0);
assertSearchDeny(UserType.class, null, SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearch(UserType.class, createNameQuery(USER_JACK_USERNAME), 1); assertSearchDeny(UserType.class, createNameQuery(USER_JACK_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw())); assertSearch(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), 0); assertSearchDeny(UserType.class, createNameQuery(USER_GUYBRUSH_USERNAME), SelectorOptions.createCollection(GetOperationOptions.createRaw()));
@Test public void test103GetGroupRaw() throws Exception { final String TEST_NAME = "test103GetGroupRaw"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); assumeAssignmentPolicy(AssignmentPolicyEnforcementType.POSITIVE); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); // WHEN PrismObject<ShadowType> shadow = modelService.getObject(ShadowType.class, groupOid, options , task, result); display("Account", shadow); display("Account def", shadow.getDefinition()); PrismContainer<Containerable> accountContainer = shadow.findContainer(ShadowType.F_ATTRIBUTES); display("Account attributes def", accountContainer.getDefinition()); display("Account attributes def complex type def", accountContainer.getDefinition().getComplexTypeDefinition()); assertDummyGroupShadowRepo(shadow, groupOid, GROUP_PIRATE_DUMMY_NAME); result.computeStatus(); TestUtil.assertSuccess("getObject result", result); }
private void singleModify(CarefulAnt<ResourceType> ant, int iteration, Task task, OperationResult result) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException { // GIVEN ItemDelta<?,?> itemDelta = ant.createDelta(iteration); ObjectDelta<ResourceType> objectDelta = prismContext.deltaFactory().object() .createModifyDelta(RESOURCE_DUMMY_OID, itemDelta, ResourceType.class); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(objectDelta); IntegrationTestTools.assertNoRepoCache(); ModelExecuteOptions options = ModelExecuteOptions.createRaw(); // WHEN modelService.executeChanges(deltas, options , task, result); // THEN IntegrationTestTools.assertNoRepoCache(); Collection<SelectorOptions<GetOperationOptions>> getOptions = SelectorOptions.createCollection(GetOperationOptions.createRaw()); PrismObject<ResourceType> resourceAfter = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, getOptions, task, result); SqlRepoTestUtil.assertVersionProgress(lastVersion, resourceAfter.getVersion()); lastVersion = resourceAfter.getVersion(); display("Version", lastVersion); Element xsdSchema = ResourceTypeUtil.getResourceXsdSchema(resourceAfter); if (xsdSchema != null) { String targetNamespace = xsdSchema.getAttribute("targetNamespace"); assertNotNull("No targetNamespace in schema after application of "+objectDelta, targetNamespace); } IntegrationTestTools.assertNoRepoCache(); ant.assertModification(resourceAfter, iteration); }
rememberCounter(InternalCounters.PRISM_OBJECT_CLONE_COUNT); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw());