Java tutorial
/* * Copyright 2000-2014 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)); } }