From 430ee1df6a3ccefed6c77004f9c36a99211719c5 Mon Sep 17 00:00:00 2001
From: ian.packer <ian.packer@forgerock.com>
Date: Fri, 01 Apr 2016 11:44:16 +0000
Subject: [PATCH] OPENDJ-2814 return false when BooleanSyntax valueIsAcceptable fails

---
 opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxTest.java |   52 ++++++++++++++++++++++++++
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxImpl.java |   14 ++++---
 2 files changed, 60 insertions(+), 6 deletions(-)

diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxImpl.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxImpl.java
index a6b6624..c8feaaa 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxImpl.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxImpl.java
@@ -50,13 +50,15 @@
     @Override
     public boolean valueIsAcceptable(final Schema schema, final ByteSequence value,
             final LocalizableMessageBuilder invalidReason) {
-        final String valueString = value.toString().toUpperCase();
+        final String valueString = value.toString();
+        final String valueUpperCase = valueString.toUpperCase();
 
-        if (!"TRUE".equals(valueString) && !"YES".equals(valueString)
-                && !"ON".equals(valueString) && !"1".equals(valueString)
-                && !"FALSE".equals(valueString) && !"NO".equals(valueString)
-                && !"OFF".equals(valueString) && !"0".equals(valueString)) {
-            invalidReason.append(WARN_ATTR_SYNTAX_ILLEGAL_BOOLEAN.get(value.toString()));
+        if (!"TRUE".equals(valueUpperCase) && !"YES".equals(valueUpperCase)
+                && !"ON".equals(valueUpperCase) && !"1".equals(valueUpperCase)
+                && !"FALSE".equals(valueUpperCase) && !"NO".equals(valueUpperCase)
+                && !"OFF".equals(valueUpperCase) && !"0".equals(valueUpperCase)) {
+            invalidReason.append(WARN_ATTR_SYNTAX_ILLEGAL_BOOLEAN.get(valueString));
+            return false;
         }
         return true;
     }
diff --git a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxTest.java b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxTest.java
new file mode 100644
index 0000000..c283de3
--- /dev/null
+++ b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/BooleanSyntaxTest.java
@@ -0,0 +1,52 @@
+/*
+ * The contents of this file are subject to the terms of the Common Development and
+ * Distribution License (the License). You may not use this file except in compliance with the
+ * License.
+ *
+ * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
+ * specific language governing permission and limitations under the License.
+ *
+ * When distributing Covered Software, include this CDDL Header Notice in each file and include
+ * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
+ * Header, with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]".
+ *
+ * Copyright 2016 ForgeRock AS.
+ */
+package org.forgerock.opendj.ldap.schema;
+
+import static org.forgerock.opendj.ldap.schema.SchemaConstants.SYNTAX_BOOLEAN_OID;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+/** Boolean syntax tests. */
+@Test
+public class BooleanSyntaxTest extends AbstractSyntaxTestCase {
+    @Override
+    @DataProvider(name = "acceptableValues")
+    public Object[][] createAcceptableValues() {
+        return new Object[][] {
+            { "TRUE", true },
+            { "FALSE", true },
+            { "true", true },
+            { "false", true },
+            { "YES", true },
+            { "NO", true },
+            { "ON", true },
+            { "OFF", true },
+            { "1", true },
+            { "0", true },
+            { "'0'B", false },
+            { "invalidtrue", false },
+            { " true", false },
+            { "NOT", false },
+            { "'010100000111111010101000'B", false }
+        };
+    }
+
+    @Override
+    protected Syntax getRule() {
+        return Schema.getCoreSchema().getSyntax(SYNTAX_BOOLEAN_OID);
+    }
+}

--
Gitblit v1.10.0