/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.tools; import com.eviware.soapui.impl.support.AbstractHttpRequest; import com.eviware.soapui.impl.support.http.HttpRequestTestStep; import com.eviware.soapui.impl.wsdl.WsdlRequest; import com.eviware.soapui.impl.wsdl.teststeps.WsdlRunTestCaseTestStep; import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest; import com.eviware.soapui.model.testsuite.TestCaseRunContext; import com.eviware.soapui.model.testsuite.TestCaseRunner; import com.eviware.soapui.model.testsuite.TestRunListener; import com.eviware.soapui.model.testsuite.TestStep; import com.eviware.soapui.model.testsuite.TestStepResult; import com.eviware.soapui.support.StringUtils; import com.eviware.soapui.support.Tools; public abstract class AbstractSoapUITestRunner extends AbstractSoapUIRunner implements TestRunListener { private String endpoint; private String domain; private String password; private String username; private String host; private String wssPasswordType; private String projectPassword; public AbstractSoapUITestRunner(String title) { super(title); } public void setProjectPassword(String projectPassword) { this.projectPassword = projectPassword; } /** * Sets the host to use by all test-requests, the existing endpoint port and * path will be used * * @param host the host to use by all requests */ public void setHost(String host) { this.host = host; } /** * Sets the domain to use for any authentications * * @param domain the domain to use for any authentications */ public void setDomain(String domain) { this.domain = domain; } /** * Sets the password to use for any authentications * * @param password the password to use for any authentications */ public void setPassword(String password) { this.password = password; } /** * Sets the WSS password-type to use for any authentications. Setting this * will result in the addition of WS-Security UsernamePassword tokens to any * outgoing request containing the specified username and password. * * @param wssPasswordType the wss-password type to use, either 'Text' or 'Digest' */ public void setWssPasswordType(String wssPasswordType) { this.wssPasswordType = wssPasswordType; } /** * Sets the username to use for any authentications * * @param username the username to use for any authentications */ public void setUsername(String username) { this.username = username; } public String getProjectPassword() { return projectPassword; } /** * Sets the endpoint to use for all test requests * * @param endpoint the endpoint to use for all test requests */ public void setEndpoint(String endpoint) { this.endpoint = endpoint.trim(); } public String getEndpoint() { return endpoint; } public String getDomain() { return domain; } public String getPassword() { return password; } public String getUsername() { return username; } public String getHost() { return host; } public String getWssPasswordType() { return wssPasswordType; } protected void prepareRequestStep(HttpRequestTestStep requestStep) { AbstractHttpRequest<?> httpRequest = requestStep.getHttpRequest(); if (StringUtils.hasContent(endpoint)) { httpRequest.setEndpoint(endpoint); } else if (StringUtils.hasContent(host)) { try { String ep = Tools.replaceHost(httpRequest.getEndpoint(), host); httpRequest.setEndpoint(ep); } catch (Exception e) { log.error("Failed to set host on endpoint", e); } } if (StringUtils.hasContent(username)) { httpRequest.setUsername(username); } if (StringUtils.hasContent(password)) { httpRequest.setPassword(password); } if (StringUtils.hasContent(domain)) { httpRequest.setDomain(domain); } if (httpRequest instanceof WsdlRequest) { if (wssPasswordType != null && wssPasswordType.length() > 0) { ((WsdlRequest) httpRequest) .setWssPasswordType(wssPasswordType.equals("Digest") ? WsdlTestRequest.PW_TYPE_DIGEST : WsdlTestRequest.PW_TYPE_TEXT); } } } public void beforeRun(TestCaseRunner testRunner, TestCaseRunContext runContext) { } public final void beforeStep(TestCaseRunner testRunner, TestCaseRunContext runContext) { } public void beforeStep(TestCaseRunner testRunner, TestCaseRunContext runContext, TestStep currentStep) { if (currentStep instanceof HttpRequestTestStep) { prepareRequestStep((HttpRequestTestStep) currentStep); } else if (currentStep instanceof WsdlRunTestCaseTestStep) { ((WsdlRunTestCaseTestStep) currentStep).addTestRunListener(this); } } public void afterStep(TestCaseRunner testRunner, TestCaseRunContext runContext, TestStepResult result) { TestStep currentStep = runContext.getCurrentStep(); if (currentStep instanceof WsdlRunTestCaseTestStep) { ((WsdlRunTestCaseTestStep) currentStep).removeTestRunListener(this); } } public void afterRun(TestCaseRunner testRunner, TestCaseRunContext runContext) { } }