/*
*
* Copyright (c) 2010 ForgeRock Inc. 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://www.opensource.org/licenses/cddl1.php or
* OpenIDM/legal/CDDLv1.0.txt
* 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 OpenIDM/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted 2010 [name of copyright owner]"
*
* $Id$
*/
package org.forgerock.openicf.connectors.xml;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeBuilder;
import org.identityconnectors.framework.common.objects.AttributeUtil;
import org.identityconnectors.framework.common.objects.ConnectorObject;
import org.identityconnectors.framework.common.objects.Name;
import org.identityconnectors.framework.common.objects.ResultsHandler;
import org.identityconnectors.framework.common.objects.Uid;
public class XmlConnectorTestUtil {
public final static File XSD_SCHEMA_FILEPATH;
public final static File ICF_SCHEMA_FILEPATH;
// Object types
public static final String ACCOUNT_TYPE = "__ACCOUNT__";
public static final String GROUP_TYPE = "__GROUP__";
public static final String OPEN_ICF_CONTAINER_TYPE = "OpenICFContainer";
// ICF attribute fields
public static final String ATTR_UID = Uid.NAME;
public static final String ATTR_NAME = Name.NAME;
public static final String ATTR_PASSWORD = "__PASSWORD__";
public static final String ATTR_LAST_LOGIN_DATE = "__LAST_LOGIN_DATE__";
public static final String ATTR_DESCRIPTION = "__DESCRIPTION__";
public static final String ATTR_DISABLE_DATE = "__DISABLE_DATE__";
public static final String ATTR_ENABLE_DATE = "__ENABLE_DATE__";
public static final String ATTR_ENABLE = "__ENABLE__";
public static final String ATTR_GROUPS = "__GROUPS__";
public static final String ATTR_SHORT_NAME = "__SHORT_NAME__";
// Account attribute fields
public static final String ATTR_ACCOUNT_FIRST_NAME = "firstname";
public static final String ATTR_ACCOUNT_LAST_NAME = "lastname";
public static final String ATTR_ACCOUNT_EMAIL = "email";
public static final String ATTR_ACCOUNT_ADDRESS = "address";
public static final String ATTR_ACCOUNT_EMPLOYEE_NUMBER = "employee-number";
public static final String ATTR_ACCOUNT_EMPLOYEE_TYPE = "employee-type";
public static final String ATTR_ACCOUNT_SECRET_ANSWER = "password-secret-answer";
public static final String ATTR_ACCOUNT_IS_DELETED = "is-deleted";
public static final String ATTR_ACCOUNT_PHOTO = "jpegPhoto";
public static final String ATTR_ACCOUNT_LAST_LOGOFF_DATE = "last-logoff";
public static final String ATTR_ACCOUNT_CREATED_TIMESTAMP = "account-created-timestamp";
public static final String ATTR_ACCOUNT_MS_EMPLOYED = "ms-employed";
public static final String ATTR_ACCOUNT_FIRST_LETTER_LAST_NAME = "lastname-first-letter";
public static final String ATTR_ACCOUNT_GENDER = "gender";
public static final String ATTR_ACCOUNT_HOURLY_WAGE = "hourly-wage";
public static final String ATTR_ACCOUNT_OVERTIME_COMISSION = "overtime-commission";
public static final String ATTR_ACCOUNT_AVERAGE_WAGE = "avg-wage";
public static final String ATTR_ACCOUNT_OFFICE_SQUARE_FEET = "office-square-feet";
public static final String ATTR_ACCOUNT_AGE = "age";
public static final String ATTR_ACCOUNT_YEARS_EMPLOYED = "years-employed";
public static final String ATTR_ACCOUNT_SIXTH_SENSE = "has-sixth-sense";
public static final String ATTR_ACCOUNT_PERMANTENT_EMPLOYEE = "permanent-employee";
public static final String ATTR_ACCOUNT_YEARLY_WAGE = "yearly-wage";
public static final String ATTR_ACCOUNT_MAX_STORAGE = "max-storage";
public static final String ATTR_ACCOUNT_USER_CERTIFICATE = "userCertificate";
public static final String ATTR_ACCOUNT_SECRET_PIN = "secret-pin";
//Attribute values for test account
public static final String ATTR_ACCOUNT_VALUE_NAME = "vaderUID";
public static final String ATTR_ACCOUNT_VALUE_PASSWORD = "secret";
public static final String ATTR_ACCOUNT_VALUE_LAST_NAME = "Vader's";
public static final String ATTR_ACCOUNT_VALUE_FIRST_NAME = "Darth";
public static final char ATTR_ACCOUNT_VALUE_FIRST_LETTER_LAST_NAME = 'V';
public static final String ATTR_ACCOUNT_VALUE_EMPLOYEE_TYPE = "bad-ass";
public static final String ATTR_ACCOUNT_VALUE_EMAIL_1 = "darth@deathstar.org";
public static final String ATTR_ACCOUNT_VALUE_EMAIL_2 = "vader@deathstar.org";
public static final String ATTR_ACCOUNT_VALUE_SECRET_PIN = "123";
public static final double ATTR_ACCOUNT_VALUE_OVERTIME_COMMISSION = new Double(20.20);
public static final boolean ATTR_ACCOUNT_VALUE_PERMANENT_EPLOYEE = true;
public static final int ATTR_ACCOUNT_VALUE_YEARS_EPLOYED = 200;
public static final boolean ATTR_ACCOUNT_VALUE_IS_DLETED = true;
public static final Long ATTR_ACCOUNT_VALUE_MS_EMPLOYED = new Long(999999);
public static final boolean ATTR_ACCOUNT_VALUE_SIXTH_SENSE = true;
// Attribute values for test group
public static final String ATTR_GROUP_VALUE_NAME = "The Empire";
public static final String ATTR_GROUP_VALUE_DESCRIPTION = "The cool guys";
public static final String ATTR_GROUP_VALUE_SHORT_NAME = "TE";
static {
XSD_SCHEMA_FILEPATH = getTestFile("ef2bc95b-76e0-48e2-86d6-4d4f44d4e4a4.xsd");
ICF_SCHEMA_FILEPATH = getTestFile("resource-schema-1.xsd");
}
public static File getRandomXMLFile() {
return getTestFile(UUID.randomUUID().toString() + ".xml");
}
public static File getTestFile(String fileName) {
try {
URL root = XmlConnectorTestUtil.class.getResource("/");
return new File(root.toURI().resolve("test/xml_store/" + fileName));
}
catch (URISyntaxException ex) {
throw new IllegalArgumentException("Testfile URL is invalid", ex);
}
}
public static Set<Attribute> getRequiredAccountAttributes() {
Set<Attribute> requiredAttrSet = new HashSet<Attribute>();
requiredAttrSet.add(AttributeBuilder.build(ATTR_NAME, ATTR_ACCOUNT_VALUE_NAME));
requiredAttrSet.add(AttributeBuilder.buildPassword(ATTR_ACCOUNT_VALUE_PASSWORD.toCharArray()));
requiredAttrSet.add(AttributeBuilder.build(ATTR_ACCOUNT_LAST_NAME, ATTR_ACCOUNT_VALUE_LAST_NAME));
return requiredAttrSet;
}
public static Set<Attribute> getRequiredGroupAttributes() {
Set<Attribute> requiredAttrSet = new HashSet<Attribute>();
requiredAttrSet.add(AttributeBuilder.build(ATTR_NAME, ATTR_GROUP_VALUE_NAME));
requiredAttrSet.add(AttributeBuilder.build(ATTR_DESCRIPTION, ATTR_GROUP_VALUE_DESCRIPTION));
requiredAttrSet.add(AttributeBuilder.build(ATTR_SHORT_NAME, ATTR_GROUP_VALUE_SHORT_NAME));
return requiredAttrSet;
}
public static Map<String, Attribute> convertToAttributeMap(Set<Attribute> attrSet) {
return new HashMap<String, Attribute>(AttributeUtil.toMap(attrSet));
}
public static Set<Attribute> convertToAttributeSet(Map<String, Attribute> attrMap) {
return new HashSet<Attribute>(attrMap.values());
}
public static class TestResultsHandler implements ResultsHandler {
private Set<ConnectorObject> results;
public TestResultsHandler() {
results = new HashSet<ConnectorObject>();
}
public boolean handle(ConnectorObject connObject) {
results.add(connObject);
return true;
}
public int getResultSize() {
return results.size();
}
public void setResults(Collection<ConnectorObject> results) {
this.results = new HashSet<ConnectorObject>(results);
}
}
}