/**
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2012 ForgeRock AS. All Rights Reserved
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the License at
* http://forgerock.org/license/CDDLv1.0.html See the License for the specific
* language governing permission and limitations under the License.
*
* When distributing Covered Code, include this CDDL Header Notice in each file
* and include the License file at http://forgerock.org/license/CDDLv1.0.html If
* applicable, add the following below the CDDL Header, with the fields enclosed
* by brackets [] replaced by your own identifying information: "Portions
* Copyrighted [year] [name of copyright owner]"
*
* @author Gael Allioux <gael.allioux@forgerock.com>
*
*/
package org.forgerock.openicf.connectors.sap;
import java.util.*;
import org.identityconnectors.common.logging.Log;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.framework.api.APIConfiguration;
import org.identityconnectors.framework.api.ConnectorFacade;
import org.identityconnectors.framework.api.ConnectorFacadeFactory;
import org.identityconnectors.framework.common.objects.*;
import org.identityconnectors.framework.common.objects.filter.Filter;
import org.identityconnectors.framework.common.objects.filter.FilterBuilder;
import org.identityconnectors.test.common.PropertyBag;
import org.identityconnectors.test.common.TestHelpers;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* Attempts to test the {@link SAPConnector} with the framework.
*
* @author Gael Allioux <gael.allioux@forgerock.com>
* @version $Revision$ $Date$
*/
public class SAPConnectorTests {
private static final PropertyBag properties = TestHelpers.getProperties(SAPConnector.class);
private SAPConfiguration config;
private SAPConnector connector;
/**
* Single ThreadSafe Facade.
*/
private ConnectorFacade facade = null;
//set up logging
private static final Log LOGGER = Log.getLog(SAPConnectorTests.class);
@BeforeClass
public void setUp() {
config = new SAPConfiguration();
config.setClient(properties.getStringProperty("configuration.client"));
config.setUser(properties.getStringProperty("configuration.user"));
config.setHost(properties.getStringProperty("configuration.host"));
config.setDestination(properties.getStringProperty("configuration.destination"));
config.setDirectConnection(true);
config.setSapRouter(properties.getStringProperty("configuration.sapRouter"));
config.setSystemNumber(properties.getStringProperty("configuration.systemNumber"));
config.setLanguage(properties.getStringProperty("configuration.language"));
config.setPassword(properties.getProperty("configuration.password", GuardedString.class));
config.setTestScriptFileName(properties.getStringProperty("configuration.testScriptFileName"));
config.setSearchScriptFileName(properties.getStringProperty("configuration.searchScriptFileName"));
config.setSearchAllScriptFileName(properties.getStringProperty("configuration.searchAllScriptFileName"));
config.setUpdateScriptFileName(properties.getStringProperty("configuration.updateScriptFileName"));
config.setCreateScriptFileName(properties.getStringProperty("configuration.createScriptFileName"));
config.setDeleteScriptFileName(properties.getStringProperty("configuration.deleteScriptFileName"));
//connector = new SAPConnector();
//connector.init(config);
facade = getFacade(config);
}
@AfterClass
public static void tearDown() {
// connector.dispose();
}
// @Test(enabled = false)
// public void testCheckAlive() {
// LOGGER.info("Running testCheckAlive...");
// //You can use TestHelpers to do some of the boilerplate work in running a search
// //TestHelpers.search(theConnector, ObjectClass.ACCOUNT, filter, handler, null);
// connector.checkAlive();
// }
@Test(enabled = false)
public void testTest() {
LOGGER.info("Running testTest...");
//Another example using TestHelpers
//List<ConnectorObject> results = TestHelpers.searchToList(theConnector, ObjectClass.GROUP, filter);
//connector.test();
facade.test();
}
@Test(enabled = false)
public void testQueryListAllSAPHREMployee() {
// just need to send an empty query
// to fetch all entries
OperationOptionsBuilder oob = new OperationOptionsBuilder();
List<ConnectorObject> results = TestHelpers.searchToList(facade, new ObjectClass("EMPLOYEE"), null, oob.build());
System.out.println("testQueryListAllSAPHREMployee reports " + results.size() + " employees");
System.out.println(results.toString());
}
@Test(enabled = false)
public void testQueryGetSAPHREmployee() {
OperationOptionsBuilder oob = new OperationOptionsBuilder();
Filter filter = FilterBuilder.equalTo(AttributeBuilder.build("EMPLOYEE_ID", "200014"));
List<ConnectorObject> results = TestHelpers.searchToList(facade, new ObjectClass("EMPLOYEE"), filter, oob.build());
System.out.println("testQueryGetSAPHREmployee reports " + results.size() + " employee");
System.out.println(results.toString());
System.out.println("Returned email is: " + results.get(0).getAttributeByName("COMMUNICATION:EMAIL:ID").getValue().get(0));
System.out.println("Returned sysname is: " + results.get(0).getAttributeByName("COMMUNICATION:ACCOUNT:ID").getValue().get(0));
}
@Test(enabled = false)
public void testUpdateSAPHREmail() {
String empno = "200013";
Uid uid = new Uid(empno);
AttributeBuilder ab = new AttributeBuilder();
ab.setName("COMMUNICATION:EMAIL:ID");
ab.addValue("Bob.Flemming@fast.com");
java.util.Set<Attribute> replaceAttributes = new java.util.HashSet<Attribute>();
replaceAttributes.add(ab.build());
OperationOptionsBuilder oob = new OperationOptionsBuilder();
facade.update(new ObjectClass("EMPLOYEE"), uid, replaceAttributes, oob.build());
System.out.println("UPDATE done, retrieving user to check... ");
Filter filter = FilterBuilder.equalTo(AttributeBuilder.build("EMPLOYEE_ID", empno));
List<ConnectorObject> results = TestHelpers.searchToList(facade, new ObjectClass("EMPLOYEE"), filter, oob.build());
System.out.println("Returned email is: " + results.get(0).getAttributeByName("COMMUNICATION:EMAIL:ID").getValue().get(0));
}
@Test(enabled = false)
public void testUpdateSAPHRSysName() {
String empno = "200013";
Uid uid = new Uid(empno);
AttributeBuilder ab = new AttributeBuilder();
ab.setName("COMMUNICATION:ACCOUNT:ID");
ab.addValue("BFlemm");
java.util.Set<Attribute> replaceAttributes = new java.util.HashSet<Attribute>();
replaceAttributes.add(ab.build());
OperationOptionsBuilder oob = new OperationOptionsBuilder();
facade.update(new ObjectClass("EMPLOYEE"), uid, replaceAttributes, oob.build());
System.out.println("UPDATE done, retrieving user to check... ");
Filter filter = FilterBuilder.equalTo(AttributeBuilder.build("EMPLOYEE_ID", empno));
List<ConnectorObject> results = TestHelpers.searchToList(facade, new ObjectClass("EMPLOYEE"), filter, oob.build());
System.out.println("Returned account is: " + results.get(0).getAttributeByName("COMMUNICATION:ACCOUNT:ID").getValue().get(0));
}
@Test(enabled = false)
public void testQueryListAllSAPR3Users() {
// just need to send an empty query
// to fetch all entries
OperationOptionsBuilder oob = new OperationOptionsBuilder();
List<ConnectorObject> results = TestHelpers.searchToList(facade, ObjectClass.ACCOUNT, null, oob.build());
//System.out.println("testQueryListAllSAPR3 reports " + results.size() + " employees");
//System.out.println(results.toString());
}
@Test(enabled = false, priority = 2)
public void testQueryGetSAPR3User() {
OperationOptionsBuilder oob = new OperationOptionsBuilder();
Filter filter = FilterBuilder.equalTo(AttributeBuilder.build("USERNAME", "BOBF"));
List<ConnectorObject> results = TestHelpers.searchToList(facade, ObjectClass.ACCOUNT, filter, oob.build());
//System.out.println("testQueryListAllSAPR3 reports " + results.size() + " employees");
//System.out.println(results.toString());
}
@Test(enabled = false, priority = 3)
public void testDeleteSAPR3User() {
Uid uid = new Uid("TESTFR1");
OperationOptionsBuilder oob = new OperationOptionsBuilder();
facade.delete(ObjectClass.ACCOUNT, uid, oob.build());
}
protected ConnectorFacade getFacade(SAPConfiguration config) {
ConnectorFacadeFactory factory = ConnectorFacadeFactory.getInstance();
// **test only**
APIConfiguration impl = TestHelpers.createTestConfiguration(SAPConnector.class, config);
return factory.newInstance(impl);
}
}