]> source.dussan.org Git - vaadin-framework.git/commitdiff
JspIntegrationTest as a separate module (#8228)
authorIlia Motornyi <elmot@vaadin.com>
Thu, 26 Jan 2017 14:27:54 +0000 (16:27 +0200)
committerAleksi Hietanen <aleksi@vaadin.com>
Thu, 26 Jan 2017 14:27:54 +0000 (16:27 +0200)
Part of vaadin/framework8-issues#539

test/pom.xml
test/servlet-containers/jsp-integration/pom.xml [new file with mode: 0644]
test/servlet-containers/jsp-integration/src/main/java/com/vaadin/tests/integration/AnotherTrivialUI.java [new file with mode: 0644]
test/servlet-containers/jsp-integration/src/main/java/com/vaadin/tests/integration/TrivialUI.java [new file with mode: 0644]
test/servlet-containers/jsp-integration/src/main/webapp/WEB-INF/web.xml [new file with mode: 0644]
test/servlet-containers/jsp-integration/src/main/webapp/staticfiles/vaadinsessions.jsp [new file with mode: 0644]
test/servlet-containers/jsp-integration/src/test/java/com/vaadin/tests/integration/JSPIntegrationIT.java [new file with mode: 0644]
uitest/src/main/webapp/WEB-INF/web.xml
uitest/src/main/webapp/statictestfiles/vaadinsessions.jsp [deleted file]
uitest/src/test/java/com/vaadin/tests/integration/JSPIntegrationTest.java [deleted file]

index d0a148cbfa42bf8ba4cb5152850fe99a6250f3df..b9493fcb550fc438f2084bc5ece518e0cdc7c718 100644 (file)
@@ -17,6 +17,8 @@
         <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
         <failOnMissingWebXml>false</failOnMissingWebXml>
         <contextmenu.version>2.0-SNAPSHOT</contextmenu.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <!-- Don't care about coding style for tests -->
         <sonar.skip>true</sonar.skip>
     </properties>
         <module>vaadinservletconfiguration-widget-set</module>
         <module>spring-boot</module>
         <module>cdi</module>
+        <module>servlet-containers/jsp-integration</module>
         <module>bean-api-validation</module>
         <module>bean-impl-validation</module>
     </modules>
diff --git a/test/servlet-containers/jsp-integration/pom.xml b/test/servlet-containers/jsp-integration/pom.xml
new file mode 100644 (file)
index 0000000..c32914c
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.vaadin</groupId>
+        <artifactId>vaadin-test</artifactId>
+        <version>8.0-SNAPSHOT</version>
+        <relativePath>../..</relativePath>
+    </parent>
+    <artifactId>vaadin-test-jsp-integration</artifactId>
+    <name>vaadin-test-jsp-integration</name>
+    <packaging>war</packaging>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-client-compiled</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin-uitest-common</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/test/servlet-containers/jsp-integration/src/main/java/com/vaadin/tests/integration/AnotherTrivialUI.java b/test/servlet-containers/jsp-integration/src/main/java/com/vaadin/tests/integration/AnotherTrivialUI.java
new file mode 100644 (file)
index 0000000..a165b81
--- /dev/null
@@ -0,0 +1,28 @@
+package com.vaadin.tests.integration;
+/*
+ * Copyright 2000-2017 Vaadin Ltd.
+ *
+ * Licensed 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.
+ */
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+
+public class AnotherTrivialUI extends UI {
+    @Override
+    protected void init(VaadinRequest request) {
+        setContent(new Label("Another Trivial UI"));
+    }
+
+}
diff --git a/test/servlet-containers/jsp-integration/src/main/java/com/vaadin/tests/integration/TrivialUI.java b/test/servlet-containers/jsp-integration/src/main/java/com/vaadin/tests/integration/TrivialUI.java
new file mode 100644 (file)
index 0000000..b7c7a56
--- /dev/null
@@ -0,0 +1,30 @@
+package com.vaadin.tests.integration;
+/*
+ * Copyright 2000-2017 Vaadin Ltd.
+ *
+ * Licensed 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.
+ */
+
+import com.vaadin.annotations.VaadinServletConfiguration;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+
+public class TrivialUI extends UI {
+    @Override
+    protected void init(VaadinRequest request) {
+        setContent(new Label("Trivial UI"));
+    }
+
+}
diff --git a/test/servlet-containers/jsp-integration/src/main/webapp/WEB-INF/web.xml b/test/servlet-containers/jsp-integration/src/main/webapp/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..1d0326b
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="vaadin-uitest" version="3.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <!-- THIS IS A DEVELOPMENT AND TESTING web.xml . -->
+
+    <display-name>Vaadin</display-name>
+    <description>Vaadin JSP Integration Test</description>
+
+    <context-param>
+        <param-name>productionMode</param-name>
+        <param-value>false</param-value>
+    </context-param>
+
+    <servlet>
+        <servlet-name>VaadinStaticFiles</servlet-name>
+        <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
+        <async-supported>false</async-supported>
+    </servlet>
+
+    <servlet>
+        <servlet-name>PrimaryUIServlet</servlet-name>
+        <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
+        <init-param>
+            <param-name>UI</param-name>
+            <param-value>com.vaadin.tests.integration.TrivialUI</param-value>
+        </init-param>
+        <async-supported>true</async-supported>
+    </servlet>
+
+    <servlet>
+        <servlet-name>SecondaryUIServlet</servlet-name>
+        <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
+        <init-param>
+            <param-name>UI</param-name>
+            <param-value>com.vaadin.tests.integration.AnotherTrivialUI</param-value>
+        </init-param>
+        <async-supported>true</async-supported>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>PrimaryUIServlet</servlet-name>
+        <url-pattern>/primaryui/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>SecondaryUIServlet</servlet-name>
+        <url-pattern>/secondaryui/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>VaadinStaticFiles</servlet-name>
+        <url-pattern>/VAADIN/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/test/servlet-containers/jsp-integration/src/main/webapp/staticfiles/vaadinsessions.jsp b/test/servlet-containers/jsp-integration/src/main/webapp/staticfiles/vaadinsessions.jsp
new file mode 100644 (file)
index 0000000..b22787a
--- /dev/null
@@ -0,0 +1,54 @@
+<!DOCTYPE>
+<%@page import="com.vaadin.ui.UI"%>
+<%@page import="com.vaadin.server.VaadinSession"%>
+<HTML>
+<HEAD>
+<TITLE>JSP integration</TITLE>
+<style>
+table {
+       background: #fff;
+}
+
+td {
+       border: 1px solid black;
+       padding: .5em;
+}
+</style>
+</HEAD>
+<BODY>
+    <table>
+        <tr>
+            <th align="left" colspan=4>Available UIs:</th>
+        </tr>
+        <tr>
+            <th>Service Name</th>
+            <th>CSRF token</th>
+            <th>UI id</th>
+            <th>UI type</th>
+            <th>Main content</th>
+        </tr>
+        <%
+               HttpSession httpSession = request.getSession(false);
+               for (VaadinSession vs : VaadinSession.getAllSessions(httpSession)) {
+                       try {
+                               vs.lock();
+                               for (UI ui : vs.getUIs()) {
+                                       out.append("<tr class='uirow'>");
+                                       out.append("<td>" + vs.getService().getServiceName()
+                                                       + "</td>");
+                                       out.append("<td>" + vs.getCsrfToken() + "</td>");
+                                       out.append("<td>" + ui.getUIId() + "</td>");
+                                       out.append("<td>" + ui.getClass().getName() + "</td>");
+                                       out.append("<td>" + ui.getContent().getClass().getName() + "</td>");
+                                       out.append("</tr>");
+
+                               }
+                       } finally {
+                               vs.unlock();
+                       }
+
+               }
+        %>
+    </table>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/test/servlet-containers/jsp-integration/src/test/java/com/vaadin/tests/integration/JSPIntegrationIT.java b/test/servlet-containers/jsp-integration/src/test/java/com/vaadin/tests/integration/JSPIntegrationIT.java
new file mode 100644 (file)
index 0000000..5a6c627
--- /dev/null
@@ -0,0 +1,105 @@
+package com.vaadin.tests.integration;
+/*
+ * Copyright 2000-2017 Vaadin Ltd.
+ *
+ * Licensed 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.
+ */
+
+import com.vaadin.testbench.TestBenchTestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.phantomjs.PhantomJSDriver;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+public class JSPIntegrationIT extends TestBenchTestCase {
+
+    private static final String URL_PREFIX = "http://localhost:8080/";
+
+    private static final String primaryUIUrl = URL_PREFIX + "primaryui";
+    private static final String jspUrl = URL_PREFIX + "staticfiles/vaadinsessions.jsp";
+    private static final String secondaryUIUrl = URL_PREFIX + "secondaryui";
+
+    @Test
+    public void listVaadinSessions() {
+
+        assertUICount(0);
+
+        // Open a new UI
+        getDriver().navigate().to(primaryUIUrl);
+
+
+        assertUICount(1);
+        UIData firstUI = getUIs().get(0);
+
+        // Open a new UI
+        getDriver().navigate().to(primaryUIUrl);
+        UIData secondUI = getUIs().get(0);
+
+        // Should now have UI for the same service with different uiId
+        assertUICount(1);
+        assertNotEquals(firstUI.uiId, secondUI.uiId);
+        assertEquals(firstUI.serviceName, secondUI.serviceName);
+
+        getDriver().navigate().to(secondaryUIUrl);
+        // Should now have another services
+        List<UIData> twoUIs = getUIs();
+        assertEquals(2, twoUIs.size());
+        assertNotEquals(twoUIs.get(0).serviceName, twoUIs.get(1).serviceName);
+    }
+
+    private static class UIData {
+        private String serviceName;
+        private int uiId;
+    }
+
+    private List<UIData> getUIs() {
+        List<UIData> uis = new ArrayList<>();
+
+        getDriver().get(jspUrl);
+        List<WebElement> rows = getDriver()
+                .findElements(By.xpath("//tr[@class='uirow']"));
+        for (WebElement row : rows) {
+            UIData data = new UIData();
+            List<WebElement> tds = row.findElements(By.xpath("./td"));
+
+            data.serviceName = tds.get(0).getText();
+            data.uiId = Integer.parseInt(tds.get(2).getText());
+
+            uis.add(data);
+        }
+
+        return uis;
+    }
+
+    private void assertUICount(int i) {
+        assertEquals(i, getUIs().size());
+    }
+
+    @Before
+    public void setup() {
+        setDriver(new PhantomJSDriver());
+    }
+
+    @After
+    public void teardown() {
+        getDriver().quit();
+    }
+}
index 31f535e383797c28791e1b17b6ea9852a9ddbbd8..4f7ed062a88d4c5f60fd25801dde59f1e6fd3b80 100644 (file)
         <url-pattern>/run-jsr356/*</url-pattern>
     </servlet-mapping>
 
-    <servlet-mapping>
-        <servlet-name>IntegrationTest</servlet-name>
-        <url-pattern>/integration/*</url-pattern>
-    </servlet-mapping>
-
     <servlet-mapping>
         <servlet-name>CommErrorEmulator</servlet-name>
         <url-pattern>/commerror/*</url-pattern>
diff --git a/uitest/src/main/webapp/statictestfiles/vaadinsessions.jsp b/uitest/src/main/webapp/statictestfiles/vaadinsessions.jsp
deleted file mode 100644 (file)
index b22787a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE>
-<%@page import="com.vaadin.ui.UI"%>
-<%@page import="com.vaadin.server.VaadinSession"%>
-<HTML>
-<HEAD>
-<TITLE>JSP integration</TITLE>
-<style>
-table {
-       background: #fff;
-}
-
-td {
-       border: 1px solid black;
-       padding: .5em;
-}
-</style>
-</HEAD>
-<BODY>
-    <table>
-        <tr>
-            <th align="left" colspan=4>Available UIs:</th>
-        </tr>
-        <tr>
-            <th>Service Name</th>
-            <th>CSRF token</th>
-            <th>UI id</th>
-            <th>UI type</th>
-            <th>Main content</th>
-        </tr>
-        <%
-               HttpSession httpSession = request.getSession(false);
-               for (VaadinSession vs : VaadinSession.getAllSessions(httpSession)) {
-                       try {
-                               vs.lock();
-                               for (UI ui : vs.getUIs()) {
-                                       out.append("<tr class='uirow'>");
-                                       out.append("<td>" + vs.getService().getServiceName()
-                                                       + "</td>");
-                                       out.append("<td>" + vs.getCsrfToken() + "</td>");
-                                       out.append("<td>" + ui.getUIId() + "</td>");
-                                       out.append("<td>" + ui.getClass().getName() + "</td>");
-                                       out.append("<td>" + ui.getContent().getClass().getName() + "</td>");
-                                       out.append("</tr>");
-
-                               }
-                       } finally {
-                               vs.unlock();
-                       }
-
-               }
-        %>
-    </table>
-</BODY>
-</HTML>
\ No newline at end of file
diff --git a/uitest/src/test/java/com/vaadin/tests/integration/JSPIntegrationTest.java b/uitest/src/test/java/com/vaadin/tests/integration/JSPIntegrationTest.java
deleted file mode 100644 (file)
index 3a7f907..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed 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 com.vaadin.tests.integration;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Test;
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebElement;
-
-import com.vaadin.tests.tb3.SingleBrowserTestPhantomJS2;
-
-public class JSPIntegrationTest extends SingleBrowserTestPhantomJS2 {
-
-    final String appRunnerTestUrl = getBaseURL() + "/run/Buttons";
-    final String jspUrl = getBaseURL() + "/statictestfiles/vaadinsessions.jsp";
-    final String integrationUrl = getBaseURL() + "/integration";
-
-    @Test
-    public void listVaadinSessions() {
-
-        assertUICount(0);
-
-        // Open a new UI
-        getDriver().get(integrationUrl);
-        assertUICount(1);
-
-        // Open a new UI
-        getDriver().get(integrationUrl);
-
-        // Should now have two UIs for the same service with different uiIds
-        List<UIData> twoUIs = getUIs();
-        assertEquals(2, twoUIs.size());
-        assertNotEquals(twoUIs.get(0).uiId, twoUIs.get(1).uiId);
-        assertEquals(twoUIs.get(0).serviceName, twoUIs.get(1).serviceName);
-
-        getDriver().get(appRunnerTestUrl);
-        // Should now have two services with 2 + 1 UIs
-        List<UIData> threeUIs = getUIs();
-        assertEquals(3, threeUIs.size());
-        Set<String> serviceNames = new HashSet<>();
-        Set<Integer> uiIds = new HashSet<>();
-        for (UIData uiData : threeUIs) {
-            serviceNames.add(uiData.serviceName);
-            uiIds.add(uiData.uiId);
-        }
-        assertGreaterOrEqual(
-                "There should be at least two unique service names",
-                serviceNames.size(), 2);
-        assertGreaterOrEqual("There should be at least two unique ui ids",
-                uiIds.size(), 2);
-    }
-
-    private static class UIData {
-        private String serviceName;
-        private int uiId;
-    }
-
-    private List<UIData> getUIs() {
-        List<UIData> uis = new ArrayList<>();
-
-        getDriver().get(jspUrl);
-        List<WebElement> rows = getDriver()
-                .findElements(By.xpath("//tr[@class='uirow']"));
-        for (WebElement row : rows) {
-            UIData data = new UIData();
-            List<WebElement> tds = row.findElements(By.xpath("./td"));
-
-            data.serviceName = tds.get(0).getText();
-            data.uiId = Integer.parseInt(tds.get(2).getText());
-
-            uis.add(data);
-        }
-
-        return uis;
-    }
-
-    private void assertUICount(int i) {
-        assertEquals(i, getUIs().size());
-    }
-}