Repository: incubator-zeppelin
Updated Branches:
  refs/heads/master 4f3c84049 -> a849b4b3b


Fix zeppelin-server security tests on case-sensitive hostname

On os x, w/ case-sensitive hostname some test for zeppelin-server were failing

```
$hostname
MacBookPro.local

$mvn -pl zeppelin-server test
...
Results :

Failed tests:
  SecurityUtilsTest.isLocalMachine:56 null
  NotebookServerTest.CheckOrigin:43 null

Tests run: 22, Failures: 2, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
```

This PR changes fixes it.

Author: Alexander Bezzubov <[email protected]>

Closes #281 from bzz/fix-security-tests-on-casesensitive-hostnames and squashes 
the following commits:

a72945b [Alexander Bezzubov] Fixing bug with case-sensitive hostnames
64c3573 [Alexander Bezzubov] Refactoring NotebookServerTest
b26639d [Alexander Bezzubov] Refactoring SecurityUtils and its test


Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/a849b4b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/a849b4b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/a849b4b3

Branch: refs/heads/master
Commit: a849b4b3b7f19f6fd1a798953d9e4fdd514c8d04
Parents: 4f3c840
Author: Alexander Bezzubov <[email protected]>
Authored: Fri Sep 4 19:57:08 2015 +0900
Committer: Alexander Bezzubov <[email protected]>
Committed: Sat Sep 5 07:19:30 2015 +0900

----------------------------------------------------------------------
 .../apache/zeppelin/utils/SecurityUtils.java    |  23 ++--
 .../zeppelin/security/SecurityUtilsTest.java    | 104 +++++++++----------
 .../zeppelin/socket/NotebookServerTest.java     |  39 ++++---
 3 files changed, 79 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/a849b4b3/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java 
b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java
index 004f10d..732c7c8 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/SecurityUtils.java
@@ -18,29 +18,30 @@ package org.apache.zeppelin.utils;
 
 import org.apache.zeppelin.conf.ZeppelinConfiguration;
 
+import java.net.InetAddress;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.UnknownHostException;
 
 /**
- * Created by joelz on 8/19/15.
+ * Tools for securing Zeppelin
  */
 public class SecurityUtils {
+
   public static Boolean isValidOrigin(String sourceHost, ZeppelinConfiguration 
conf)
       throws UnknownHostException, URISyntaxException {
-    if (sourceHost == null){
+    if (sourceHost == null || sourceHost.isEmpty()){
       return false;
     }
+    String sourceUriHost = new URI(sourceHost).getHost();
+    sourceUriHost = (sourceUriHost == null) ? "" : sourceUriHost.toLowerCase();
 
-    URI sourceHostUri = new URI(sourceHost);
-    String currentHost = 
java.net.InetAddress.getLocalHost().getHostName().toLowerCase();
-    if (currentHost.equals(sourceHostUri.getHost()) ||
-            "localhost".equals(sourceHostUri.getHost()) ||
-            conf.getAllowedOrigins().contains(sourceHost) ||
-            conf.getAllowedOrigins().contains("*")) {
-      return true;
-    }
+    sourceUriHost = sourceUriHost.toLowerCase();
+    String currentHost = 
InetAddress.getLocalHost().getHostName().toLowerCase();
 
-    return false;
+    return conf.getAllowedOrigins().contains("*") ||
+            currentHost.equals(sourceUriHost) ||
+            "localhost".equals(sourceUriHost) ||
+            conf.getAllowedOrigins().contains(sourceHost);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/a849b4b3/zeppelin-server/src/test/java/org/apache/zeppelin/security/SecurityUtilsTest.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/security/SecurityUtilsTest.java
 
b/zeppelin-server/src/test/java/org/apache/zeppelin/security/SecurityUtilsTest.java
index df9f803..0100bb7 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/security/SecurityUtilsTest.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/security/SecurityUtilsTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.zeppelin.security;
 
-import junit.framework.Assert;
+import static org.junit.Assert.*;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.zeppelin.conf.ZeppelinConfiguration;
 import org.apache.zeppelin.utils.SecurityUtils;
@@ -24,67 +24,61 @@ import org.junit.Test;
 
 import java.net.URISyntaxException;
 import java.net.UnknownHostException;
+import java.net.InetAddress;
+
 
-/**
- * Created by joelz on 8/19/15.
- */
 public class SecurityUtilsTest {
-    @Test
-    public void isInvalid() throws URISyntaxException, UnknownHostException {
-        Assert.assertFalse(SecurityUtils.isValidOrigin("http://127.0.1.1";, 
ZeppelinConfiguration.create()));
-    }
 
-    @Test
-    public void isInvalidFromConfig() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
-        Assert.assertFalse(
-                SecurityUtils.isValidOrigin("http://otherinvalidhost.com";,
-                        new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
-    }
+  @Test
+  public void isInvalid() throws URISyntaxException, UnknownHostException {
+    assertFalse(SecurityUtils.isValidOrigin("http://127.0.1.1";, 
ZeppelinConfiguration.create()));
+  }
+
+  @Test
+  public void isInvalidFromConfig() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
+    assertFalse(SecurityUtils.isValidOrigin("http://otherinvalidhost.com";,
+          new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
+  }
 
-    @Test
-    public void isLocalhost() throws URISyntaxException, UnknownHostException {
-        Assert.assertTrue(SecurityUtils.isValidOrigin("http://localhost";, 
ZeppelinConfiguration.create()));
-    }
+  @Test
+  public void isLocalhost() throws URISyntaxException, UnknownHostException {
+    assertTrue(SecurityUtils.isValidOrigin("http://localhost";, 
ZeppelinConfiguration.create()));
+  }
 
-    @Test
-    public void isLocalMachine() throws URISyntaxException, 
UnknownHostException {
-        Assert.assertTrue(SecurityUtils.isValidOrigin(
-                "http://"; + java.net.InetAddress.getLocalHost().getHostName(),
-                ZeppelinConfiguration.create()));
-    }
+  @Test
+  public void isLocalMachine() throws URISyntaxException, UnknownHostException 
{
+    String origin = "http://"; + InetAddress.getLocalHost().getHostName();
+    assertTrue("Origin " + origin + " is not allowed. Please check your 
hostname.",
+               SecurityUtils.isValidOrigin(origin, 
ZeppelinConfiguration.create()));
+  }
 
-    @Test
-    public void isValidFromConfig() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
-        Assert.assertTrue(
-                SecurityUtils.isValidOrigin("http://otherhost.com";,
-                        new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
-    }
+  @Test
+  public void isValidFromConfig() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
+    assertTrue(SecurityUtils.isValidOrigin("http://otherhost.com";,
+           new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
+  }
 
-    @Test
-    public void isValidFromStar() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
-        Assert.assertTrue(
-                SecurityUtils.isValidOrigin("http://anyhost.com";,
-                        new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site-star.xml"))));
-    }
+  @Test
+  public void isValidFromStar() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
+    assertTrue(SecurityUtils.isValidOrigin("http://anyhost.com";,
+           new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site-star.xml"))));
+  }
 
-    @Test
-    public void nullOrigin() throws URISyntaxException, UnknownHostException, 
ConfigurationException {
-        Assert.assertFalse(
-                SecurityUtils.isValidOrigin(null,
-                        new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
-    }
+  @Test
+  public void nullOrigin() throws URISyntaxException, UnknownHostException, 
ConfigurationException {
+    assertFalse(SecurityUtils.isValidOrigin(null,
+          new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
+  }
 
-    @Test
-    public void emptyOrigin() throws URISyntaxException, UnknownHostException, 
ConfigurationException {
-        Assert.assertFalse(
-                SecurityUtils.isValidOrigin("",
-                        new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
-    }
+  @Test
+  public void emptyOrigin() throws URISyntaxException, UnknownHostException, 
ConfigurationException {
+    assertFalse(SecurityUtils.isValidOrigin("",
+          new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
+  }
 
-    @Test
-    public void notAURIOrigin() throws URISyntaxException, 
UnknownHostException, ConfigurationException {
-        Assert.assertFalse(
-                SecurityUtils.isValidOrigin("test123",
-                        new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
-    }
-}
\ No newline at end of file
+  @Test
+  public void notAURIOrigin() throws URISyntaxException, UnknownHostException, 
ConfigurationException {
+    assertFalse(SecurityUtils.isValidOrigin("test123",
+          new 
ZeppelinConfiguration(this.getClass().getResource("/zeppelin-site.xml"))));
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/a849b4b3/zeppelin-server/src/test/java/org/apache/zeppelin/socket/NotebookServerTest.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/socket/NotebookServerTest.java
 
b/zeppelin-server/src/test/java/org/apache/zeppelin/socket/NotebookServerTest.java
index 34cd411..c17809a 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/socket/NotebookServerTest.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/socket/NotebookServerTest.java
@@ -19,34 +19,31 @@
  */
 package org.apache.zeppelin.socket;
 
-import org.junit.Assert;
-import org.junit.Test;
-
+import static org.junit.Assert.*;
 import java.io.IOException;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.net.UnknownHostException;
+import java.net.InetAddress;
 
 /**
  * BASIC Zeppelin rest api tests
- *
- *
- * @author joelz
- *
  */
-    public class NotebookServerTest {
+public class NotebookServerTest {
+
+  @Test
+  public void checkOrigin() throws UnknownHostException {
+    NotebookServer server = new NotebookServer();
+    String origin = "http://"; + InetAddress.getLocalHost().getHostName() + 
":8080";
+
+    assertTrue("Origin " + origin + " is not allowed. Please check your 
hostname.",
+          server.checkOrigin(new TestHttpServletRequest(), origin));
+  }
 
-    @Test
-    public void CheckOrigin() throws UnknownHostException {
-        NotebookServer server = new NotebookServer();
-         Assert.assertTrue(server.checkOrigin(new TestHttpServletRequest(),
-                 "http://"; + java.net.InetAddress.getLocalHost().getHostName() 
+ ":8080"));
-    }
+  @Test
+  public void checkInvalidOrigin(){
+    NotebookServer server = new NotebookServer();
+    assertFalse(server.checkOrigin(new TestHttpServletRequest(), 
"http://evillocalhost:8080";));
+  }
+}
 
-    @Test
-    public void CheckInvalidOrigin(){
-        NotebookServer server = new NotebookServer();
-        Assert.assertFalse(server.checkOrigin(new TestHttpServletRequest(), 
"http://evillocalhost:8080";));
-    }
-}
\ No newline at end of file

Reply via email to