/* * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.evolveum.midpoint.provisioning.impl; import static com.evolveum.midpoint.test.IntegrationTestTools.display; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNotNull; import java.util.List; import com.evolveum.midpoint.prism.query.builder.QueryBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.Test; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.provisioning.api.ProvisioningService; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.test.AbstractIntegrationTest; import com.evolveum.midpoint.test.IntegrationTestTools; import com.evolveum.midpoint.test.util.TestUtil; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorType; /** * @author Radovan Semancik * @author Katka Valalikova */ @ContextConfiguration(locations = "classpath:ctx-provisioning-test-main.xml") @DirtiesContext public class TestConnectorDiscovery extends AbstractIntegrationTest { @Autowired private ProvisioningService provisioningService; private static Trace LOGGER = TraceManager.getTrace(TestConnectorDiscovery.class); @Override public void initSystem(Task initTask, OperationResult initResult) throws Exception { provisioningService.postInit(initResult); } /** * Check whether the connectors were discovered correctly and were added to the repository. * @throws SchemaException * */ @Test public void test001Connectors() throws Exception { final String TEST_NAME = "test001Connectors"; TestUtil.displayTestTile(TEST_NAME); OperationResult result = new OperationResult(TestConnectorDiscovery.class.getName() + "." + TEST_NAME); // WHEN TestUtil.displayWhen(TEST_NAME); List<PrismObject<ConnectorType>> connectors = repositoryService.searchObjects(ConnectorType.class, null, null, result); // THEN TestUtil.displayThen(TEST_NAME); assertFalse("No connector found",connectors.isEmpty()); display("Found "+connectors.size()+" discovered connector"); result.computeStatus(); TestUtil.assertSuccess(result); for (PrismObject<ConnectorType> connector : connectors) { ConnectorType conn = connector.asObjectable(); display("Found connector " +conn, conn); IntegrationTestTools.assertConnectorSchemaSanity(conn, prismContext); } assertEquals("Unexpected number of connectors found", 7, connectors.size()); } @Test public void testListConnectors() throws Exception{ TestUtil.displayTestTile("testListConnectors"); OperationResult result = new OperationResult(TestConnectorDiscovery.class.getName() + ".listConnectorsTest"); List<PrismObject<ConnectorType>> connectors = provisioningService.searchObjects(ConnectorType.class, null, null, null, result); assertNotNull(connectors); for (PrismObject<ConnectorType> connector : connectors){ ConnectorType conn = connector.asObjectable(); System.out.println(conn.toString()); System.out.println("connector name: "+ conn.getName()); System.out.println("connector type: "+ conn.getConnectorType()); System.out.println("-----\n"); } assertEquals("Unexpected number of connectors found", 7, connectors.size()); } @Test public void testSearchConnectorSimple() throws SchemaException{ final String TEST_NAME = "testSearchConnectorSimple"; TestUtil.displayTestTile(TEST_NAME); OperationResult result = new OperationResult(TestConnectorDiscovery.class.getName() + "." + TEST_NAME); PrismObject<ConnectorType> ldapConnector = findConnectorByType(IntegrationTestTools.LDAP_CONNECTOR_TYPE, result); assertEquals("Type does not match", IntegrationTestTools.LDAP_CONNECTOR_TYPE, ldapConnector.asObjectable().getConnectorType()); } @Test public void testSearchConnectorAnd() throws SchemaException{ TestUtil.displayTestTile("testSearchConnectorAnd"); OperationResult result = new OperationResult(TestConnectorDiscovery.class.getName() + ".testSearchConnector"); ObjectQuery query = QueryBuilder.queryFor(ConnectorType.class, prismContext) .item(SchemaConstants.C_CONNECTOR_FRAMEWORK).eq(SchemaConstants.ICF_FRAMEWORK_URI) .and().item(SchemaConstants.C_CONNECTOR_CONNECTOR_TYPE).eq(IntegrationTestTools.LDAP_CONNECTOR_TYPE) .build(); System.out.println("Query:\n"+query.debugDump()); List<PrismObject<ConnectorType>> connectors = repositoryService.searchObjects(ConnectorType.class, query, null, result); assertEquals("Unexpected number of results", 1, connectors.size()); PrismObject<ConnectorType> ldapConnector = connectors.get(0); assertEquals("Type does not match", IntegrationTestTools.LDAP_CONNECTOR_TYPE, ldapConnector.asObjectable().getConnectorType()); assertEquals("Framework does not match", SchemaConstants.ICF_FRAMEWORK_URI, ldapConnector.asObjectable().getFramework()); } }