You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by kr...@apache.org on 2019/03/28 18:08:37 UTC

[lucene-solr] branch jira/solr-13353 created (now 8d658a8)

This is an automated email from the ASF dual-hosted git repository.

krisden pushed a change to branch jira/solr-13353
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


      at 8d658a8  SOLR-13353: Add SolrCli AuthTool test

This branch includes the following new commits:

     new 8d658a8  SOLR-13353: Add SolrCli AuthTool test

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[lucene-solr] 01/01: SOLR-13353: Add SolrCli AuthTool test

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch jira/solr-13353
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 8d658a8cfb8d4ba1f314c2ebf493443dafd34639
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Thu Mar 28 14:07:41 2019 -0400

    SOLR-13353: Add SolrCli AuthTool test
    
    Signed-off-by: Kevin Risden <kr...@apache.org>
---
 solr/CHANGES.txt                                   |  2 +
 .../src/java/org/apache/solr/util/SolrCLI.java     |  4 +-
 .../test/org/apache/solr/util/AuthToolTest.java    | 76 ++++++++++++++++++++++
 3 files changed, 81 insertions(+), 1 deletion(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0c371e0..8d4d606 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -198,6 +198,8 @@ Other Changes
 
 * SOLR-13112: Upgrade jackson to 2.9.8 (Kevin Risden)
 
+* SOLR-13353: Add SolrCli AuthTool test (Kevin Risden)
+
 ==================  8.0.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index e25af14..b6ee318 100755
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -78,6 +78,7 @@ import org.apache.commons.exec.OS;
 import org.apache.commons.exec.environment.EnvironmentUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.SystemUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
@@ -4092,7 +4093,8 @@ public class SolrCLI {
     private void ensureArgumentIsValidBooleanIfPresent(CommandLine cli, String argName) {
       if (cli.hasOption(argName)) {
         final String value = cli.getOptionValue(argName);
-        if (Boolean.parseBoolean(value)) {
+        final Boolean parsedBoolean = BooleanUtils.toBooleanObject(value);
+        if (parsedBoolean == null) {
           echo("Argument [" + argName + "] must be either true or false, but was [" + value + "]");
           exit(1);
         }
diff --git a/solr/core/src/test/org/apache/solr/util/AuthToolTest.java b/solr/core/src/test/org/apache/solr/util/AuthToolTest.java
new file mode 100644
index 0000000..4325bf5
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/util/AuthToolTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.solr.util;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.solr.cloud.SolrCloudTestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.apache.solr.util.SolrCLI.findTool;
+import static org.apache.solr.util.SolrCLI.parseCmdLine;
+
+/**
+ * Unit test for SolrCLI's AuthTool
+ */
+public class AuthToolTest extends SolrCloudTestCase {
+  private Path dir;
+
+  @BeforeClass
+  public static void setupCluster() throws Exception {
+    configureCluster(1)
+        .addConfig("config", TEST_PATH().resolve("configsets").resolve("cloud-minimal").resolve("conf"))
+        .configure();
+  }
+
+  @Before
+  public void setUp() throws Exception {
+    super.setUp();
+    dir = createTempDir("AuthToolTest").toAbsolutePath();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    super.tearDown();
+    org.apache.commons.io.FileUtils.deleteDirectory(dir.toFile());
+  }
+
+  @Test
+  public void testEnableAuth() throws Exception {
+    Path solrIncludeFile = Files.createFile(dir.resolve("solrIncludeFile.txt"));
+    String[] args = {"auth", "enable",
+        "-zkHost", cluster.getZkClient().getZkServerAddress(),
+        "-authConfDir", dir.toAbsolutePath().toString(),
+        "-solrIncludeFile", solrIncludeFile.toAbsolutePath().toString(),
+        "-credentials", "solr:solr",
+        "-blockUnknown", "true"};
+    assertEquals(0, runTool(args));
+  }
+
+  private int runTool(String[] args) throws Exception {
+    SolrCLI.Tool tool = findTool(args);
+    assertTrue(tool instanceof SolrCLI.AuthTool);
+    CommandLine cli = parseCmdLine(args, tool.getOptions());
+    return tool.runTool(cli);
+  }
+}