package org.jboss.tools.ws.ui.bot.test.soap;
import java.text.MessageFormat;
import java.util.logging.Logger;
import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerRequirement;
import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerRequirement.JBossServer;
import org.jboss.reddeer.core.handler.ShellHandler;
import org.jboss.reddeer.eclipse.ui.console.ConsoleView;
import org.jboss.reddeer.eclipse.ui.perspectives.JavaEEPerspective;
import org.jboss.reddeer.junit.requirement.inject.InjectRequirement;
import org.jboss.reddeer.requirements.openperspective.OpenPerspectiveRequirement.OpenPerspective;
import org.jboss.reddeer.requirements.server.ServerReqState;
import org.jboss.tools.common.reddeer.requirements.JavaFoldingRequirement.JavaFolding;
import org.jboss.tools.ws.reddeer.ui.wizards.wst.WebServiceWizardPageBase.SliderLevel;
import org.jboss.tools.ws.ui.bot.test.WSTestBase;
import org.jboss.tools.ws.ui.bot.test.utils.ProjectHelper;
import org.jboss.tools.ws.ui.bot.test.utils.ServersViewHelper;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
/**
* Test base for SOAP web service tests
*
* @author Jan Richter
*
*/
@OpenPerspective(JavaEEPerspective.class)
@JBossServer(state = ServerReqState.RUNNING, cleanup = false)
@JavaFolding(false)
public abstract class SOAPTestBase {
@InjectRequirement
private static ServerRequirement serverReq;
private String wsProjectName = null;
private SliderLevel level;
private static final String SOAP_REQUEST_TEMPLATE = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>"
+ "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
+ "<soap:Body>{0}</soap:Body>" + "</soap:Envelope>";
protected static final Logger LOGGER = Logger.getLogger(WSTestBase.class
.getName());
protected final String LINE_SEPARATOR = System
.getProperty("line.separator");
protected SliderLevel getLevel() {
return level;
}
protected void setLevel(SliderLevel level) {
this.level = level;
}
@Before
public void setup() {
if (getEarProjectName() != null && !ProjectHelper.projectExists(getEarProjectName())) {
ProjectHelper.createEARProject(getEarProjectName());
if (!ProjectHelper.projectExists(getWsProjectName())) {
ProjectHelper.createProjectForEAR(getWsProjectName(),
getEarProjectName());
}
} else if (!ProjectHelper.projectExists(getWsProjectName())) {
ProjectHelper.createProject(getWsProjectName());
}
}
@After
public void cleanup() {
ConsoleView console = new ConsoleView();
if (!console.isOpened()) {
console.open();
}
console.clearConsole();
}
@AfterClass
public static void deleteAll() {
ServersViewHelper.removeAllProjectsFromServer(getConfiguredServerName());
ShellHandler.getInstance().closeAllNonWorbenchShells();
ProjectHelper.deleteAllProjects();
}
protected static String getConfiguredRuntimeName() {
return serverReq.getRuntimeNameLabelText(serverReq.getConfig());
}
protected static String getConfiguredServerName() {
return serverReq.getServerNameLabelText(serverReq.getConfig());
}
protected static String getConfiguredServerType() {
return serverReq.getConfig().getServerFamily().getLabel();
}
protected static String getConfiguredServerVersion() {
return serverReq.getConfig().getServerFamily().getVersion();
}
protected String getWsProjectName() {
return wsProjectName;
}
protected void setWsProjectName(String wsProjectName) {
this.wsProjectName = wsProjectName;
}
protected abstract String getEarProjectName();
public static String getSoapRequest(String body) {
return MessageFormat.format(SOAP_REQUEST_TEMPLATE, body);
}
}