package org.ebayopensource.turmeric.tools.codegen; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class JavaHomeTests extends AbstractServiceGeneratorTestCase { Properties interfaceProper = new Properties(); String testArgs1[]; String javahome; String jdkhome; String version; File destDir = null; File prDir = null; File binDir = null; @Before public void initialize() throws Exception { testingdir.ensureEmpty(); destDir = testingdir.getDir(); binDir = testingdir.getFile("bin"); interfaceProper.put("service_interface_class_name", "org.ebayopensource.new.pack.Xyz.java"); interfaceProper.put("service_layer", "COMMON"); interfaceProper.put("original_wsdl_uri", "Vanilla-Codegen\\ServiceInputFiles\\AccountService.wsdl"); interfaceProper.put("service_version", "1.0.0"); interfaceProper.put("admin_name", "newadminname"); interfaceProper.put("sipp_version", "1.1"); createInterfacePropsFile(interfaceProper, destDir.getAbsolutePath()); } @Test // null value passed to javahome public void noValuesForJavaHome() throws Exception { File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); testArgs1 = new String[] { "-servicename", "NewService", "-genType", "ServiceFromWSDLIntf", "-wsdl", wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-scv", "1.2.3", "-slayer", "COMMON", "-pr", destDir.getAbsolutePath(), "-src", destDir.getAbsolutePath(), "-javahome", "", "-jdkhome", "", "-adminname", "xyz", "-environment", "prod" }; try { ServiceGenerator sgen = new ServiceGenerator(); sgen.startCodeGen(testArgs1); assertTrue(false); } catch (Exception e) { Assert.assertTrue(e.getMessage().contains( "Please provide a proper value for the option -javahome")); assertTrue(true); } } @Test // args not passed // enivronment variable should be used public void argsNotPassedForJavaHome() throws Exception { File wsdl = getCodegenQEDataFileInput("AccountService.wsdl"); testArgs1 = new String[] { "-servicename", "NewService", "-genType", "ServiceFromWSDLIntf", "-gip", "org.ebayopensource.snew.pack", "-wsdl", wsdl.getAbsolutePath(), "-dest", destDir.getAbsolutePath(), "-scv", "1.2.3", "-slayer", "COMMON", "-pr", destDir.getAbsolutePath(), "-src", destDir.getAbsolutePath(), "-bin", binDir.getAbsolutePath(), "-adminname", "xyz", }; try { ServiceGenerator sgen = new ServiceGenerator(); sgen.startCodeGen(testArgs1); javahome = System.getenv("JAVA_HOME"); jdkhome = System.getenv("JDK_HOME"); version = checkClassVersion(destDir.getAbsolutePath() + "/org/ebayopensource/snew/pack/Xyz.class"); assertEquals("50.0", version); } catch (Exception e) { } } @Test public void testTypeLib() { ServiceGenerator sGenerator = new ServiceGenerator(); String[] pluginParameter = { "-gentype", "genTypeCreateTypeLibrary", "-pr", destDir.getAbsolutePath(), "-libname", "NewLibrary", "-libVersion", "1.2.3", "-libCategory", "COMMON", "-libNamespace", "http://www.ebayopensource.com/soaframework/examples/config", "-javahome", "", "-jdkhome", "" }; try { sGenerator.startCodeGen(pluginParameter); assertTrue(false); } catch (Exception e) { assertTrue(true); } } @Test public void testTypeLib2() { ServiceGenerator sGenerator = new ServiceGenerator(); String[] pluginParameter = { "-gentype", "genTypeCreateTypeLibrary", "-pr", destDir.getAbsolutePath(), "-libname", "NewLibrary", "-libVersion", "1.2.3", "-libCategory", "COMMON", "-libNamespace", "http://www.ebayopensource.com/soaframework/examples/config", "-javahome", "-jdkhome" }; try { sGenerator.startCodeGen(pluginParameter); assertTrue(false); } catch (Exception e) { } } private static String checkClassVersion(String filename) throws IOException { DataInputStream in = new DataInputStream(new FileInputStream(filename)); int magic = in.readInt(); if (magic != 0xcafebabe) { System.out.println(filename + " is not a valid class!"); ; } int minor = in.readUnsignedShort(); int major = in.readUnsignedShort(); System.out.println(filename + ": " + major + " . " + minor); in.close(); return major + "." + minor; } @After public void deinitialize() { testArgs1 = null; javahome = null; jdkhome = null; version = null; } }