/*
* 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));
}
}