You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sz...@apache.org on 2005/11/03 11:30:58 UTC

svn commit: r330524 - in /directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi: ops/add/AllTests.java ops/add/BinaryDataAddTest.java util/AttributesFactory.java

Author: szoerner
Date: Thu Nov  3 02:30:52 2005
New Revision: 330524

URL: http://svn.apache.org/viewcvs?rev=330524&view=rev
Log:
Add test case for adding entries with binary data.
This is to demonstrate that DIREVE-163 does not occur any more.

Added:
    directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/BinaryDataAddTest.java   (with props)
Modified:
    directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/AllTests.java
    directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/util/AttributesFactory.java

Modified: directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/AllTests.java
URL: http://svn.apache.org/viewcvs/directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/AllTests.java?rev=330524&r1=330523&r2=330524&view=diff
==============================================================================
--- directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/AllTests.java (original)
+++ directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/AllTests.java Thu Nov  3 02:30:52 2005
@@ -34,6 +34,7 @@
 
         suite.addTestSuite(BasicAddTests.class);
         suite.addTestSuite(SpecialCharacterAddTests.class);
+        suite.addTestSuite(BinaryDataAddTest.class);
 
         return suite;
     }

Added: directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/BinaryDataAddTest.java
URL: http://svn.apache.org/viewcvs/directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/BinaryDataAddTest.java?rev=330524&view=auto
==============================================================================
--- directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/BinaryDataAddTest.java (added)
+++ directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/BinaryDataAddTest.java Thu Nov  3 02:30:52 2005
@@ -0,0 +1,113 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed 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.ldap.testsuite.ldaptests.jndi.ops.add;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Random;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.DirContext;
+
+import org.apache.ldap.testsuite.ldaptests.jndi.BaseProtocolTest;
+import org.apache.ldap.testsuite.ldaptests.jndi.util.AttributesFactory;
+
+/**
+ * Check whether adding entries with binary data works.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class BinaryDataAddTest extends BaseProtocolTest
+{
+
+    private static String PERSON_SN_VALUE = "Amos";
+
+    private static String PERSON_CN_VALUE = "Tori Amos";
+
+    private static String PERSON_RDN = "cn=" + PERSON_CN_VALUE;
+
+    DirContext ctx;
+
+    public void setUp() throws NamingException
+    {
+        super.setUp();
+
+        ctx = this.createContext();
+        ctx = (DirContext) ctx.lookup(this.getTestContainerRdn());
+    }
+
+    public void tearDown() throws NamingException
+    {
+        ctx.close();
+        ctx = null;
+
+        super.tearDown();
+    }
+
+    /**
+     * Add an inetOrgPerson entry with photo and check whether it can be
+     * retrieved back correctly.
+     */
+    public void testInetOrgPersonWithJpegPhoto() throws NamingException
+    {
+        Attributes attrs = AttributesFactory.createInetOrgPersonAttributes(PERSON_CN_VALUE, PERSON_SN_VALUE);
+
+        // Random data for jpegPhoto, 64k
+        byte[] sourceData = new byte[64 * 1024];
+        Random r = new Random(0);
+        for (int i = 0; i < sourceData.length; i++) {
+            sourceData[i] = (byte) r.nextInt();
+        }
+        attrs.put("jpegPhoto", sourceData);
+
+        // Create entry
+        ctx.bind(PERSON_RDN, null, attrs);
+
+        // Read same entry and compare data bytewise
+        Attributes readAttrs = ctx.getAttributes(PERSON_RDN);
+        Attribute image = readAttrs.get("jpegPhoto");
+        byte[] imageBytes = (byte[]) image.get();
+        for (int i = 0; i < imageBytes.length; i++) {
+            assertEquals("Byte number " + i, sourceData[i], imageBytes[i]);
+        }
+    }
+
+    /**
+     * Add an person entry with userPassword and check whether the value can be
+     * retrieved back correctly.
+     */
+    public void testPersonWithPassword() throws NamingException, UnsupportedEncodingException
+    {
+        Attributes attrs = AttributesFactory.createPersonAttributes(PERSON_CN_VALUE, PERSON_SN_VALUE);
+
+        String password = "MySecret1!";
+        attrs.put("userPassword", password.getBytes("UTF-8"));
+
+        // Create entry
+        ctx.bind(PERSON_RDN, null, attrs);
+
+        // Read same entry and compare password value
+        Attributes readAttrs = ctx.getAttributes(PERSON_RDN);
+        Attribute pwd = readAttrs.get("userPassword");
+        byte[] bytes = (byte[]) pwd.get();
+        String toTest = new String(bytes, "UTF-8");
+        assertEquals(password, toTest);
+    }
+
+}
\ No newline at end of file

Propchange: directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/ops/add/BinaryDataAddTest.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/util/AttributesFactory.java
URL: http://svn.apache.org/viewcvs/directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/util/AttributesFactory.java?rev=330524&r1=330523&r2=330524&view=diff
==============================================================================
--- directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/util/AttributesFactory.java (original)
+++ directory/testsuite/trunk/ldaptests/src/main/java/org/apache/ldap/testsuite/ldaptests/jndi/util/AttributesFactory.java Thu Nov  3 02:30:52 2005
@@ -57,6 +57,36 @@
     }
 
     /**
+     * Creates the required attributes for an inetOrgPerson as defined in RFC
+     * 2798 ("Definition of the inetOrgPerson LDAP Object Class"). The result
+     * contains an objectClass attribute with the appropriate values, and the
+     * attributes sn and cn, which are required from person.
+     * 
+     * @param cn
+     *            common name of person
+     * @param sn
+     *            surname of person
+     * 
+     * @return attributes object with the required attributes for an inetOrgPerson
+     */
+    public static final Attributes createInetOrgPersonAttributes(String cn, String sn)
+    {
+        Attributes person = new BasicAttributes();
+
+        Attribute ocls = new BasicAttribute("objectClass");
+        ocls.add("top");
+        ocls.add("person");
+        ocls.add("organizationalPerson");
+        ocls.add("inetOrgPerson");
+        person.put(ocls);
+
+        person.put("cn", cn);
+        person.put("sn", sn);
+
+        return person;
+    }
+
+    /**
      * Creates the required attributes for an organizational unit as defined in
      * RFC 2256. The result contains an objectClass attribute with values top
      * and organizationalUnit, and the mandatory attribute ou.