package org.ebayopensource.turmeric.tools.codegen; import java.io.File; import java.util.Properties; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; import org.w3c.dom.Document; import org.w3c.dom.NodeList; public class CommonTypenNSTMTest extends AbstractServiceGeneratorTestCase{ @Rule public TestName name = new TestName(); File destDir = null; File binDir = null; final String INTF_PROPERTIES = "service_intf_project.properties"; final String IMPL_PROPERTIES = "service_impl_project.properties"; ServiceGenerator gen = null; Properties intfProps = new Properties(); File intfProperty = null; @Before public void init() throws Exception{ testingdir.ensureEmpty(); destDir = testingdir.getDir(); binDir = testingdir.getFile("bin"); intfProperty = createPropertyFile(destDir.getAbsolutePath(), INTF_PROPERTIES); //enter values to property file intfProps.put("sipp_version","1.1"); intfProps.put("service_interface_class_name","org.ebayopensource.test.soaframework.tools.codegen.AdcommerceConfigGroupMarketV2"); intfProps.put("service_layer","COMMON"); intfProps.put("original_wsdl_uri","Vanilla-Codegen\\ServiceInputFiles\\AdcommerceConfigGroupMarketV2.wsdl"); intfProps.put("service_version","1.0.0"); intfProps.put("admin_name","AdcommerceConfigGroupMarketV2"); intfProps.put("service_namespace_part","billing"); intfProps.put("domainName","Billing"); intfProps.put("enabledNamespaceFolding","true"); fillProperties(intfProps, intfProperty); } /* * Single namespace wsdl with namespace folding = true. The Error type to have wsdl namespace. */ @Test public void testTypeMappingCommonNamespace() throws Exception{ File path = getCodegenQEDataFileInput("AdcommerceConfigGroupMarketV2.wsdl"); String [] testArgs1 = {"-serviceName","ConfigGroupMarket", "-genType","ServiceFromWSDLIntf", "-wsdl",path.getAbsolutePath(), "-gip","org.ebayopensource.test.soaframework.tools.codegen", "-dest",destDir.getAbsolutePath(), "-src",destDir.getAbsolutePath(), "-slayer","INTERMEDIATE", "-scv","1.0.0", "-bin",binDir.getAbsolutePath(), "-pr",destDir.getAbsolutePath()}; performDirectCodeGen(testArgs1,binDir); File typeMappingFile = new File(getTypeMappingsFile(destDir.getAbsolutePath(),"AdcommerceConfigGroupMarketV2")); Document typeDoc = XmlUtility.getXmlDoc(typeMappingFile.getAbsolutePath()); NodeList nodeList = typeDoc.getElementsByTagName("xml-element-name"); for(int i =0; i < nodeList.getLength();i++){ Assert.assertTrue(nodeList.item(i).getFirstChild().getNodeValue().contains("{http://www.ebayopensource.com/marketplace/services}")); } } /* * Single namespace wsdl with namespace folding = false. The Error type to have wsdl namespace. */ @Test public void testTypeMappingNSFoldingFalse() throws Exception{ intfProps.put("enabledNamespaceFolding","false"); fillProperties(intfProps, intfProperty); File path = getCodegenQEDataFileInput("AdcommerceConfigGroupMarketV2.wsdl"); String [] testArgs1 = {"-serviceName","ConfigGroupMarket", "-genType","ServiceFromWSDLIntf", "-wsdl",path.getAbsolutePath(), "-gip","org.ebayopensource.test.soaframework.tools.codegen", "-dest",destDir.getAbsolutePath(), "-src",destDir.getAbsolutePath(), "-slayer","INTERMEDIATE", "-bin",binDir.getAbsolutePath(), "-scv","1.0.0", "-pr",destDir.getAbsolutePath()}; performDirectCodeGen(testArgs1,binDir); File typeMappingFile = new File(getTypeMappingsFile(destDir.getAbsolutePath(),"AdcommerceConfigGroupMarketV2")); Document typeDoc = XmlUtility.getXmlDoc(typeMappingFile.getAbsolutePath()); NodeList nodeList = typeDoc.getElementsByTagName("error-message"); for(int i =0; i < nodeList.getLength();i++){ NodeList childNodes = nodeList.item(i).getChildNodes(); for(int j= 0;j < childNodes.getLength();j++) { if(childNodes.item(j).getNodeName().equals("xml-element-name")){ Assert.assertTrue(childNodes.item(j).getFirstChild().getNodeValue().contains("{http://www.ebayopensource.org/turmeric/common/v1/types}")); } } } } /* * multi namespace wsdl with namespace folding = false. The Error type to have wsdl namespace. */ @Test public void testTypeMappingNSFoldingFalseForMnsWSDL() throws Exception{ intfProps.put("enabledNamespaceFolding","false"); fillProperties(intfProps, intfProperty); File path = getCodegenQEDataFileInput("AccountService.wsdl"); String [] testArgs1 = {"-serviceName","AccountService", "-genType","ServiceFromWSDLIntf", "-wsdl",path.getAbsolutePath(), "-gip","org.ebayopensource.test.soaframework.tools.codegen", "-dest",destDir.getAbsolutePath(), "-src",destDir.getAbsolutePath(), "-slayer","INTERMEDIATE", "-scv","1.0.0", "-bin",binDir.getAbsolutePath(), "-pr",destDir.getAbsolutePath()}; performDirectCodeGen(testArgs1,binDir); File typeMappingFile = new File(getTypeMappingsFile(destDir.getAbsolutePath(),"AdcommerceConfigGroupMarketV2")); Document typeDoc = XmlUtility.getXmlDoc(typeMappingFile.getAbsolutePath()); NodeList nodeList = typeDoc.getElementsByTagName("error-message"); for(int i =0; i < nodeList.getLength();i++){ NodeList childNodes = nodeList.item(i).getChildNodes(); for(int j= 0;j < childNodes.getLength();j++) { if(childNodes.item(j).getNodeName().equals("xml-element-name")){ Assert.assertTrue(childNodes.item(j).getFirstChild().getNodeValue().contains("{http://www.ebayopensource.org/turmeric/common/v1/types}")); } } } } @Test public void testMnsWsdlWithFault() throws Exception{ intfProps.put("enabledNamespaceFolding","false"); fillProperties(intfProps, intfProperty); File path = getCodegenQEDataFileInput("AccountService1.wsdl"); String [] testArgs1 = {"-serviceName","NewService", "-genType","ServiceFromWSDLIntf", "-wsdl",path.getAbsolutePath(), "-gip","org.ebayopensource.test.soaframework.tools.codegen", "-dest",destDir.getAbsolutePath(), "-src",destDir.getAbsolutePath(), "-slayer","INTERMEDIATE", "-scv","1.0.0", "-bin",binDir.getAbsolutePath(), "-pr",destDir.getAbsolutePath()}; performDirectCodeGen(testArgs1,binDir); } @Test public void testSingleNSWsdlWithFault() throws Exception{ intfProps.put("enabledNamespaceFolding","true"); fillProperties(intfProps, intfProperty); File path = getCodegenQEDataFileInput("BlogsServiceV1.wsdl"); String [] testArgs1 = {"-serviceName","NewService", "-genType","ServiceFromWSDLIntf", "-wsdl",path.getAbsolutePath(), "-gip","org.ebayopensource.test.soaframework.tools.codegen", "-dest",destDir.getAbsolutePath(), "-src",destDir.getAbsolutePath(), "-slayer","INTERMEDIATE", "-bin",binDir.getAbsolutePath(), "-scv","1.0.0", "-pr",destDir.getAbsolutePath()}; performDirectCodeGen(testArgs1,binDir); } public String getTypeMappingsFile(String destDir,String serviceName){ return destDir + File.separator +"gen-meta-src/META-INF/soa/common/config/"+serviceName+"/TypeMappings.xml"; } }