From b57960e67b69040394c9dcb687af52305fd47ab8 Mon Sep 17 00:00:00 2001
From: Manuel Gaupp <m.gaupp@scanplus.de>
Date: Mon, 13 Jan 2014 09:45:09 +0000
Subject: [PATCH] CR-1602 (OPENDJ-883) Implement certificateExactMatch matching rule

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java
index f90ae5a..0ddc0cd 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java
@@ -22,9 +22,11 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2013-2014 Manuel Gaupp
  */
 package org.opends.server.controls;
 
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -37,6 +39,7 @@
 import org.opends.server.types.*;
 import org.opends.server.protocols.asn1.ASN1Writer;
 import org.opends.server.protocols.asn1.ASN1;
+import org.opends.server.util.Base64;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
@@ -964,4 +967,49 @@
     }
 
   }
+
+  /**
+   *
+   */
+  @DataProvider(name = "differentNormalization")
+  public Object[][] differentNormalizationData() throws ParseException
+  {
+    final String BASE64_CERT_VALUE =
+      "MIICpTCCAg6gAwIBAgIJALeoA6I3ZC/cMA0GCSqGSIb3DQEBBQUAMFYxCzAJBgNV" +
+      "BAYTAlVTMRMwEQYDVQQHEwpDdXBlcnRpb25lMRwwGgYDVQQLExNQcm9kdWN0IERl" +
+      "dmVsb3BtZW50MRQwEgYDVQQDEwtCYWJzIEplbnNlbjAeFw0xMjA1MDIxNjM0MzVa" +
+      "Fw0xMjEyMjExNjM0MzVaMFYxCzAJBgNVBAYTAlVTMRMwEQYDVQQHEwpDdXBlcnRp" +
+      "b25lMRwwGgYDVQQLExNQcm9kdWN0IERldmVsb3BtZW50MRQwEgYDVQQDEwtCYWJz" +
+      "IEplbnNlbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApysa0c9qc8FB8gIJ" +
+      "8zAb1pbJ4HzC7iRlVGhRJjFORkGhyvU4P5o2wL0iz/uko6rL9/pFhIlIMbwbV8sm" +
+      "mKeNUPitwiKOjoFDmtimcZ4bx5UTAYLbbHMpEdwSpMC5iF2UioM7qdiwpAfZBd6Z" +
+      "69vqNxuUJ6tP+hxtr/aSgMH2i8ECAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgB" +
+      "hvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYE" +
+      "FLlZD3aKDa8jdhzoByOFMAJDs2osMB8GA1UdIwQYMBaAFLlZD3aKDa8jdhzoByOF" +
+      "MAJDs2osMA0GCSqGSIb3DQEBBQUAA4GBAE5vccY8Ydd7by2bbwiDKgQqVyoKrkUg" +
+      "6CD0WRmc2pBeYX2z94/PWO5L3Fx+eIZh2wTxScF+FdRWJzLbUaBuClrxuy0Y5ifj" +
+      "axuJ8LFNbZtsp1ldW3i84+F5+SYT+xI67ZcoAtwx/VFVI9s5I/Gkmu9f9nxjPpK7" +
+      "1AIUXiE3Qcck";
+    final String CERT_EXACT_ASSERTION =
+      "{ serialNumber 13233831500277100508, issuer rdnSequence:\""+
+      "CN=Babs Jensen,OU=Product Development,L=Cupertione,C=US\" }";
+    return new Object[][]{
+      {"userCertificate", ByteString.wrap(Base64.decode(BASE64_CERT_VALUE)),
+        CERT_EXACT_ASSERTION}};
+  }
+
+  /**
+   *
+   */
+  @Test(dataProvider = "differentNormalization")
+  public void testDifferentNormalization(String type, ByteString value,
+                                         String assertion)
+  {
+    MatchedValuesFilter mvf;
+    AttributeType attrType = DirectoryServer.getAttributeType("usercertificate");
+    AttributeValue attrValue = AttributeValues.create(attrType, value);
+
+    mvf = MatchedValuesFilter.createEqualityFilter(type, ByteString.valueOf(assertion));
+    assertTrue(mvf.valueMatches(attrType, attrValue));
+  }
 }

--
Gitblit v1.10.0