/******************************************************************************* * Copyright (c) 2010-2011 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.ws.ui.bot.test.wstester; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertTrue; import java.util.List; import org.hamcrest.core.Is; import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerRequirement.JBossServer; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.core.condition.ShellWithTextIsAvailable; import org.jboss.reddeer.junit.runner.RedDeerSuite; import org.jboss.reddeer.requirements.server.ServerReqState; import org.jboss.reddeer.swt.api.TreeItem; import org.jboss.reddeer.swt.impl.text.DefaultText; import org.jboss.tools.ws.reddeer.jaxrs.core.RESTfulWebServicesNode; import org.jboss.tools.ws.reddeer.ui.dialogs.WSTesterParametersDialog; import org.jboss.tools.ws.reddeer.ui.tester.views.WsTesterView; import org.jboss.tools.ws.ui.bot.test.rest.RESTfulTestBase; import org.jboss.tools.ws.ui.bot.test.utils.ServersViewHelper; import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; /** * Tests WS Parameters dialog which is invoked when parameters values * need to be set * * @author jjankovi * @author Radoslav Rabara */ @RunWith(RedDeerSuite.class) @JBossServer(state=ServerReqState.RUNNING, cleanup=false) public class WSTesterPromptValuesSupportTest extends RESTfulTestBase { private String wsProjectName = "wsPromptTestProject"; private WsTesterView testerView; private WSTesterParametersDialog dialog; private RESTfulWebServicesNode restWebServicesNode; @Override public void setup() { if (!projectExists(wsProjectName)) { importWSTestProject(wsProjectName); } ServersViewHelper.runProjectOnServer(wsProjectName); ServersViewHelper.waitForDeployment(wsProjectName, getConfiguredServerName()); testerView = new WsTesterView(); testerView.open(); } @Override public void cleanup() { if (dialog != null && dialog.isOpened()) { dialog.cancel(); } if (testerView != null && testerView.isOpened()) { testerView.close(); } ServersViewHelper.removeAllProjectsFromServer(getConfiguredServerName()); } @AfterClass public static void cleanEnvironment() { deleteAllProjects(); } @Override protected String getWsProjectName() { return wsProjectName; } /** * Tests if the parameter dialog can be invoked in WS Tester */ @Test public void testInvokeWsParameterDialog() { invokeWSParametersDialog(); } /** * Fails due to JBIDE-12027/JBIDE-22377 * * Tests if the parameters were loaded with the specified type * and default values * * @see https://issues.jboss.org/browse/JBIDE-12027 */ @Test(expected=AssertionError.class) public void testParameters() { invokeWSParametersDialog(); checkWSParametersDialog(); } /** * Tests the response */ @Test public void testResponse() { invokeWSParametersDialog(); List<TreeItem> parameters = dialog.getAllParameters(); setParametersValues(parameters); dialog.ok(); checkWSResponse(); } private void invokeWSParametersDialog() { restWebServicesNode = new RESTfulWebServicesNode(getWsProjectName()); runRestServiceOnServer(restWebServicesNode.getWebServices().get(0)); testerView.open(); testerView.invoke(); new WaitUntil(new ShellWithTextIsAvailable(WSTesterParametersDialog.DIALOG_TITLE)); dialog = new WSTesterParametersDialog(); } private void checkWSParametersDialog() { //button is always enabled until JBIDE-13111 is resolved //@see https://issues.jboss.org/browse/JBIDE-13111 // assertThat(dialog.isOkButtonEnabled(), Is.is(false)); List<TreeItem> parameters = dialog.getAllParameters(); assertThat(dialog.getAllParameters().size(), Is.is(3)); checkAllParametersWereLoaded(parameters); checkAllDefaultParametersValues(parameters); checkAllParametersTypes(parameters); checkThereIsMandatoryValueWarning(); setParametersValues(parameters); checkThereIsNoWarning(); assertThat(dialog.isOkButtonEnabled(), Is.is(true)); dialog.ok(); } private void checkThereIsNoWarning() { String warning = getWarningText(); assertTrue("There is unexpected warning: " + warning, warning.length() == 0); } private void checkThereIsMandatoryValueWarning() { assertThat(getWarningText(), Is.is(" id's value is mandatory but missing.")); } private String getWarningText() { return new DefaultText(0).getText(); } private void checkAllParametersWereLoaded(List<TreeItem> parameters) { assertThat("First parameter name is wrong", dialog.getParameterName(parameters.get(0)), Is.is("id* ")); assertThat("Second parameter name is wrong", dialog.getParameterName(parameters.get(1)), Is.is("m1")); assertThat("Third parameter name is wrong", dialog.getParameterName(parameters.get(2)), Is.is("q1")); } private void checkAllDefaultParametersValues(List<TreeItem> parameters) { assertThat("JBIDE-12027/JBIDE-22377: Default value of id is wrong", dialog.getParameterValue(parameters.get(0)), Is.is("0")); assertThat("Default value of m1 is wrong", dialog.getParameterValue(parameters.get(1)), Is.is("m1")); assertThat("Default value of q1 is wrong", dialog.getParameterValue(parameters.get(2)), Is.is("q1")); } private void checkAllParametersTypes(List<TreeItem> parameters) { assertThat("Type of id is wrong", dialog.getParameterType(parameters.get(0)), Is.is("Integer")); assertThat("Type of m1 is wrong", dialog.getParameterType(parameters.get(1)), Is.is("String")); assertThat("Type of q1 is wrong", dialog.getParameterType(parameters.get(2)), Is.is("String")); } private void setParametersValues(List<TreeItem> parameters) { dialog.setParameterValue(parameters.get(0), "1"); dialog.setParameterValue(parameters.get(1), "matrix"); dialog.setParameterValue(parameters.get(2), "query"); } private void checkWSResponse() { assertThat("JAX-RS Response on GET method is wrong", testerView.getResponseBody(), Is.is("1 matrix query")); } }