]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added integration test for WebSphere Portal. (#13309)
authorSauli Tähkäpää <sauli@vaadin.com>
Wed, 2 Apr 2014 05:51:27 +0000 (08:51 +0300)
committerJonatan Kronqvist <jonatan@vaadin.com>
Wed, 9 Apr 2014 05:08:12 +0000 (05:08 +0000)
Change-Id: I576fb145cd34f98ffa90657e20f5a7c1854f470c

uitest/integration_tests.xml
uitest/ivy.xml
uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java [new file with mode: 0644]

index 77c5a94e2626a7d37c0e84d8ff795eabdd5a6bcb..c0d73580bbf717482862c97fbd2cb7e39bf3bbcb 100644 (file)
        <property name="server.report.dir" location="${report.dir}/integration-test-tb3/${server-name}" />
          <!-- The junit task does not create the report dir... -->
         <mkdir dir="${server.report.dir}" />
-          
+
         <junit showoutput="no" printsummary="no" fork="yes">
             <formatter type="xml" />
             <classpath refid="classpath.tb3" />
             <jvmarg value="-Ddeployment.url=${deployment.url}" />
             <jvmarg value="-Dserver-name=${server-name}" />
             <jvmarg value="-Djava.awt.headless=true" />
+            <jvmarg value="-Ddemo.war=${demo.war}" />
             <test name="${junit.test.suite}" todir="${server.report.dir}" />
         </junit>
     </target>
         </antcall>
     </target>
 
+    <target name="integration-test-websphereportal8">
+      <concat>##teamcity[testStarted name='websphereportal8' flowId='websphereportal8']</concat>
+      <antcall target="run-tb3-test" inheritall="true">
+            <param name="junit.test.suite" value="com.vaadin.tests.integration.WebSpherePortalIntegrationTest" />
+            <param name="server-name" value="websphereportal8" />
+
+            <!-- Fill out dummy values for params required by run-tb3-test target -->
+            <param name="test.integration.server" value="" />
+            <param name="test.integration.user" value="" />
+            <param name="test.integration.antfile" value="" />
+        </antcall>
+        <concat>##teamcity[testFinished name='websphereportal8' flowId='websphereportal8']"</concat>
+    </target>
+
     <target name="integration-test-weblogic10">
         <antcall target="run-generic-integration-test">
             <param name="startDelay" value="600" />
         <antcall target="integration-test-test-GAE" />
     </target>
 
-    <!-- Upload demo, clean error screenshots and test deployment on all 
+    <!-- Upload demo, clean error screenshots and test deployment on all
         servers -->
     <target name="integration-test-all" unless="tests.integration.skip">
         <property name="passphrase" value="${passphrase}" />
         <parallel>
             <antcontrib:trycatch property="tried">
                 <try>
-                    <!-- Still running GAE test from the old server which 
+                    <!-- Still running GAE test from the old server which
                     requires its own lock -->
 
                     <echo message="Getting lock" />
             <antcall target="integration-test-tomcat8" />
             <antcall target="integration-test-tomcat7apacheproxy" />
             <antcall target="integration-test-websphere8" />
+            <antcall target="integration-test-websphereportal8" />
         </parallel>
 
     </target>
             </fileset>
         </scp>
 
-        <!-- trycatch probably not needed any more as it just fails with 
+        <!-- trycatch probably not needed any more as it just fails with
             the original message and doesn't do anything in the finally block -->
         <antcontrib:trycatch property="error_message">
             <try>
-                <!-- timeout in one hour (remote end should timeout in 55 
+                <!-- timeout in one hour (remote end should timeout in 55
                     minutes) -->
                 <sshexec host="${target-host}" outputproperty="lock-output" timeout="3600000" username="${user}" keyfile="${sshkey.file}" trust="yes" command="chmod +x *.sh; ant -f deploy.xml get-lock" />
                 <antcall target="echo-prefix">
                     </antcontrib:else>
                 </antcontrib:if>
 
-                <!-- Run theme tests in all browsers if there's a property 
+                <!-- Run theme tests in all browsers if there's a property
                     with the test files -->
                 <antcontrib:if>
                     <isset property="testfiles-theme" />
     <target name="teamcity-escape">
         <property name="returnTo" value="return" />
 
-        <!-- Should also perform other escaping (\u0085, \u2028 and \u2029) 
+        <!-- Should also perform other escaping (\u0085, \u2028 and \u2029)
             - see http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity -->
         <!-- Immutable properties -> needs to create a new one every time -->
         <antcontrib:propertyregex property="details-escaped1" input="${message}" regexp="['|\[\]]" replace="|\0" global="true" defaultValue="${message}" />
index 3ed5609319b65cf31faadedf87dd82c6d9992b9b..add29985f1f6e94c6f47539c1c245418cf79105e 100644 (file)
@@ -57,7 +57,9 @@
 
         <!-- For compiling TestingWidgetSet -->
         <dependency org="com.vaadin" name="vaadin-client-compiler"
-            rev="${vaadin.version}" conf="build-provided-> build"></dependency>
+            rev="${vaadin.version}" conf="build-provided-> build">
+            <exclude type="pom" />
+        </dependency>
 
         <!-- Servlet 3.0 API -->
         <dependency org="javax.servlet" name="javax.servlet-api"
diff --git a/uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java b/uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java
new file mode 100644 (file)
index 0000000..16c4d80
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2000-2013 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.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+import com.jcraft.jsch.SftpException;
+import com.vaadin.tests.tb3.PrivateTB3Configuration;
+
+public class WebSpherePortalIntegrationTest extends PrivateTB3Configuration {
+
+    @BeforeClass
+    public static void deployPortlet() throws JSchException, SftpException {
+        Session session = openSession();
+
+        uploadDemoApplication(session);
+
+        sendCommand(session, "ant -f deploy.xml get-lock startup-and-deploy");
+
+        session.disconnect();
+    }
+
+    private static void uploadDemoApplication(Session session)
+            throws JSchException, SftpException {
+        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
+        sftpChannel.connect();
+
+        String applicationPath = System.getProperty("demo.war");
+        if (new File(applicationPath).exists()) {
+            sftpChannel.put(applicationPath, "demo.war");
+            sftpChannel.disconnect();
+        } else {
+            sftpChannel.disconnect();
+            throw new AssertionError("Demo application not found at "
+                    + applicationPath);
+        }
+    }
+
+    private static void sendCommand(Session session, String command)
+            throws JSchException {
+        ChannelExec channel = (ChannelExec) session.openChannel("exec");
+        channel.setCommand(command);
+        BufferedReader in;
+        try {
+            in = new BufferedReader(new InputStreamReader(
+                    channel.getInputStream()));
+
+            channel.connect();
+
+            String msg = null;
+
+            while ((msg = in.readLine()) != null) {
+                System.out.println(msg);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        channel.disconnect();
+    }
+
+    private static Session openSession() throws JSchException {
+        JSch jsch = new JSch();
+        Session session = jsch.getSession("integration",
+                "websphereportal8.devnet.vaadin.com", 22);
+        jsch.addIdentity("~/.ssh/id_dsa");
+        session.setConfig("StrictHostKeyChecking", "no");
+
+        session.connect();
+        return session;
+    }
+
+    @AfterClass
+    public static void teardown() throws JSchException {
+        Session session = openSession();
+
+        sendCommand(session, "ant -f deploy.xml release-lock");
+
+        session.disconnect();
+    }
+
+    @Override
+    protected java.lang.String getTestUrl() {
+        return "http://websphereportal8.devnet.vaadin.com:10039/wps/portal";
+    }
+
+    @Override
+    public void setup() throws Exception {
+        super.setup();
+
+        openTestURL();
+
+        if (!isLoggedIn()) {
+            login();
+        }
+
+        waitUntilPortletIsLoaded();
+    }
+
+    private void waitUntilPortletIsLoaded() {
+        WebDriverWait wait = new WebDriverWait(driver, 15);
+        wait.until(ExpectedConditions.visibilityOfElementLocated(By
+                .className("v-app")));
+    }
+
+    private boolean isLoggedIn() {
+        return driver.findElements(By.linkText("Log Out")).size() == 1;
+    }
+
+    private void login() {
+        driver.findElement(By.linkText("Log In")).click();
+        driver.findElement(By.id("userID")).sendKeys("test");
+        driver.findElement(By.id("password")).sendKeys("testtest");
+
+        hitButton("login.button.login");
+    }
+
+    @Test
+    public void portletHasExpectedLayout() throws IOException {
+        compareScreen("initial");
+    }
+
+    @Test
+    public void viewModeIsSetToEdit() throws IOException {
+        driver.findElement(By.linkText("Edit")).click();
+
+        assertThat(driver.findElement(By.tagName("input")).isEnabled(),
+                is(true));
+
+    }
+
+}