Search in sources :

Example 1 with HttpRequestTestStep

use of com.eviware.soapui.impl.support.http.HttpRequestTestStep in project microcks by microcks.

the class SoapUITestStepsRunner method runOperationTestSteps.

/**
 * Run all the Operation test steps defined into the SoapUI project and having the name
 * contained into testStepNames (if not null nor empty).
 * @param operation The operation to run tests for
 * @param testResult TestResults that aggregate results within.
 * @param endpointUrl The URL of the endpoint to use for request test steps.
 * @param testStepNames A list of test step names to execute
 * @return A list of TestReturn wrapper objects (one by executed test step)
 */
public List<TestReturn> runOperationTestSteps(Operation operation, TestResult testResult, String endpointUrl, List<String> testStepNames) {
    // Remember to force no proxy otherwise SoapUI will use system settings and will
    // make them generally applied to everything going out through Apache Http Client
    // (and maybe also JDK HttpURLConnection ?).
    ProxyUtils.setProxyEnabled(false);
    String operationName = operation.getName();
    List<TestReturn> results = new ArrayList<TestReturn>();
    for (TestSuite testSuite : project.getTestSuiteList()) {
        for (TestCase testCase : testSuite.getTestCaseList()) {
            // Depending on testCase type build an accurate runner.
            TestCaseRunner testCaseRunner = buildTestCaseRunner(testCase);
            if (testCaseRunner != null) {
                for (TestStep testStep : testCase.getTestStepList()) {
                    if (testStep instanceof HttpRequestTestStep && testStep instanceof OperationTestStep && (testStepNames == null || testStepNames.contains(testStep.getName()))) {
                        log.debug("Looking up for testStep for operation '{}'", operationName);
                        if (operationName.equals(((OperationTestStep) testStep).getOperation().getName())) {
                            log.debug("Picking up step '{}' for running SoapUI test", testStep.getName());
                            // Set the endpointUrl using this common interface for Soap and Rest requests.
                            ((HttpRequestTestStep) testStep).getHttpRequest().setEndpoint(endpointUrl);
                            // Add or override existing headers with test specific ones for operation and globals.
                            if (testResult.getOperationsHeaders() != null) {
                                Set<Header> headers = new HashSet<>();
                                if (testResult.getOperationsHeaders().getGlobals() != null) {
                                    headers.addAll(testResult.getOperationsHeaders().getGlobals());
                                }
                                if (testResult.getOperationsHeaders().get(operationName) != null) {
                                    headers.addAll(testResult.getOperationsHeaders().get(operationName));
                                }
                                if (headers.size() > 0) {
                                    StringToStringsMap headersMap = new StringToStringsMap();
                                    for (Header header : headers) {
                                        headersMap.put(header.getName(), new ArrayList<>(header.getValues()));
                                    }
                                    ((HttpRequestTestStep) testStep).getHttpRequest().setRequestHeaders(headersMap);
                                }
                            }
                            // Running tests also checks linked assertions.
                            TestStepResult result = testStep.run(testCaseRunner, testCaseRunner.getRunContext());
                            log.debug("SoapUI test result is " + result.getStatus());
                            results.add(extractTestReturn(testStep.getName(), result));
                        }
                    }
                }
            }
        }
    }
    return results;
}
Also used : TestStepResult(com.eviware.soapui.model.testsuite.TestStepResult) HttpRequestTestStep(com.eviware.soapui.impl.support.http.HttpRequestTestStep) TestReturn(io.github.microcks.domain.TestReturn) ArrayList(java.util.ArrayList) WsdlTestCaseRunner(com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner) StringToStringsMap(com.eviware.soapui.support.types.StringToStringsMap) WsdlTestCase(com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase) HttpRequestTestStep(com.eviware.soapui.impl.support.http.HttpRequestTestStep) HashSet(java.util.HashSet)

Aggregations

HttpRequestTestStep (com.eviware.soapui.impl.support.http.HttpRequestTestStep)1 WsdlTestCase (com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase)1 WsdlTestCaseRunner (com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner)1 TestStepResult (com.eviware.soapui.model.testsuite.TestStepResult)1 StringToStringsMap (com.eviware.soapui.support.types.StringToStringsMap)1 TestReturn (io.github.microcks.domain.TestReturn)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1