public static String getConnectorOid(ResourceType resource) { if (resource.getConnectorRef() != null) { return resource.getConnectorRef().getOid(); } else if (resource.getConnector() != null) { return resource.getConnector().getOid(); } else { return null; } }
protected void fillInConnectorRef(PrismObject<ResourceType> resource, String connectorType, OperationResult result) throws SchemaException { ResourceType resourceType = resource.asObjectable(); PrismObject<ConnectorType> connector = findConnectorByType(connectorType, result); if (resourceType.getConnectorRef() == null) { resourceType.setConnectorRef(new ObjectReferenceType()); } resourceType.getConnectorRef().setOid(connector.getOid()); resourceType.getConnectorRef().setType(ObjectTypes.CONNECTOR.getTypeQName()); }
@Test public void test006GetObjectSchemaless() throws Exception { final String TEST_NAME = "test006GetObjectSchemaless"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestDummySchemaless.class.getName() + "." + TEST_NAME); PrismObject<ResourceType> resource = provisioningService.getObject(ResourceType.class, RESOURCE_DUMMY_NO_SCHEMA_OID, null, null, result); assertNotNull("Resource is null", resource); ResourceType resourceType = resource.asObjectable(); assertNotNull("No connector ref", resourceType.getConnectorRef()); assertNotNull("No connector ref OID", resourceType.getConnectorRef().getOid()); }
private void rebindResources(Map<String, String> rebindMap, ExecutionContext context, OperationResult result) throws ScriptExecutionException { List<PrismObject<ResourceType>> resources; try { resources = modelService.searchObjects(ResourceType.class, null, null, null, result); } catch (SchemaException|ConfigurationException|ObjectNotFoundException|CommunicationException|SecurityViolationException|ExpressionEvaluationException e) { throw new ScriptExecutionException("Couldn't list resources: " + e.getMessage(), e); } for (PrismObject<ResourceType> resource : resources) { if (resource.asObjectable().getConnectorRef() != null) { String connectorOid = resource.asObjectable().getConnectorRef().getOid(); String newOid = rebindMap.get(connectorOid); if (newOid != null) { String msg = "resource " + resource + " from connector " + connectorOid + " to new one: " + newOid; LOGGER.info("Rebinding " + msg); ReferenceDelta refDelta = prismContext.deltaFactory().reference() .createModificationReplace(ResourceType.F_CONNECTOR_REF, resource.getDefinition(), newOid); ObjectDelta<ResourceType> objDelta = prismContext.deltaFactory().object() .createModifyDelta(resource.getOid(), refDelta, ResourceType.class ); operationsHelper.applyDelta(objDelta, context, result); context.println("Rebound " + msg); } } } }
@Test public void test000Integrity() throws ObjectNotFoundException, SchemaException { TestUtil.displayTestTitle("test000Integrity"); OperationResult result = new OperationResult(TestDBTable.class.getName()+".test000Integrity"); ResourceType resource = repositoryService.getObject(ResourceType.class, RESOURCE_DERBY_OID, null, result).asObjectable(); String connectorOid = resource.getConnectorRef().getOid(); ConnectorType connector = repositoryService.getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(connector); display("DB Connector",connector); }
@Test public void test106GetObjectStaticSchema() throws Exception { final String TEST_NAME = "test106GetObjectStaticSchema"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestDummySchemaless.class.getName() + "." + TEST_NAME); PrismObject<ResourceType> resource = provisioningService.getObject(ResourceType.class, RESOURCE_DUMMY_STATIC_SCHEMA_OID, null, null, result); assertNotNull("Resource is null", resource); ResourceType resourceType = resource.asObjectable(); assertNotNull("No connector ref", resourceType.getConnectorRef()); assertNotNull("No connector ref OID", resourceType.getConnectorRef().getOid()); ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); display("Parsed resource schema", returnedSchema); assertNotNull("Null resource schema", returnedSchema); assertStaticSchemaSanity(returnedSchema); }
@Test public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); OperationResult result = new OperationResult(TestDummyItsmIntegration.class.getName() + "." + TEST_NAME); ResourceType repoResource = repositoryService.getObject(ResourceType.class, RESOURCE_DUMMY_ITSM_OID, null, result).asObjectable(); assertNotNull("No connector ref", repoResource.getConnectorRef()); String connectorOid = repoResource.getConnectorRef().getOid(); assertNotNull("No connector ref OID", connectorOid); ConnectorType repoConnector = repositoryService .getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(repoConnector); display("ITSM intetegration connector", repoConnector); // Check connector schema IntegrationTestTools.assertConnectorSchemaSanity(repoConnector, prismContext); }
@Test public void test005resolveConnectorRef() throws Exception{ TestUtil.displayTestTitle("test005resolveConnectorRef"); PrismObject<ResourceType> resource = PrismTestUtil.parseObject(new File(RESOURCE_DUMMY_FILENAME)); ModelExecuteOptionsType options = new ModelExecuteOptionsType(); options.setIsImport(Boolean.TRUE); addObjectViaModelWS(resource.asObjectable(), options, new Holder<>(), new Holder<>()); OperationResult repoResult = new OperationResult("getObject"); PrismObject<ResourceType> uObject = repositoryService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null, repoResult); assertNotNull(uObject); ResourceType resourceType = uObject.asObjectable(); assertNotNull("Reference on the connector must not be null in resource.",resourceType.getConnectorRef()); assertNotNull("Missing oid reference on the connector",resourceType.getConnectorRef().getOid()); }
@Test public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; TestUtil.displayTestTitle(TEST_NAME); assertNotNull("Resource is null", resource); assertNotNull("ResourceType is null", resourceType); OperationResult result = new OperationResult(AbstractManualResourceTest.class.getName() + "." + TEST_NAME); ResourceType repoResource = repositoryService.getObject(ResourceType.class, getResourceOid(), null, result).asObjectable(); assertNotNull("No connector ref", repoResource.getConnectorRef()); String connectorOid = repoResource.getConnectorRef().getOid(); assertNotNull("No connector ref OID", connectorOid); ConnectorType repoConnector = repositoryService .getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(repoConnector); display("Manual Connector", repoConnector); // Check connector schema IntegrationTestTools.assertConnectorSchemaSanity(repoConnector, prismContext); }
public static void copyFromJAXB(ResourceType jaxb, RResource repo, RepositoryContext repositoryContext, IdGeneratorResult generatorResult) throws DtoTranslationException { copyAssignmentHolderInformationFromJAXB(jaxb, repo, repositoryContext, generatorResult); repo.setNameCopy(RPolyString.copyFromJAXB(jaxb.getName())); repo.setConnectorRef(RUtil.jaxbRefToEmbeddedRepoRef(jaxb.getConnectorRef(), repositoryContext.relationRegistry)); if (jaxb.getConnector() != null) { LOGGER.warn("Connector from resource type won't be saved. It should be translated to connector reference."); } try { if (jaxb.getBusiness() != null) { ResourceBusinessConfigurationType business = jaxb.getBusiness(); repo.getApproverRef().addAll(RUtil.safeListReferenceToSet(business.getApproverRef(), repo, RReferenceOwner.RESOURCE_BUSINESS_CONFIGURATON_APPROVER, repositoryContext.relationRegistry)); repo.setAdministrativeState(RUtil.getRepoEnumValue(business.getAdministrativeState(), RResourceAdministrativeState.class)); } if (jaxb.getOperationalState() != null) { ROperationalState repoOpState = new ROperationalState(); ROperationalState.fromJaxb(jaxb.getOperationalState(), repoOpState); repo.setOperationalState(repoOpState); } } catch (Exception ex) { throw new DtoTranslationException(ex.getMessage(), ex); } } }
@Test public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); OperationResult result = new OperationResult(AbstractManualResourceTest.class.getName() + "." + TEST_NAME); ResourceType repoResource = repositoryService.getObject(ResourceType.class, getResourceOid(), null, result).asObjectable(); assertNotNull("No connector ref", repoResource.getConnectorRef()); String connectorOid = repoResource.getConnectorRef().getOid(); assertNotNull("No connector ref OID", connectorOid); ConnectorType repoConnector = repositoryService .getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(repoConnector); display("Manual Connector", repoConnector); // Check connector schema IntegrationTestTools.assertConnectorSchemaSanity(repoConnector, prismContext); PrismObject<UserType> userWill = getUser(userWillOid); assertUser(userWill, userWillOid, USER_WILL_NAME, USER_WILL_FULL_NAME, USER_WILL_GIVEN_NAME, USER_WILL_FAMILY_NAME); assertAdministrativeStatus(userWill, ActivationStatusType.ENABLED); assertUserPassword(userWill, USER_WILL_PASSWORD_OLD); }
@Test public void test000Integrity() throws Exception { final String TEST_NAME = "test000Integrity"; TestUtil.displayTestTitle(TEST_NAME); assertNotNull("Resource is null", resource); assertNotNull("ResourceType is null", resourceType); OperationResult result = new OperationResult(AbstractCsvTest.class.getName() + "." + TEST_NAME); ResourceType resource = repositoryService.getObject(ResourceType.class, getResourceOid(), null, result).asObjectable(); String connectorOid = resource.getConnectorRef().getOid(); ConnectorType connector = repositoryService .getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(connector); display("CSVFile Connector", connector); // Check connector schema IntegrationTestTools.assertConnectorSchemaSanity(connector, prismContext); }
@Test public void test042ApplyDefinitionResource() throws Exception { final String TEST_NAME = "test042ApplyDefinitionResource"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ResourceType> resource = PrismTestUtil.parseObject(getResourceDummyFile()); // Transplant connector OID. The freshly-parsed resource does have only the fake one. resource.asObjectable().getConnectorRef().setOid(this.resourceType.getConnectorRef().getOid()); // Make sure this object has a different OID than the one already loaded. This avoids caching // and other side-effects resource.setOid(RESOURCE_DUMMY_NONEXISTENT_OID); // WHEN provisioningService.applyDefinition(resource, task, result); // THEN result.computeStatus(); display("applyDefinition result", result); TestUtil.assertSuccess(result); resource.checkConsistence(true, true); TestUtil.assertSuccess("applyDefinition(resource) result", result); assertSteadyResource(); }
@Test public void test000Integrity() throws Exception { final String TEST_NAME = "test000Integrity"; TestUtil.displayTestTitle(TEST_NAME); display("Dummy resource instance", dummyResourceSchemaless.toString()); assertNotNull("Resource is null", resourceSchemaless); assertNotNull("ResourceType is null", resourceTypeSchemaless); OperationResult result = new OperationResult(TestDummySchemaless.class.getName() + ".test000Integrity"); ResourceType resource = repositoryService.getObject(ResourceType.class, RESOURCE_DUMMY_NO_SCHEMA_OID, null, result) .asObjectable(); String connectorOid = resource.getConnectorRef().getOid(); ConnectorType connector = repositoryService.getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(connector); display("Dummy Connector", connector); // Check connector schema IntegrationTestTools.assertConnectorSchemaSanity(connector, prismContext); }
@Test public void test043ApplyDefinitionAddResourceDelta() throws Exception { final String TEST_NAME = "test043ApplyDefinitionAddResourceDelta"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ResourceType> resource = PrismTestUtil.parseObject(getResourceDummyFile()); // Transplant connector OID. The freshly-parsed resource does have only the fake one. resource.asObjectable().getConnectorRef().setOid(this.resourceType.getConnectorRef().getOid()); ObjectDelta<ResourceType> delta = resource.createAddDelta(); // Make sure this object has a different OID than the one already loaded. This avoids caching // and other side-effects resource.setOid(RESOURCE_DUMMY_NONEXISTENT_OID); // WHEN provisioningService.applyDefinition(delta, task, result); // THEN result.computeStatus(); display("applyDefinition result", result); TestUtil.assertSuccess(result); delta.checkConsistence(true, true, true); TestUtil.assertSuccess("applyDefinition(add delta) result", result); assertSteadyResource(); }
@Test public void test360AddResourceNoConfiguration() throws Exception { final String TEST_NAME = "test360AddResourceNoConfiguration"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<ResourceType> resource = PrismTestUtil.parseObject(RESOURCE_DUMMY_NO_CONFIGURATION_FILE); PrismObject<ConnectorType> connectorDummy = findConnectorByTypeAndVersion(CONNECTOR_DUMMY_TYPE, CONNECTOR_DUMMY_VERSION, result); resource.asObjectable().getConnectorRef().setOid(connectorDummy.getOid()); ObjectDelta<ResourceType> delta = DeltaFactory.Object.createAddDelta(resource); Collection<ObjectDelta<? extends ObjectType>> deltas = MiscSchemaUtil.createCollection(delta); // WHEN modelService.executeChanges(deltas, null, task, result); // THEN result.computeStatus(); TestUtil.assertSuccess(result); }
@Test public void test030ImportDummyResource() throws Exception { final String TEST_NAME = "test030ImportDummyResource"; TestUtil.displayTestTitle(this, TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); // WHEN importObjectFromFile(RESOURCE_DUMMY_FILE, result); // THEN result.computeStatus(); display("Import result", result); TestUtil.assertSuccess("import result", result, 2); resourceDummy = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null, task, result); display("Imported resource", resourceDummy); assertNotNull("Null fake resource after getObject", resourceDummy); assertEquals("Wrong connectorRef in fake resource", connectorDummyOid, resourceDummy.asObjectable().getConnectorRef().getOid()); }
@Test public void test020ImportFakeResource() throws Exception { final String TEST_NAME = "test020ImportFakeResource"; TestUtil.displayTestTitle(this, TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); // WHEN importObjectFromFile(RESOURCE_DUMMY_FAKE_FILENAME, result); // THEN result.computeStatus(); display("Import result", result); TestUtil.assertSuccess("import result", result, 2); resourceDummyFake = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_FAKE_OID, null, task, result); display("Imported resource", resourceDummyFake); assertNotNull("Null fake resource after getObject", resourceDummyFake); assertEquals("Wrong connectorRef in fake resource", connectorDummyFakeOid, resourceDummyFake.asObjectable().getConnectorRef().getOid()); }
private PrismContainer<Containerable> assertResource(PrismObject<ResourceType> resource, String resourceName, String namespace, String connectorOid, boolean fromRepo) { ResourceType resourceType = resource.asObjectable(); assertNotNull(resourceType); PrismAsserts.assertEqualsPolyString("Wrong resource name", resourceName, resourceType.getName()); assertEquals("Wrong namespace of "+resource, namespace, ResourceTypeUtil.getResourceNamespace(resourceType)); assertEquals("Wrong connector OID in "+resource, connectorOid, resourceType.getConnectorRef().getOid()); // The password in the resource configuration should be encrypted after import PrismContainer<Containerable> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); PrismContainer<Containerable> configurationPropertiesContainer = configurationContainer.findContainer(SchemaTestConstants.ICFC_CONFIGURATION_PROPERTIES); assertNotNull("No configurationProperties in resource", configurationPropertiesContainer); return configurationPropertiesContainer; }
@Test public void test000Integrity() throws Exception { final String TEST_NAME = "test000Integrity"; displayTestTitle(TEST_NAME); display("Dummy resource instance", dummyResource.toString()); assertNotNull("Resource is null", resource); assertNotNull("ResourceType is null", resourceType); OperationResult result = new OperationResult(AbstractBasicDummyTest.class.getName() + "." + TEST_NAME); ResourceType resource = repositoryService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null, result) .asObjectable(); String connectorOid = resource.getConnectorRef().getOid(); ConnectorType connector = repositoryService.getObject(ConnectorType.class, connectorOid, null, result).asObjectable(); assertNotNull(connector); display("Dummy Connector", connector); result.computeStatus(); display("getObject result", result); TestUtil.assertSuccess(result); // Check connector schema IntegrationTestTools.assertConnectorSchemaSanity(connector, prismContext); IntegrationTestTools.assertNoSchema(resource); }