/* * 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 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 authorizationList = ( EList ) 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"); } }