1   /*
2    *  soapUI, copyright (C) 2004-2007 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  
13  package com.eviware.soapui.impl.wsdl.support.wsdl;
14  
15  import java.io.IOException;
16  
17  import org.apache.xmlbeans.XmlException;
18  
19  import com.eviware.soapui.impl.wsdl.WsdlInterface;
20  import com.eviware.soapui.impl.wsdl.WsdlProject;
21  import com.eviware.soapui.settings.WsdlSettings;
22  import com.eviware.soapui.support.TestCaseWithJetty;
23  
24  public class CachedWsdlLoaderTestCase extends TestCaseWithJetty
25  {
26     public void testSaveDefinition() throws Exception 
27     {
28     	testLoader("http://localhost:8082/test1/TestService.wsdl");
29     	testLoader("http://localhost:8082/test2/TestService.wsdl");
30     	testLoader("http://localhost:8082/test3/TestService.wsdl");
31     	testLoader("http://localhost:8082/test4/TestService.wsdl");
32     	testLoader("http://localhost:8082/test5/TestService.wsdl");
33     	testLoader("http://localhost:8082/test6/TestService.wsdl");
34     	testLoader("http://localhost:8082/test7/TestService.wsdl");
35     	testLoader("http://localhost:8082/test8/TestService.wsdl");
36     	testLoader("http://localhost:8082/testonewayop/TestService.wsdl");
37     }
38  
39  	private void testLoader(String wsdlUrl) throws XmlException, IOException, Exception
40  	{
41  		WsdlProject project = new WsdlProject();
42     	project.getSettings().setBoolean( WsdlSettings.CACHE_WSDLS, true );
43  		WsdlInterface wsdl = WsdlImporter.getInstance().importWsdl( project, wsdlUrl )[0];
44     	
45     	assertTrue( wsdl.isCached() );
46     	CachedWsdlLoader loader = (CachedWsdlLoader) wsdl.createWsdlLoader();
47     	
48     	String root = loader.saveDefinition( "test/output" );
49     	
50     	WsdlProject project2 = new WsdlProject();
51     	WsdlInterface wsdl2 = WsdlImporter.getInstance().importWsdl( project2, "file:" + root )[0];
52     	
53     	assertEquals( wsdl.getBindingName(), wsdl2.getBindingName() );
54     	assertEquals( wsdl.getOperationCount(), wsdl2.getOperationCount() );
55     	assertEquals( wsdl.getWsdlContext().getDefinedNamespaces(), wsdl2.getWsdlContext().getDefinedNamespaces() );
56  	}
57  }