From 6c99111bdd39e1c76817c9f0fb3a37a9b17bd998 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 20 Jun 2016 15:21:45 +0900 Subject: [PATCH 1/7] add initSecurityManager method. --- .../java/org/apache/zeppelin/server/ZeppelinServer.java | 2 ++ .../java/org/apache/zeppelin/utils/SecurityUtils.java | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java index 7412611532b..a8ae82b63f7 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java @@ -32,6 +32,7 @@ import org.apache.zeppelin.search.SearchService; import org.apache.zeppelin.socket.NotebookServer; import org.apache.zeppelin.user.Credentials; +import org.apache.zeppelin.utils.SecurityUtils; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.server.*; import org.eclipse.jetty.server.handler.ContextHandlerCollection; @@ -238,6 +239,7 @@ private static void setupRestApiContextHandler(WebAppContext webapp, webapp.setInitParameter("shiroConfigLocations", new File(conf.getShiroPath()).toURI().toString()); + SecurityUtils.initSecurityManager(); webapp.addFilter(org.apache.shiro.web.servlet.ShiroFilter.class, "/api/*", EnumSet.allOf(DispatcherType.class)); 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 4de45731a76..b9cda7c4a9f 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 @@ -21,6 +21,9 @@ import org.apache.shiro.subject.Subject; import org.apache.shiro.util.ThreadContext; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.config.Ini; +import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.zeppelin.conf.ZeppelinConfiguration; import java.net.InetAddress; @@ -34,6 +37,12 @@ */ public class SecurityUtils { + public static void initSecurityManager() { + IniSecurityManagerFactory factory = new IniSecurityManagerFactory(); + SecurityManager securityManager = factory.getInstance(); + org.apache.shiro.SecurityUtils.setSecurityManager( securityManager ); + } + public static Boolean isValidOrigin(String sourceHost, ZeppelinConfiguration conf) throws UnknownHostException, URISyntaxException { if (sourceHost == null || sourceHost.isEmpty()) { From 13a6139b1714a32718b5fa36cc3c6d8fad2ca435 Mon Sep 17 00:00:00 2001 From: astroshim Date: Mon, 20 Jun 2016 16:45:33 +0900 Subject: [PATCH 2/7] add shiro-config-core --- pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pom.xml b/pom.xml index 0d4abc5e63c..f52be482f3d 100755 --- a/pom.xml +++ b/pom.xml @@ -211,6 +211,10 @@ shiro-web 1.2.3 + + org.apache.shiro + shiro-config-core + From 5a2b26829681f41ceae54ab7b4d90fea7df9e8ba Mon Sep 17 00:00:00 2001 From: astroshim Date: Mon, 20 Jun 2016 17:08:49 +0900 Subject: [PATCH 3/7] add shiro ini to SecurityManager. --- .../main/java/org/apache/zeppelin/server/ZeppelinServer.java | 2 +- .../main/java/org/apache/zeppelin/utils/SecurityUtils.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java index a8ae82b63f7..0ff0dc6ac63 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java @@ -239,7 +239,7 @@ private static void setupRestApiContextHandler(WebAppContext webapp, webapp.setInitParameter("shiroConfigLocations", new File(conf.getShiroPath()).toURI().toString()); - SecurityUtils.initSecurityManager(); + SecurityUtils.initSecurityManager(conf.getShiroPath()); webapp.addFilter(org.apache.shiro.web.servlet.ShiroFilter.class, "/api/*", EnumSet.allOf(DispatcherType.class)); 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 b9cda7c4a9f..01977437055 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 @@ -37,8 +37,8 @@ */ public class SecurityUtils { - public static void initSecurityManager() { - IniSecurityManagerFactory factory = new IniSecurityManagerFactory(); + public static void initSecurityManager(String shiroPath) { + IniSecurityManagerFactory factory = new IniSecurityManagerFactory("file:" + shiroPath); SecurityManager securityManager = factory.getInstance(); org.apache.shiro.SecurityUtils.setSecurityManager( securityManager ); } From 8eeb1bf030d5c1804d687b94ebb216345253eaea Mon Sep 17 00:00:00 2001 From: astroshim Date: Mon, 20 Jun 2016 17:32:42 +0900 Subject: [PATCH 4/7] update version of shiro config module. --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index f52be482f3d..805d258a350 100755 --- a/pom.xml +++ b/pom.xml @@ -214,6 +214,7 @@ org.apache.shiro shiro-config-core + 1.2.3 From bbff0342c8bf8f92a12aa4f698eebb68bd5f425b Mon Sep 17 00:00:00 2001 From: CloverHearts Date: Tue, 21 Jun 2016 03:49:43 +0900 Subject: [PATCH 5/7] modifed paragraphActionIT Test case - automatically interpreter tag. --- .../zeppelin/integration/ParagraphActionsIT.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java index a76706b9ff3..e07cdba0c8c 100644 --- a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java +++ b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java @@ -92,21 +92,28 @@ public void testCreateNewButton() throws Exception { ZeppelinITUtils.sleep(1000, false); waitForParagraph(1, "READY"); + String oldIntpTag = driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'editor')]")).getText(); + collector.checkThat("Paragraph is created above", driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'editor')]")).getText(), - CoreMatchers.equalTo(StringUtils.EMPTY)); + CoreMatchers.not(StringUtils.EMPTY)); setTextOfParagraph(1, " this is above "); + newPara = driver.findElement(By.xpath(getParagraphXPath(2) + "//div[contains(@class,'new-paragraph')][2]")); action.moveToElement(newPara).click().build().perform(); waitForParagraph(3, "READY"); + String lastIntpTag = driver.findElement(By.xpath(getParagraphXPath(3) + "//div[contains(@class, 'editor')]")).getText(); + collector.checkThat("Paragraph is created below", driver.findElement(By.xpath(getParagraphXPath(3) + "//div[contains(@class, 'editor')]")).getText(), - CoreMatchers.equalTo(StringUtils.EMPTY)); + CoreMatchers.not(StringUtils.EMPTY)); setTextOfParagraph(3, " this is below "); + collector.checkThat("Compare interpreter name tag", oldIntpTag, CoreMatchers.equalTo(lastIntpTag)); + collector.checkThat("The output field of paragraph1 contains", driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'editor')]")).getText(), CoreMatchers.equalTo(" this is above ")); From eb801037ab8a39616c3b6c67389ab1acf8f1ba5b Mon Sep 17 00:00:00 2001 From: astroshim Date: Tue, 21 Jun 2016 08:43:44 +0900 Subject: [PATCH 6/7] remove importing Ini and spaces --- .../src/main/java/org/apache/zeppelin/utils/SecurityUtils.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 01977437055..f9e5929a882 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 @@ -22,7 +22,6 @@ import org.apache.shiro.util.ThreadContext; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.apache.shiro.mgt.SecurityManager; -import org.apache.shiro.config.Ini; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.zeppelin.conf.ZeppelinConfiguration; @@ -40,7 +39,7 @@ public class SecurityUtils { public static void initSecurityManager(String shiroPath) { IniSecurityManagerFactory factory = new IniSecurityManagerFactory("file:" + shiroPath); SecurityManager securityManager = factory.getInstance(); - org.apache.shiro.SecurityUtils.setSecurityManager( securityManager ); + org.apache.shiro.SecurityUtils.setSecurityManager(securityManager); } public static Boolean isValidOrigin(String sourceHost, ZeppelinConfiguration conf) From 50c0f9426b13a16ceaa06a6cbcc1e8549289e838 Mon Sep 17 00:00:00 2001 From: CloverHearts Date: Thu, 23 Jun 2016 01:09:39 +0900 Subject: [PATCH 7/7] add test case for server - selenium, testTitleButton() --- .../zeppelin/integration/ParagraphActionsIT.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java index e07cdba0c8c..7312eff0208 100644 --- a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java +++ b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java @@ -338,6 +338,12 @@ public void testTitleButton() throws Exception { String xpathToShowTitle=getParagraphXPath(1) + "//ul/li/a[@ng-click='showTitle()']"; String xpathToHideTitle=getParagraphXPath(1) + "//ul/li/a[@ng-click='hideTitle()']"; + LOG.info("1clover is displaded {}", driver.findElement(By.xpath(xpathToTitle)).isDisplayed()); + + sleep(1000, false); + + + LOG.info("2clover is displaded {}", driver.findElement(By.xpath(xpathToTitle)).isDisplayed()); collector.checkThat("Before Show Title : The title field contains", driver.findElement(By.xpath(xpathToTitle)).getText(), CoreMatchers.equalTo("")); @@ -345,17 +351,17 @@ public void testTitleButton() throws Exception { collector.checkThat("Before Show Title : The title option in option panel of paragraph is labeled as ", driver.findElement(By.xpath(xpathToShowTitle)).getText(), CoreMatchers.equalTo("Show title")); - + LOG.info("3clover is displaded {}", driver.findElement(By.xpath(xpathToTitle)).isDisplayed()); driver.findElement(By.xpath(xpathToShowTitle)).click(); collector.checkThat("After Show Title : The title field contains", driver.findElement(By.xpath(xpathToTitle)).getText(), CoreMatchers.equalTo("Untitled")); - + LOG.info("4clover is displaded {}", driver.findElement(By.xpath(xpathToTitle)).isDisplayed()); driver.findElement(By.xpath(xpathToSettingIcon)).click(); collector.checkThat("After Show Title : The title option in option panel of paragraph is labeled as", driver.findElement(By.xpath(xpathToHideTitle)).getText(), CoreMatchers.equalTo("Hide title")); - + LOG.info("5clover is displaded {}", driver.findElement(By.xpath(xpathToTitle)).isDisplayed()); driver.findElement(By.xpath(xpathToHideTitle)).click(); collector.checkThat("After Hide Title : The title field contains", driver.findElement(By.xpath(xpathToTitle)).getText(),