summaryrefslogtreecommitdiffstats
path: root/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf
diff options
context:
space:
mode:
Diffstat (limited to 'das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf')
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataGraphCreatorTest.java126
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataObjectCreatorTest.java85
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataGraphReaderTest.java156
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataObjectReaderTest.java62
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASHelperTest.java185
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASTest.java437
-rw-r--r--das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/update/test/EDataGraphUpdateTest.java180
7 files changed, 1231 insertions, 0 deletions
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataGraphCreatorTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataGraphCreatorTest.java
new file mode 100644
index 0000000000..2f2b8a24de
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataGraphCreatorTest.java
@@ -0,0 +1,126 @@
+/*
+ * 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.create.test;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+import javax.naming.ldap.LdapContext;
+
+import org.apache.tuscany.das.ldap.prototype.setup.test.EDataGraphSetupTest;
+
+
+public class EDataGraphCreatorTest
+extends EDataGraphSetupTest
+{
+ public void testCreate() throws NamingException
+ {
+ assertEquals(
+ "example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ userContainerContext.getNameInNamespace());
+
+ Attributes userEntryAttributes =
+ userContainerContext.getAttributes("");
+
+ assertEquals(
+ userEntryAttributes.get(
+ "example-com-users-accounts-User-userPassword").get(),
+ "secret");
+
+ assertEquals(
+ userEntryAttributes.get(
+ "example-com-users-accounts-User-authorizationList").get(0), "2");
+
+ assertEquals(
+ userEntryAttributes.get(
+ "example-com-users-accounts-User-authorizationList").get(1), "3");
+
+ assertEquals(
+ userEntryAttributes.get("example-com-users-accounts-User-userName").get(),
+ "ole");
+
+ assertEquals(
+ "cn=authorizationList,example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ authorizationContainerContext.getNameInNamespace());
+
+ LdapContext authorizationEntry1Context =
+ (LdapContext)
+ rootContext.
+ lookup(authorizationDataObject1RDN);
+
+ assertEquals(
+ "example-com-users-accounts-Authorization-id=2,cn=authorizationList,example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ authorizationEntry1Context.getNameInNamespace());
+
+ Attributes authorizationEntry1Attributes =
+ rootContext.
+ getAttributes(authorizationDataObject1RDN);
+
+ assertEquals(
+ authorizationEntry1Attributes.get("example-com-users-accounts-Authorization-fileName").get(),
+ "somefile.text");
+
+ assertEquals(
+ authorizationEntry1Attributes.get("example-com-users-accounts-Authorization-writeAuthorization").get(),
+ "TRUE");
+
+
+ LdapContext authorizationEntry2Context =
+ (LdapContext)
+ rootContext.
+ lookup(authorizationDataObject2RDN);
+
+ assertEquals(
+ "example-com-users-accounts-Authorization-id=3,cn=authorizationList,example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ authorizationEntry2Context.getNameInNamespace());
+
+
+ Attributes authorizationEntry2Attributes =
+ rootContext.
+ getAttributes(authorizationDataObject2RDN);
+
+ assertEquals(
+ authorizationEntry2Attributes.get("example-com-users-accounts-Authorization-fileName").get(),
+ "someOtherfile.text");
+
+ assertEquals(
+ "cn=configuration,example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ configurationContainerContext.getNameInNamespace());
+
+ String configurationEntryRDN =
+ "example-com-users-accounts-Configuration-id=5";
+
+ LdapContext configurationEntryContext =
+ (LdapContext)
+ configurationContainerContext.
+ lookup(configurationEntryRDN);
+
+ assertEquals(
+ "example-com-users-accounts-Configuration-id=5,cn=configuration,example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ configurationEntryContext.getNameInNamespace());
+
+ Attributes configurationEntryAttributes =
+ configurationContainerContext.
+ getAttributes(configurationEntryRDN);
+
+ assertEquals(
+ configurationEntryAttributes.get("example-com-users-accounts-Configuration-authorization").get(),
+ "2");
+ }
+} \ No newline at end of file
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataObjectCreatorTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataObjectCreatorTest.java
new file mode 100644
index 0000000000..c3b6fc5475
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/create/test/EDataObjectCreatorTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.create.test;
+
+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.prototype.setup.test.EDataObjectSetupTest;
+
+public class EDataObjectCreatorTest
+extends EDataObjectSetupTest
+{
+ protected String eDataObjectRDN = null;
+ protected LdapContext namedContainerContext = null;
+
+ public void tearDown() throws NamingException, Exception
+ {
+ super.tearDown();
+ }
+
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ }
+
+ public void testCreate() throws NamingException
+ {
+ assertEquals(
+ "example-com-users-accounts-User-id=1,cn=accounts,cn=users,cn=example,cn=com,ou=das",
+ userContainerContext.getNameInNamespace());
+
+ Attributes attributes =
+ userContainerContext.getAttributes("");
+
+ assertEquals(
+ attributes.get("example-com-users-accounts-User-userPassword").get(),
+ "secret");
+
+ 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-userAge").get(),
+ "33");
+ assertEquals(
+ attributes.get("example-com-users-accounts-User-userHeight").get(),
+ "6.11");
+
+ assertEquals(
+ attributes.get("example-com-users-accounts-User-authorizationList").size(),
+ 2);
+
+ Attribute aliasesAttribute = attributes.get("example-com-users-accounts-User-userAliases");
+
+ assertEquals(
+ aliasesAttribute.size(),
+ 3);
+
+ assertEquals(aliasesAttribute.get(0), "neo");
+ assertEquals(aliasesAttribute.get(1), "trinity");
+ assertEquals(aliasesAttribute.get(2), "morpheus");
+ }
+} \ No newline at end of file
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataGraphReaderTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataGraphReaderTest.java
new file mode 100644
index 0000000000..ea609544cf
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataGraphReaderTest.java
@@ -0,0 +1,156 @@
+/*
+ * 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.read.test;
+
+import java.util.Hashtable;
+
+import javax.naming.NamingException;
+
+import org.apache.tuscany.das.ldap.emf.read.EDataGraphReader;
+import org.apache.tuscany.das.ldap.prototype.setup.test.EDataGraphSetupTest;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.sdo.EDataObject;
+
+public class EDataGraphReaderTest
+extends EDataGraphSetupTest
+{
+ public void testRead() throws NamingException
+ {
+ dataObjectToRelativeDNCache =
+ new Hashtable<EDataObject, String>();
+
+ eDataGraph =
+ EDataGraphReader.read(
+ userEClass,
+ "1",
+ rootContext,
+ dataObjectToRelativeDNCache);
+
+ EDataObject retrievedUserDataObject =
+ (EDataObject) eDataGraph.getRootObject();
+
+ assertEquals(
+ dataObjectToRelativeDNCache.
+ get(retrievedUserDataObject).toString(),
+ "example-com-users-accounts-User-id=1");
+
+ assertEquals(retrievedUserDataObject.eGet(userNameEAttribute), "ole");
+ assertEquals(retrievedUserDataObject.eGet(userPasswordEAttribute), "secret");
+ assertEquals(retrievedUserDataObject.eGet(userAgeEAttribute), 33);
+ assertEquals(retrievedUserDataObject.eGet(userHeightEAttribute), 6.11);
+ assertEquals(retrievedUserDataObject.eGet(userIsMaleEAttribute), true);
+
+ EList<EDataObject> retrievedAuthorizationContainmentList =
+ (EList<EDataObject>)
+ retrievedUserDataObject.
+ eGet(userAuthorizationEReference);
+
+ assertEquals(retrievedAuthorizationContainmentList.size(), 2);
+
+ EDataObject retrievedAuthorizationEDataObject1 =
+ retrievedAuthorizationContainmentList.get(0);
+
+ assertEquals(
+ dataObjectToRelativeDNCache.
+ get(retrievedAuthorizationEDataObject1).toString(),
+ "example-com-users-accounts-Authorization-id=2,cn=authorizationList,example-com-users-accounts-User-id=1");
+
+ assertEquals(
+ retrievedAuthorizationEDataObject1.
+ eGet(authorizationIDEAttribute), "2");
+ assertEquals(
+ retrievedAuthorizationEDataObject1.
+ eGet(authorizationFileEAttribute), "somefile.text");
+ assertEquals(
+ retrievedAuthorizationEDataObject1.
+ eGet(authorizationWriteEAttribute), true);
+ assertEquals(
+ retrievedAuthorizationEDataObject1.
+ eGet(authorizationReadEAttribute), true);
+ assertEquals(
+ retrievedAuthorizationEDataObject1.
+ eGet(authorizationExecuteEAttribute), true);
+
+ EDataObject retrievedAuthorizationEDataObject2 =
+ retrievedAuthorizationContainmentList.get(1);
+
+ assertEquals(
+ dataObjectToRelativeDNCache.
+ get(retrievedAuthorizationEDataObject2).toString(),
+ "example-com-users-accounts-Authorization-id=3,cn=authorizationList,example-com-users-accounts-User-id=1");
+
+ assertEquals(
+ retrievedAuthorizationEDataObject2.
+ eGet(authorizationIDEAttribute), "3");
+
+ EDataObject retrievedConfigurationEDataObject =
+ (EDataObject) retrievedUserDataObject.
+ eGet(userConfigurationEReference);
+
+ assertEquals(
+ dataObjectToRelativeDNCache.
+ get(retrievedConfigurationEDataObject).toString(),
+ "example-com-users-accounts-Configuration-id=5,cn=configuration,example-com-users-accounts-User-id=1");
+
+ assertEquals(
+ "5",
+ retrievedConfigurationEDataObject.
+ eGet(configurationIDEAttribute));
+
+ EDataObject referencedAuthorizationDataObject =
+ (EDataObject) retrievedConfigurationEDataObject.
+ eGet(configurationAuthorizationEReference);
+
+ assertSame(
+ retrievedAuthorizationEDataObject1,
+ referencedAuthorizationDataObject);
+
+ EList<EDataObject> referenceAuthorizationsList =
+ (EList<EDataObject>) retrievedConfigurationEDataObject.
+ eGet(configurationAuthorizationsEReference);
+
+ assertEquals(2, referenceAuthorizationsList.size() );
+ }
+
+ public void testReadException()
+ {
+ dataObjectToRelativeDNCache =
+ new Hashtable<EDataObject, String>();
+
+ try
+ {
+ eDataGraph =
+ EDataGraphReader.read(
+ userEClass,
+ "1",
+ metaContext,
+ dataObjectToRelativeDNCache);
+ }
+ catch ( NamingException e )
+ {
+ readException = true;
+ }
+
+ assertTrue(readException);
+ }
+
+
+
+} \ No newline at end of file
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataObjectReaderTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataObjectReaderTest.java
new file mode 100644
index 0000000000..9617599acb
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/read/test/EDataObjectReaderTest.java
@@ -0,0 +1,62 @@
+/*
+ * 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.read.test;
+
+import javax.naming.NamingException;
+
+import org.apache.tuscany.das.ldap.emf.read.EDataObjectReader;
+import org.apache.tuscany.das.ldap.prototype.setup.test.EDataObjectSetupTest;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.sdo.EDataObject;
+
+public class EDataObjectReaderTest
+extends EDataObjectSetupTest
+{
+ public void tearDown() throws NamingException, Exception
+ {
+ super.tearDown();
+ }
+
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ }
+
+ public void testRead() throws NamingException
+ {
+ EDataObject eDataObject =
+ EDataObjectReader.read(
+ userEClass,
+ "1",
+ rootContext);
+
+ assertEquals(eDataObject.eGet(userNameEAttribute), "ole");
+ assertEquals(eDataObject.eGet(userPasswordEAttribute), "secret");
+ assertEquals(eDataObject.eGet(userAgeEAttribute), 33);
+ assertEquals(eDataObject.eGet(userHeightEAttribute), 6.11);
+ assertEquals(eDataObject.eGet(userIsMaleEAttribute), true);
+
+ EList userAliases = ( EList ) eDataObject.eGet(userAliasesEAttribute);
+ assertEquals(userAliases.size(), 3);
+ assertEquals(userAliases.get(0), "neo");
+ assertEquals(userAliases.get(1), "trinity");
+ assertEquals(userAliases.get(2), "morpheus");
+ }
+} \ No newline at end of file
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASHelperTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASHelperTest.java
new file mode 100644
index 0000000000..ef8a197f7c
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASHelperTest.java
@@ -0,0 +1,185 @@
+/*
+ * 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.io.File;
+import java.util.Hashtable;
+import java.util.Map;
+
+import javax.naming.NamingException;
+import javax.naming.ldap.LdapContext;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.tuscany.das.ldap.connect.ADSEmbeddedConnection;
+import org.apache.tuscany.das.ldap.emf.Context;
+import org.apache.tuscany.das.ldap.emf.LdapDAS;
+import org.apache.tuscany.das.ldap.emf.LdapDASHelper;
+import org.apache.tuscany.model.Configuration;
+import org.apache.tuscany.model.ConfigurationFactory;
+import org.apache.tuscany.model.DASMeta;
+import org.eclipse.emf.ecore.sdo.EDataGraph;
+import org.eclipse.emf.ecore.sdo.EDataObject;
+
+public class LdapDASHelperTest extends TestCase
+{
+
+ private LdapContext schemaContext = null;
+ private ADSEmbeddedConnection adsEmbeddedConnection;
+ Configuration configuration = null;
+
+ public void tearDown() throws NamingException, Exception
+ {
+ adsEmbeddedConnection.shutdown();
+ }
+
+ public void setUp() throws Exception
+ {
+ /*
+ * Note that I had to move the schemaContext
+ * creation inside each test method due to a
+ * bug in ADS.
+ */
+ FileUtils.deleteDirectory(new File("server-work"));
+
+ configuration =
+ ConfigurationFactory.
+ INSTANCE.
+ createConfiguration();
+
+ adsEmbeddedConnection =
+ new ADSEmbeddedConnection(
+ configuration);
+ }
+
+
+ public void testReadDasMeta() throws Exception
+ {
+ Configuration configuration =
+ ConfigurationFactory.
+ INSTANCE.
+ createConfiguration();
+
+ configuration.setEmbedded( true );
+
+ LdapDAS ldapDAS = new LdapDAS(configuration);
+
+ Context context = ldapDAS.getContext();
+
+
+ Map<EDataObject, String> metaDataObjectToRelativeDNCache =
+ new Hashtable<EDataObject, String>();
+
+ EDataGraph dasMetaDataGraph =
+ LdapDASHelper.readDasMeta(
+ context,
+ metaDataObjectToRelativeDNCache );
+
+ assertEquals(
+ "org-apache-tuscany-das-ldap-configuration-model-ecore-v100-DASMeta-id=0",
+ metaDataObjectToRelativeDNCache.values().toArray()[0]);
+
+ DASMeta dasMeta = ( DASMeta ) dasMetaDataGraph.getRootObject();
+
+ assertEquals(
+ dasMeta,
+ metaDataObjectToRelativeDNCache.keySet().toArray()[0] );
+
+ assertEquals(
+ "org-apache-tuscany-das-ldap-configuration-model-ecore-v100-DASMeta-id=0",
+ metaDataObjectToRelativeDNCache.get(dasMeta));
+ }
+
+ public void testCreateEcoreContext() throws NamingException
+ {
+ schemaContext =
+ adsEmbeddedConnection.
+ connect(
+ configuration.getSchemaPartitionName() );
+
+ LdapContext ecoreContext =
+ LdapDASHelper.createEcoreContext(
+ schemaContext);
+
+ assertEquals(
+ ecoreContext.getNameInNamespace(),
+ "cn=ecore,ou=schema" );
+
+ schemaContext.destroySubcontext( "cn=ecore" );
+ }
+
+ public void testCreateEcoreObjectClassesContext() throws NamingException
+ {
+ schemaContext =
+ adsEmbeddedConnection.
+ connect(
+ configuration.getSchemaPartitionName() );
+
+ LdapContext ecoreContext =
+ LdapDASHelper.createEcoreContext(
+ schemaContext);
+
+ LdapContext ecoreObjectClassesContext =
+ LdapDASHelper.
+ createEcoreObjectClassesContext(
+ schemaContext );
+
+ ecoreObjectClassesContext =
+ LdapDASHelper.
+ createEcoreObjectClassesContext(
+ schemaContext );
+
+ assertEquals(
+ ecoreObjectClassesContext.getNameInNamespace(),
+ "ou=objectClasses,cn=ecore,ou=schema");
+
+
+ ecoreContext.destroySubcontext( "ou=objectClasses" );
+ schemaContext.destroySubcontext( "cn=ecore" );
+ }
+
+ public void testCreateEcoreAttributeTypesContext() throws NamingException
+ {
+ schemaContext =
+ adsEmbeddedConnection.
+ connect(
+ configuration.getSchemaPartitionName() );
+
+ LdapContext ecoreContext =
+ LdapDASHelper.createEcoreContext(
+ schemaContext);
+
+ LdapContext ecoreAttributeTypesContext =
+ LdapDASHelper.
+ createEcoreAttributeTypesContext( schemaContext );
+
+ ecoreAttributeTypesContext =
+ LdapDASHelper.
+ createEcoreAttributeTypesContext( schemaContext );
+
+ assertEquals(
+ ecoreAttributeTypesContext.getNameInNamespace(),
+ "ou=attributeTypes,cn=ecore,ou=schema");
+
+ ecoreContext.destroySubcontext( "ou=attributeTypes" );
+ schemaContext.destroySubcontext( "cn=ecore" );
+ }
+} \ No newline at end of file
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASTest.java
new file mode 100644
index 0000000000..feeed1e253
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/test/LdapDASTest.java
@@ -0,0 +1,437 @@
+/*
+ * 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");
+ }
+} \ No newline at end of file
diff --git a/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/update/test/EDataGraphUpdateTest.java b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/update/test/EDataGraphUpdateTest.java
new file mode 100644
index 0000000000..d76ccccac0
--- /dev/null
+++ b/das-java/contrib/ldap/das.ldap/src/test/java/org/apache/tuscany/das/ldap/emf/update/test/EDataGraphUpdateTest.java
@@ -0,0 +1,180 @@
+/*
+ * 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.update.test;
+
+import java.util.Hashtable;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.tuscany.das.ldap.emf.read.EDataGraphReader;
+import org.apache.tuscany.das.ldap.emf.update.EDataGraphUpdater;
+import org.apache.tuscany.das.ldap.prototype.setup.test.EDataGraphSetupTest;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.sdo.EChangeSummary;
+import org.eclipse.emf.ecore.sdo.EDataObject;
+
+public class EDataGraphUpdateTest
+extends EDataGraphSetupTest
+{
+ public void testUpdate() throws NamingException
+ {
+ dataObjectToRelativeDNCache =
+ new Hashtable<EDataObject, String>();
+
+ eDataGraph =
+ EDataGraphReader.read(
+ userEClass,
+ "1",
+ rootContext,
+ dataObjectToRelativeDNCache);
+
+ assertTrue(
+ dataObjectToRelativeDNCache.
+ containsValue(authorizationDataObject1RDN));
+ assertTrue(
+ dataObjectToRelativeDNCache.
+ containsValue(authorizationDataObject2RDN));
+
+ userDataObject =
+ (EDataObject) eDataGraph.getRootObject();
+
+ String userEntryRDN = dataObjectToRelativeDNCache.get(userDataObject);
+ Attributes attributes = rootContext.getAttributes(userEntryRDN);
+
+ assertEquals(userDataObject.eGet(userNameEAttribute), "ole");
+ assertEquals(userDataObject.eGet(userPasswordEAttribute), "secret");
+ assertEquals(userDataObject.eGet(userAgeEAttribute), 33);
+ assertEquals(userDataObject.eGet(userHeightEAttribute), 6.11);
+ assertEquals(userDataObject.eGet(userIsMaleEAttribute), true);
+ assertEquals("2", attributes.get("example-com-users-accounts-User-authorizationList").get(0));
+ assertEquals("3", attributes.get("example-com-users-accounts-User-authorizationList").get(1));
+
+ EChangeSummary eChangeSummary =
+ (EChangeSummary) eDataGraph.getChangeSummary();
+
+ eChangeSummary.beginLogging();
+
+ userDataObject.eSet(userIsMaleEAttribute, false);
+ userDataObject.eSet(userHeightEAttribute, 2.00);
+ userDataObject.eSet(userAgeEAttribute, 80);
+ userDataObject.eSet(userPasswordEAttribute, "totallysecret");
+
+ EList<EDataObject> userAuthorizationReferenceList =
+ (EList)userDataObject
+ .eGet(userAuthorizationEReference);
+
+ userAuthorizationReferenceList.remove(0);
+
+ assertEquals(userDataObject.eGet(userIsMaleEAttribute), false);
+ assertEquals(userDataObject.eGet(userHeightEAttribute), 2.00);
+ assertEquals(userDataObject.eGet(userAgeEAttribute), 80);
+ assertEquals(userDataObject.eGet(userPasswordEAttribute), "totallysecret");
+
+ eChangeSummary.endLogging();
+
+ EDataGraphUpdater.update(
+ eDataGraph,
+ rootContext,
+ dataObjectToRelativeDNCache);
+
+ attributes = rootContext.getAttributes(userEntryRDN);
+
+ assertEquals("FALSE", attributes.get("example-com-users-accounts-User-isMale").get());
+ assertEquals("2.0", attributes.get("example-com-users-accounts-User-userHeight").get());
+ assertEquals("80", attributes.get("example-com-users-accounts-User-userAge").get());
+ assertEquals("totallysecret", attributes.get("example-com-users-accounts-User-userPassword").get());
+ assertEquals("5", attributes.get("example-com-users-accounts-User-configuration").get());
+
+ /*
+ * Test that the ID of the Authorization instance with id 2 was removed
+ */
+ assertEquals(
+ "3",
+ attributes.
+ get("example-com-users-accounts-User-authorizationList").
+ get(0));
+
+ /*
+ * Also make sure that the dataObjectToRelativeDNCache was updated
+ */
+ assertFalse(
+ dataObjectToRelativeDNCache.
+ containsValue(authorizationDataObject1RDN));
+
+ eChangeSummary.beginLogging();
+
+ userDataObject.eUnset(userConfigurationEReference);
+ userAuthorizationReferenceList.remove(0);
+
+ eChangeSummary.endLogging();
+
+ EDataGraphUpdater.update(
+ eDataGraph,
+ rootContext,
+ dataObjectToRelativeDNCache);
+
+ attributes = rootContext.getAttributes(userEntryRDN);
+
+ boolean isConfigurationAttributeDeleted = false;
+
+ try {
+ attributes.get("example-com-users-accounts-User-configuration").get();
+ }
+ catch (Exception e)
+ {
+ isConfigurationAttributeDeleted = true;
+ }
+ assertTrue(isConfigurationAttributeDeleted);
+
+ boolean isAuthorizationlListAttributeDeleted = false;
+
+ try {
+ attributes.get("example-com-users-accounts-User-authorizationList").get();
+ }
+ catch (Exception e)
+ {
+ isAuthorizationlListAttributeDeleted = true;
+ }
+ assertTrue(isAuthorizationlListAttributeDeleted);
+ assertFalse(
+ dataObjectToRelativeDNCache.
+ containsValue(authorizationDataObject2RDN));
+
+ eChangeSummary.beginLogging();
+
+ userAuthorizationReferenceList.add(authorizationDataObject0);
+ userAuthorizationReferenceList.add(authorizationDataObject1);
+
+ eChangeSummary.endLogging();
+
+ EDataGraphUpdater.update(
+ eDataGraph,
+ rootContext,
+ dataObjectToRelativeDNCache);
+
+ assertTrue(
+ dataObjectToRelativeDNCache.
+ containsValue(authorizationDataObject1RDN));
+ assertTrue(
+ dataObjectToRelativeDNCache.
+ containsValue(authorizationDataObject2RDN));
+ }
+} \ No newline at end of file