@Test public void test300DeletePhoto() throws Exception { OperationResult result = new OperationResult("test300DeletePhoto"); ObjectDelta delta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); delta.addModificationDeleteProperty(UserType.F_JPEG_PHOTO, new byte[]{4,5,6}); queryCountInterceptor.startCounter(); repositoryService.modifyObject(UserType.class, userOid, delta.getModifications(), result); if (baseHelper.getConfiguration().isUsingH2()) { AssertJUnit.assertEquals(4, queryCountInterceptor.getQueryCount()); } LOGGER.info("test300DeletePhoto check"); Session session = factory.openSession(); try { RUser u = session.get(RUser.class, userOid); Set<RFocusPhoto> p = u.getJpegPhoto(); AssertJUnit.assertEquals(0, p.size()); } finally { session.close(); } } }
@Test public void test170ModifyEmployeeTypeAndMetadataCreateChannel() throws Exception { OperationResult result = new OperationResult("test170ModifyEmployeeTypeAndMetadataCreateChannel"); ObjectDelta delta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); delta.addModificationAddProperty(UserType.F_EMPLOYEE_TYPE, "one", "two"); delta.addModificationReplaceProperty(ItemPath.create(UserType.F_METADATA, MetadataType.F_CREATE_CHANNEL), "asdf"); queryCountInterceptor.startCounter(); repositoryService.modifyObject(UserType.class, userOid, delta.getModifications(), result); if (baseHelper.getConfiguration().isUsingH2()) { AssertJUnit.assertEquals(4, queryCountInterceptor.getQueryCount()); } Session session = factory.openSession(); RUser u = session.get(RUser.class, userOid); AssertJUnit.assertEquals("asdf", u.getCreateChannel()); Set set = new HashSet<>(); set.add("one"); set.add("two"); AssertJUnit.assertEquals(u.getEmployeeType(), set); }
@Test public void test115DeleteActivation() throws Exception { OperationResult result = new OperationResult("test115DeleteActivation"); ObjectDelta delta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); ActivationType activation = new ActivationType(); activation.setAdministrativeStatus(ActivationStatusType.DISABLED); delta.addModificationDeleteContainer(UserType.F_ACTIVATION, activation.asPrismContainerValue()); queryCountInterceptor.startCounter(); repositoryService.modifyObject(UserType.class, userOid, delta.getModifications(), result); if (baseHelper.getConfiguration().isUsingH2()) { AssertJUnit.assertEquals(3, queryCountInterceptor.getQueryCount()); } Session session = factory.openSession(); try { RUser u = session.get(RUser.class, userOid); AssertJUnit.assertNull(u.getActivation()); } finally { session.close(); } }
@Test public void test200UpgradeModelReplace() throws Exception { final String TEST_NAME = "test200UpgradeModelReplace"; TestUtil.displayTestTitle(this, TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ResourceType> dummyResourceModelBefore = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null, task, result); ObjectDelta<ResourceType> resourceDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(ResourceType.class, RESOURCE_DUMMY_FAKE_OID ); ReferenceDelta connectorRefDeltaReplace = prismContext.deltaFactory().reference().createModificationReplace(ResourceType.F_CONNECTOR_REF, getResourceDefinition(), connectorDummyOid); resourceDelta.addModification(connectorRefDeltaReplace); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(resourceDelta); // WHEN modelService.executeChanges(deltas, null, task, result); // THEN result.computeStatus(); display("executeChanges result", result); TestUtil.assertSuccess("executeChanges result", result); assertUpgrade(dummyResourceModelBefore); }
private void modifyUserAddAccountImplicitExplicitEqualReverse(String bundleName, ObjectSource<PrismObject<ShadowType>> accountSource, ObjectChecker<ModelContext<UserType>> checker) throws Exception { final String TEST_NAME = bundleName + "ImplicitExplicitEqualReverse"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ShadowType> account = accountSource.get(); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(UserType.class, USER_JACK_OID); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account.clone()); ReferenceDelta accountRefDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountRefDelta); ObjectDelta<ShadowType> accountDelta = account.createAddDelta(); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(accountDelta, userDelta); doPreview(deltas, checker, task, result); }
private void modifyUserAddAccountImplicitExplicitEqual(String bundleName, ObjectSource<PrismObject<ShadowType>> accountSource, ObjectChecker<ModelContext<UserType>> checker) throws Exception { final String TEST_NAME = bundleName + "ImplicitExplicitEqual"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ShadowType> account = accountSource.get(); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(UserType.class, USER_JACK_OID); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account.clone()); ReferenceDelta accountRefDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountRefDelta); ObjectDelta<ShadowType> accountDelta = account.createAddDelta(); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta, accountDelta); doPreview(deltas, checker, task, result); }
private void modifyUserAddAccountImplicitExplicitSame(String bundleName, ObjectSource<PrismObject<ShadowType>> accountSource, ObjectChecker<ModelContext<UserType>> checker) throws Exception { final String TEST_NAME = bundleName + "ImplicitExplicitSame"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ShadowType> account = accountSource.get(); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(UserType.class, USER_JACK_OID); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account); ReferenceDelta accountRefDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountRefDelta); ObjectDelta<ShadowType> accountDelta = account.createAddDelta(); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta, accountDelta); doPreview(deltas, checker, task, result); }
private void modifyUserAddAccountImplicit(String bundleName, ObjectSource<PrismObject<ShadowType>> accountSource, ObjectChecker<ModelContext<UserType>> checker) throws Exception { final String TEST_NAME = bundleName + "Implicit"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ShadowType> account = accountSource.get(); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(UserType.class, USER_JACK_OID); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account); ReferenceDelta accountRefDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountRefDelta); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta); doPreview(deltas, checker, task, result); }
private void modifyUserAddAccountImplicitExplicitSameReverse(String bundleName, ObjectSource<PrismObject<ShadowType>> accountSource, ObjectChecker<ModelContext<UserType>> checker) throws Exception { final String TEST_NAME = bundleName + "ImplicitExplicitSameReverse"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ShadowType> account = accountSource.get(); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(UserType.class, USER_JACK_OID); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account); ReferenceDelta accountRefDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountRefDelta); ObjectDelta<ShadowType> accountDelta = account.createAddDelta(); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(accountDelta, userDelta); doPreview(deltas, checker, task, result); }
protected ObjectDelta<UserType> createModifyUserAddAccount(String userOid, PrismObject<ResourceType> resource) throws SchemaException { PrismObject<ShadowType> account = getAccountShadowDefinition().instantiate(); ObjectReferenceType resourceRef = new ObjectReferenceType(); resourceRef.setOid(resource.getOid()); account.asObjectable().setResourceRef(resourceRef); RefinedResourceSchema refinedSchema = RefinedResourceSchemaImpl.getRefinedSchema(resource); account.asObjectable().setObjectClass(refinedSchema.getDefaultRefinedDefinition(ShadowKindType.ACCOUNT).getObjectClassDefinition().getTypeName()); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account); ReferenceDelta accountDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountDelta); return userDelta; }
protected <T> ObjectDelta<ShadowType> createAccountDelta(LensProjectionContext accCtx, String accountOid, String attributeLocalName, T... propertyValues) throws SchemaException { ResourceType resourceType = accCtx.getResource(); QName attrQName = new QName(ResourceTypeUtil.getResourceNamespace(resourceType), attributeLocalName); ItemPath attrPath = ItemPath.create(ShadowType.F_ATTRIBUTES, attrQName); RefinedObjectClassDefinition refinedAccountDefinition = accCtx.getCompositeObjectClassDefinition(); RefinedAttributeDefinition attrDef = refinedAccountDefinition.findAttributeDefinition(attrQName); assertNotNull("No definition of attribute "+attrQName+" in account def "+refinedAccountDefinition, attrDef); ObjectDelta<ShadowType> accountDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(ShadowType.class, accountOid); PropertyDelta<T> attrDelta = prismContext.deltaFactory().property().create(attrPath, attrDef); attrDelta.setValuesToReplace(PrismValueCollectionsUtil.createCollection(prismContext, propertyValues)); accountDelta.addModification(attrDelta); return accountDelta; }
private void modifyUserAddAccountExplicit(String bundleName, ObjectSource<PrismObject<ShadowType>> accountSource, ObjectChecker<ModelContext<UserType>> checker) throws Exception { final String TEST_NAME = bundleName + "Explicit"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ShadowType> account = accountSource.get(); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(UserType.class, USER_JACK_OID); ObjectDelta<ShadowType> accountDelta = account.createAddDelta(); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(userDelta, accountDelta); doPreview(deltas, checker, task, result); }
protected ObjectDelta<ShadowType> createModifyAccountShadowEmptyDelta(String accountOid) { return prismContext.deltaFactory().object().createEmptyModifyDelta(ShadowType.class, accountOid); }
protected void modifyUserAddAccount(String userOid, File accountFile, Task task, OperationResult result) throws SchemaException, IOException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException { PrismObject<ShadowType> account = prismContext.parseObject(accountFile); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account); ReferenceDelta accountDelta = prismContext.deltaFactory().reference().createModificationAdd(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountDelta); Collection<ObjectDelta<? extends ObjectType>> deltas = (Collection)MiscUtil.createCollection(userDelta); modelService.executeChanges(deltas, null, task, result); }
protected ObjectDelta<UserType> createModifyUserUnlinkAccount(String userOid, PrismObject<ResourceType> resource) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException { String accountOid = getLinkRefOid(userOid, resource.getOid()); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setOid(accountOid); ReferenceDelta accountDelta = prismContext.deltaFactory().reference().createModificationDelete(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountDelta); return userDelta; }
protected void reconcileOrg(String oid, Task task, OperationResult result) throws CommunicationException, ObjectAlreadyExistsException, ExpressionEvaluationException, PolicyViolationException, SchemaException, SecurityViolationException, ConfigurationException, ObjectNotFoundException { ObjectDelta<OrgType> emptyDelta = prismContext.deltaFactory().object().createEmptyModifyDelta(OrgType.class, oid ); modelService.executeChanges(MiscSchemaUtil.createCollection(emptyDelta), ModelExecuteOptions.createReconcile(), task, result); }
@Test public void testReplaceModelOperationContext() throws Exception { PrismObject prismObject = PrismTestUtil.parseObject(new File(TEST_DIR, "task-modelOperationContext-before.xml")); ObjectDelta delta = getPrismContext().deltaFactory().object().createEmptyModifyDelta(TaskType.class, prismObject.getOid() ); delta.addModificationReplaceContainer(TaskType.F_MODEL_OPERATION_CONTEXT); PrismObject changed = prismObject.clone(); ItemDeltaCollectionsUtil.applyTo(delta.getModifications(), changed); Collection<? extends ItemDelta> processedModifications = prismObject.diffModifications(changed, EquivalenceStrategy.LITERAL_IGNORE_METADATA); ItemDeltaCollectionsUtil.applyTo(processedModifications, prismObject); assertNull(prismObject.findContainer(TaskType.F_MODEL_OPERATION_CONTEXT)); }
protected void reconcileUser(String oid, ModelExecuteOptions options, Task task, OperationResult result) throws CommunicationException, ObjectAlreadyExistsException, ExpressionEvaluationException, PolicyViolationException, SchemaException, SecurityViolationException, ConfigurationException, ObjectNotFoundException { ObjectDelta<UserType> emptyDelta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, oid ); modelService.executeChanges(MiscSchemaUtil.createCollection(emptyDelta), ModelExecuteOptions.createReconcile(options), task, result); }
protected ObjectDelta<UserType> createModifyUserDeleteAccount(String userOid, String resourceOid) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException { String accountOid = getLinkRefOid(userOid, resourceOid); PrismObject<ShadowType> account = getShadowModel(accountOid); ObjectDelta<UserType> userDelta = prismContext.deltaFactory().object().createEmptyModifyDelta(UserType.class, userOid ); PrismReferenceValue accountRefVal = itemFactory().createReferenceValue(); accountRefVal.setObject(account); ReferenceDelta accountDelta = prismContext.deltaFactory().reference().createModificationDelete(UserType.F_LINK_REF, getUserDefinition(), accountRefVal); userDelta.addModification(accountDelta); return userDelta; }
protected ObjectDelta<ShadowType> createAccountInitializationDelta(String accountOid, String newAccountPassword) { ObjectDelta<ShadowType> shadowDelta = prismContext.deltaFactory().object() .createEmptyModifyDelta(ShadowType.class, accountOid); ProtectedStringType passwordPs = new ProtectedStringType(); passwordPs.setClearValue(newAccountPassword); shadowDelta.addModificationReplaceProperty(SchemaConstants.PATH_PASSWORD_VALUE, passwordPs); shadowDelta.addModificationReplaceProperty(ObjectType.F_LIFECYCLE_STATE, SchemaConstants.LIFECYCLE_ACTIVE); return shadowDelta; }