From 576cef3c07ed055889e9249296dc2a2a7ade6c1c Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Wed, 16 Jul 2014 17:06:00 +0000
Subject: [PATCH] Fix for OPENDJ-1510 - Password Storage Scheme for PKCS5S2. Fix test failures with Java 6 due to limitation in JDK.

---
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PKCS5S2PasswordStorageSchemeTestCase.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PKCS5S2PasswordStorageSchemeTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PKCS5S2PasswordStorageSchemeTestCase.java
index dfac4e3..9d21145 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PKCS5S2PasswordStorageSchemeTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PKCS5S2PasswordStorageSchemeTestCase.java
@@ -31,6 +31,7 @@
 import org.opends.server.admin.std.meta.PKCS5S2PasswordStorageSchemeCfgDefn;
 import org.opends.server.admin.std.server.PKCS5S2PasswordStorageSchemeCfg;
 import org.opends.server.api.PasswordStorageScheme;
+import org.opends.server.types.ByteString;
 import org.opends.server.types.Entry;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -53,6 +54,47 @@
   }
 
 
+  /**
+   * Retrieves a set of passwords that may be used to test the password storage
+   * scheme.
+   *
+   * @return  A set of passwords that may be used to test the password storage
+   *          scheme.
+   */
+  @DataProvider(name = "testPasswords")
+  public Object[][] getTestPasswords()
+  {
+    return new Object[][]
+    {
+      /*
+       * JDK Bug 6879540. Empty passwords are not accepted when generating PBESpecKey.
+       * The bug is present in Java 6 and some version of Java 7.
+       * new Object[] { ByteString.empty() },
+       * new Object[] { ByteString.valueOf("") },
+       */
+      new Object[] { ByteString.valueOf("\u0000") },
+      new Object[] { ByteString.valueOf("\t") },
+      new Object[] { ByteString.valueOf("\n") },
+      new Object[] { ByteString.valueOf("\r\n") },
+      new Object[] { ByteString.valueOf(" ") },
+      new Object[] { ByteString.valueOf("Test1\tTest2\tTest3") },
+      new Object[] { ByteString.valueOf("Test1\nTest2\nTest3") },
+      new Object[] { ByteString.valueOf("Test1\r\nTest2\r\nTest3") },
+      new Object[] { ByteString.valueOf("a") },
+      new Object[] { ByteString.valueOf("ab") },
+      new Object[] { ByteString.valueOf("abc") },
+      new Object[] { ByteString.valueOf("abcd") },
+      new Object[] { ByteString.valueOf("abcde") },
+      new Object[] { ByteString.valueOf("abcdef") },
+      new Object[] { ByteString.valueOf("abcdefg") },
+      new Object[] { ByteString.valueOf("abcdefgh") },
+      new Object[] { ByteString.valueOf("The Quick Brown Fox Jumps Over " +
+          "The Lazy Dog") },
+      new Object[] { ByteString.valueOf("\u00BFD\u00F3nde est\u00E1 el " +
+          "ba\u00F1o?") }
+    };
+  }
+
 
   /**
    * Retrieves an initialized instance of this password storage scheme.

--
Gitblit v1.10.0