blob: feeed1e253d2f49b87c45cd27c2db76dd37311f7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.das.ldap.emf.test;
import java.util.Map;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.ldap.LdapContext;
import org.apache.tuscany.das.ldap.emf.Context;
import org.apache.tuscany.das.ldap.emf.LdapDAS;
import org.apache.tuscany.das.ldap.prototype.setup.test.LdapDASSetupTest;
import org.apache.tuscany.model.Configuration;
import org.apache.tuscany.model.ConfigurationFactory;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.sdo.EChangeSummary;
import org.eclipse.emf.ecore.sdo.EDataGraph;
import org.eclipse.emf.ecore.sdo.EDataObject;
public class LdapDASTest extends LdapDASSetupTest
{
Configuration configuration = null;
LdapDAS ldapDAS = null;
public void setUp() throws Exception
{
super.setUp();
configuration =
ConfigurationFactory.
INSTANCE.
createConfiguration();
configuration.setEmbedded( true );
ldapDAS = new LdapDAS(configuration);
}
public void tearDown() throws NamingException, Exception
{
ldapDAS.getAdsEmbeddedConnection().shutdown();
super.tearDown();
}
public void testConstructor() throws NamingException
{
Context context = ldapDAS.getContext();
assertEquals(
"ou=das",
context.getDasContext().getNameInNamespace());
assertEquals(
"cn=meta,ou=das",
context.getDasMetaContext().getNameInNamespace());
assertEquals(
"ou=attributeTypes,cn=ecore,ou=schema",
context.getEcoreAttributeTypesContext().getNameInNamespace());
assertEquals(
"ou=objectClasses,cn=ecore,ou=schema",
context.getEcoreObjectClassesContext().getNameInNamespace());
}
public void testCreate() throws Exception, NamingException
{
ldapDAS.create( eDataGraph );
Context context =
ldapDAS.getContext();
dataObjectToRelativeDNCache =
context.getDataObjectToRelativeDNCache();
Map<String, LdapContext> xsdNamespaceToLdapContextMap =
context.
getXsdNamespaceToLdapContextMap();
EDataObject rootObject =
( EDataObject )
eDataGraph.getRootObject();
String namespace =
rootObject.
eClass().
getEPackage().
getNsURI();
assertEquals(
"http://example.com/users/accounts",
namespace);
LdapContext rootContext =
xsdNamespaceToLdapContextMap.
get( namespace );
assertEquals(
"cn=accounts,cn=users,cn=example,cn=com,ou=das",
rootContext.getNameInNamespace() );
String userDataObjectRDN =
dataObjectToRelativeDNCache.get( rootObject );
//============================================================
//Verify the RDN
//============================================================
assertEquals(
"example-com-users-accounts-User-id=1",
userDataObjectRDN );
//============================================================
//Verify the attribute values
//============================================================
Attributes attributes =
rootContext.
getAttributes( userDataObjectRDN );
assertEquals(
attributes.get("objectClass").get(),
"example-com-users-accounts-User");
assertEquals(
attributes.get("objectClass").get(1),
"metaObjectClass");
assertEquals(
attributes.get("objectClass").get(2),
"metaTop");
assertEquals(
attributes.get("objectClass").get(3),
"top");
assertEquals(
attributes.get("example-com-users-accounts-User-userAge").get(),
"33");
assertEquals(
attributes.get("example-com-users-accounts-User-userName").get(),
"ole");
assertEquals(
attributes.get("example-com-users-accounts-User-userPassword").get(),
"secret");
assertEquals(
attributes.get("example-com-users-accounts-User-userHeight").get(),
"6.11");
assertEquals(
attributes.get("example-com-users-accounts-User-id").get(),
"1");
assertEquals(
attributes.get("example-com-users-accounts-User-isMale").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-User-userAliases").get(),
"neo");
assertEquals(
attributes.get("example-com-users-accounts-User-userAliases").get(1),
"trinity");
assertEquals(
attributes.get("example-com-users-accounts-User-userAliases").get(2),
"morpheus");
assertEquals(
attributes.get("example-com-users-accounts-User-configuration").get(),
"5");
assertEquals(
attributes.get("example-com-users-accounts-User-authorizationList").get(),
"2");
assertEquals(
attributes.get("example-com-users-accounts-User-authorizationList").get(1),
"3");
EDataObject configurationObject =
( EDataObject ) rootObject.
eGet( userConfigurationEReference );
String userConfigurationDataObjectRDN =
dataObjectToRelativeDNCache.
get( configurationObject );
//============================================================
//Verify the RDN
//============================================================
assertEquals(
"example-com-users-accounts-Configuration-id=5,cn=configuration,example-com-users-accounts-User-id=1",
userConfigurationDataObjectRDN);
attributes = rootContext.getAttributes( userConfigurationDataObjectRDN );
//============================================================
//Verify the Attributes
//============================================================
assertEquals(
attributes.get("objectClass").get(),
"example-com-users-accounts-Configuration");
assertEquals(
attributes.get("objectClass").get(1),
"metaObjectClass");
assertEquals(
attributes.get("objectClass").get(2),
"metaTop");
assertEquals(
attributes.get("objectClass").get(3),
"top");
assertEquals(
attributes.get("example-com-users-accounts-Configuration-authorization").get(),
"2");
assertEquals(
attributes.get("example-com-users-accounts-Configuration-id").get(),
"5");
assertEquals(
attributes.get("example-com-users-accounts-Configuration-authorizations").get(),
"2");
assertEquals(
attributes.get("example-com-users-accounts-Configuration-authorizations").get(1),
"3");
EList<EDataObject> authorizationList =
( EList<EDataObject> ) rootObject.
eGet( userAuthorizationEReference );
EDataObject authorizationDataObject1 =
authorizationList.get( 0 );
String userAuthorizationDataObject1RDN =
dataObjectToRelativeDNCache.
get( authorizationDataObject1 );
//============================================================
//Verify the RDN
//============================================================
assertEquals(
"example-com-users-accounts-Authorization-id=2,cn=authorizationList,example-com-users-accounts-User-id=1",
userAuthorizationDataObject1RDN);
attributes = rootContext.getAttributes( userAuthorizationDataObject1RDN );
//============================================================
//Verify the Attributes
//============================================================
assertEquals(
attributes.get("objectClass").get(),
"example-com-users-accounts-Authorization");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-id").get(),
"2");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-executeAuthorization").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-readAuthorization").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-writeAuthorization").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-fileName").get(),
"somefile.text");
EDataObject authorizationDataObject2 =
authorizationList.get( 1 );
String userAuthorizationDataObject2RDN =
dataObjectToRelativeDNCache.
get( authorizationDataObject2 );
//============================================================
//Verify the RDN
//============================================================
assertEquals(
"example-com-users-accounts-Authorization-id=3,cn=authorizationList,example-com-users-accounts-User-id=1",
userAuthorizationDataObject2RDN);
attributes = rootContext.getAttributes( userAuthorizationDataObject2RDN );
//============================================================
//Verify the Attributes
//============================================================
assertEquals(
attributes.get("objectClass").get(),
"example-com-users-accounts-Authorization");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-id").get(),
"3");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-executeAuthorization").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-readAuthorization").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-writeAuthorization").get(),
"TRUE");
assertEquals(
attributes.get("example-com-users-accounts-Authorization-fileName").get(),
"someOtherfile.text");
/* Finding out the values of the attributes
NamingEnumeration namingEnumeration = attributes.getAll();
while (namingEnumeration.hasMore())
{
Attribute attribute = ( Attribute ) namingEnumeration.next();
System.out.println(attribute);
}
*/
}
public void testRead() throws NamingException, Exception
{
/*
* More exhaustive testing has been done on the
* class that LdapDAS.read() delegates to.
*/
ldapDAS.create( eDataGraph );
EDataGraph newEDataGraph =
ldapDAS.read( userEClass, "1" );
EDataObject rootObject =
( EDataObject ) newEDataGraph.getRootObject();
assertEquals(
rootObject.eGet( userNameEAttribute),
"ole");
EDataObject configurationObject =
( EDataObject )
rootObject.eGet( userConfigurationEReference );
assertEquals(
configurationObject.eGet( configurationIDEAttribute),
"5");
}
public void testUpdate() throws NamingException, Exception
{
/*
* More exhaustive testing has been done on the
* class that LdapDAS.update() delegates to.
*/
ldapDAS.create( eDataGraph );
EDataGraph newEDataGraph = ldapDAS.read( userEClass, "1" );
//newEDataGraph.getChangeSummary().beginLogging();
EChangeSummary eChangeSummary = ( EChangeSummary ) newEDataGraph.getChangeSummary();
eChangeSummary.beginLogging();
EDataObject rootObject =
( EDataObject ) newEDataGraph.getRootObject();
rootObject.eSet( userNameEAttribute, "Brooke" );
rootObject.eSet( userAgeEAttribute, 5 );
//newEDataGraph.getChangeSummary().endLogging();
eChangeSummary.endLogging();
ldapDAS.update( newEDataGraph );
LdapContext rootContext = ldapDAS.getContext().
getXsdNamespaceToLdapContextMap().
get(
rootObject.
eClass().
getEPackage().
getNsURI());
Attributes attributes =
rootContext.
getAttributes(
"example-com-users-accounts-User-id=1" );
assertEquals(
attributes.get("example-com-users-accounts-User-userAge").get(),
"5");
assertEquals(
attributes.get("example-com-users-accounts-User-userName").get(),
"Brooke");
}
}