1
2
3
4
5 package com.eviware.soapui.impl.wsdl.teststeps;
6
7 import com.eviware.soapui.config.TestStepConfig;
8 import com.eviware.soapui.impl.WsdlInterfaceFactory;
9 import com.eviware.soapui.impl.wsdl.WsdlInterface;
10 import com.eviware.soapui.impl.wsdl.WsdlProject;
11 import com.eviware.soapui.impl.wsdl.WsdlRequest;
12 import com.eviware.soapui.impl.wsdl.WsdlSubmitContext;
13 import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
14 import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
15 import com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlMockResponseStepFactory;
16 import com.eviware.soapui.model.iface.Submit;
17 import com.eviware.soapui.model.testsuite.TestCaseRunner;
18 import com.eviware.soapui.model.testsuite.TestRunner.Status;
19 import com.eviware.soapui.support.TestCaseWithJetty;
20 import com.eviware.soapui.support.types.StringToObjectMap;
21
22 public class MockResponseStepTestCase extends TestCaseWithJetty
23 {
24 @Override
25 protected void setUp() throws Exception
26 {
27 super.setUp();
28 }
29
30 public void testDummy() throws Exception
31 {
32 assert true;
33 }
34
35 public void testMockResponseStep() throws Exception
36 {
37
38 WsdlProject project = new WsdlProject();
39
40
41 WsdlInterface iface = WsdlInterfaceFactory.importWsdl( project, "http://localhost:8082/test1/TestService.wsdl", true )[0];
42
43
44 WsdlTestCase testCase = project.addNewTestSuite( "TestSuite" ).addNewTestCase( "TestCase" );
45
46
47 WsdlRequest request = iface.getOperationAt( 0 ).getRequestAt( 0 );
48 TestStepConfig config = WsdlMockResponseStepFactory.createConfig( request, false );
49 WsdlMockResponseTestStep step = (WsdlMockResponseTestStep) testCase.addTestStep( config );
50
51 WsdlMockResponse mockResponse = step.getMockResponse();
52 mockResponse.setResponseContent( "<xml>Tjoho!!</xml>" );
53 step.setPort( 8989 );
54 step.setPath( "/tjohoo" );
55
56
57 TestCaseRunner runner = testCase.run( new StringToObjectMap(), true );
58 Thread.sleep( 1000 );
59
60
61 request.setEndpoint( "http://127.0.0.1:8989/tjohoo" );
62 System.out.println( "Submitting first request" );
63 Submit submit = request.submit( new WsdlSubmitContext( null ), false );
64
65
66 assertEquals( mockResponse.getResponseContent(), submit.getResponse().getContentAsString() );
67 runner.waitUntilFinished();
68 long timeTaken = runner.getResults().get( 0 ).getTimeTaken();
69 assertTrue( timeTaken > 0 );
70 assertEquals( Status.FINISHED, runner.getStatus() );
71 assertEquals( mockResponse.getMockResult().getMockRequest().getRequestContent().trim(), request.getRequestContent().trim() );
72
73 System.out.println( "Mock response took " + timeTaken + "ms" );
74
75
76 testCase.cloneStep( step, "TestStep2" );
77
78 assertEquals( testCase.getTestStepCount(), 2 );
79
80
81 runner = testCase.run( new StringToObjectMap(), true );
82
83
84 Thread.sleep( 1000 );
85
86 System.out.println( "Submitting first request again" );
87 submit = request.submit( new WsdlSubmitContext( null ), false );
88 assertEquals( mockResponse.getResponseContent(), submit.getResponse().getContentAsString() );
89 assertEquals( Status.RUNNING, runner.getStatus() );
90 assertEquals( mockResponse.getMockResult().getMockRequest().getRequestContent().trim(), request.getRequestContent().trim() );
91
92
93 Thread.sleep( 1000 );
94 System.out.println( "Submitting second request" );
95 submit = request.submit( new WsdlSubmitContext( null ), false );
96
97
98 assertEquals( mockResponse.getResponseContent(), submit.getResponse().getContentAsString() );
99
100
101 Thread.sleep( 1000 );
102
103 timeTaken = runner.getResults().get( 1 ).getTimeTaken();
104 assertTrue( timeTaken > 0 );
105 assertEquals( Status.FINISHED, runner.getStatus() );
106 assertEquals( mockResponse.getMockResult().getMockRequest().getRequestContent().trim(), request.getRequestContent().trim() );
107
108 System.out.println( "Second Mock response took " + timeTaken + "ms" );
109 }
110 }