1   /*
2    * soapUI Pro, copyright (C) 2007-2008 eviware software ab
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.TestRunner;
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 MockResponseStepTestCaseOld extends TestCaseWithJetty
23  {
24     @Override
25     protected void setUp() throws Exception
26     {
27        super.setUp();
28     }
29  
30     public void testMockResponseStep() throws Exception
31     {
32        // create empty project
33        WsdlProject project = new WsdlProject();
34  
35        // import wsdl
36        WsdlInterface iface = WsdlInterfaceFactory.importWsdl( project, "http://localhost:8082/test1/TestService.wsdl", true )[0];
37  
38        // create empty testcase
39        WsdlTestCase testCase = project.addNewTestSuite( "TestSuite" ).addNewTestCase( "TestCase" );
40  
41        // add mockresponse step for
42        WsdlRequest request = iface.getOperationAt( 0 ).getRequestAt( 0 );
43        TestStepConfig config = WsdlMockResponseStepFactory.createConfig( request, false );
44        WsdlMockResponseTestStep step = (WsdlMockResponseTestStep) testCase.addTestStep( config );
45  
46        WsdlMockResponse mockResponse = step.getMockResponse();
47        mockResponse.setResponseContent( "<xml>Tjoho!!</xml>" );
48        step.setPort( 8989 );
49        step.setPath( "/tjohoo" );
50  
51        // run testcase
52        TestRunner runner = testCase.run( new StringToObjectMap(), true );
53  
54        // submit request
55        request.setEndpoint( "http://127.0.0.1:8989/tjohoo" );
56        System.out.println( "Submitting first request" );
57        Submit submit = request.submit( new WsdlSubmitContext( null ), false );
58  
59        // validate
60        assertEquals( mockResponse.getResponseContent(), submit.getResponse().getContentAsString() );
61        runner.waitUntilFinished();
62        long timeTaken = runner.getResults().get( 0 ).getTimeTaken();
63        assertTrue( timeTaken > 0 );
64        assertEquals( Status.FINISHED, runner.getStatus() );
65        assertEquals( mockResponse.getMockResult().getMockRequest().getRequestContent().trim(), request.getRequestContent().trim() );
66  
67        System.out.println( "Mock response took " + timeTaken + "ms" );
68  
69        // add copy
70        testCase.cloneStep( step, "TestStep2" );
71  
72        assertEquals( testCase.getTestStepCount(), 2 );
73  
74        //	 run testcase again
75        runner = testCase.run( new StringToObjectMap(), true );
76  
77        // wait for response step to start listening..
78        Thread.sleep( 1000 );
79  
80        System.out.println( "Submitting first request again" );
81        submit = request.submit( new WsdlSubmitContext( null ), false );
82        assertEquals( mockResponse.getResponseContent(), submit.getResponse().getContentAsString() );
83        assertEquals( Status.RUNNING, runner.getStatus() );
84        assertEquals( mockResponse.getMockResult().getMockRequest().getRequestContent().trim(), request.getRequestContent().trim() );
85  
86        // wait for second response step to start listening
87        Thread.sleep( 1000 );
88        System.out.println( "Submitting second request" );
89        submit = request.submit( new WsdlSubmitContext( null ), false );
90  
91        // validate
92        assertEquals( mockResponse.getResponseContent(), submit.getResponse().getContentAsString() );
93  
94        // wait for runner to get result
95        Thread.sleep( 1000 );
96  
97        timeTaken = runner.getResults().get( 1 ).getTimeTaken();
98        assertTrue( timeTaken > 0 );
99        assertEquals( Status.FINISHED, runner.getStatus() );
100       assertEquals( mockResponse.getMockResult().getMockRequest().getRequestContent().trim(), request.getRequestContent().trim() );
101 
102       System.out.println( "Second Mock response took " + timeTaken + "ms" );
103    }
104 }