diff --git a/bin/generate-java-lib.sh b/bin/generate-java-lib.sh index 613480ff5d9..b6c279fa7b9 100755 --- a/bin/generate-java-lib.sh +++ b/bin/generate-java-lib.sh @@ -1,4 +1,11 @@ #!/bin/bash +if [ $# -ne 4 ] +then + echo "Error in $0 - Invalid Argument Count" + echo "Syntax: $0 location_of_service api_key package_name library_root" + exit +fi + echo "" > classpath.txt for file in `ls lib`; do echo -n 'lib/' >> classpath.txt; @@ -12,5 +19,5 @@ for file in `ls build`; done export CLASSPATH=$(cat classpath.txt):conf/java/templates -export JAVA_OPTS="${JAVA_OPTS} -DrulePath=data -Dproperty=Xmx2g -DloggerPath=$BUILD_COMMON/test-config/log4j.properties" +export JAVA_OPTS="${JAVA_OPTS} -Dproperty=Xmx2g" java $WORDNIK_OPTS $JAVA_CONFIG_OPTIONS $JAVA_OPTS -cp $CLASSPATH com.wordnik.swagger.codegen.config.java.JavaLibCodeGen "$@" \ No newline at end of file diff --git a/bin/runjavaTestCase.sh b/bin/runjavaTestCase.sh new file mode 100755 index 00000000000..7bf938abf5c --- /dev/null +++ b/bin/runjavaTestCase.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo "" > classpath.txt +for file in `ls lib`; + do echo -n 'lib/' >> classpath.txt; + echo -n $file >> classpath.txt; + echo -n ':' >> classpath.txt; +done +for file in `ls build`; + do echo -n 'build/' >> classpath.txt; + echo -n $file >> classpath.txt; + echo -n ':' >> classpath.txt; +done +#first argument to the command line script give location of the library jar file +export CLASSPATH=$(cat classpath.txt)$2 +export JAVA_OPTS="${JAVA_OPTS} -DrulePath=data -Dproperty=Xmx2g -DloggerPath=$BUILD_COMMON/test-config/log4j.properties" +java $WORDNIK_OPTS $JAVA_CONFIG_OPTIONS $JAVA_OPTS -cp $CLASSPATH "$@" + diff --git a/bin/test-java-lib.sh b/bin/test-java-lib.sh index e69de29bb2d..6f0229a719d 100755 --- a/bin/test-java-lib.sh +++ b/bin/test-java-lib.sh @@ -0,0 +1,22 @@ +#!/bin/bash +if [ $# -ne 7 ] +then + echo "Error in $0 - Invalid Argument Count" + echo "Syntax: $0 location_of_client_library location_of_service api_key test_script_location test_data_location test_data_class_name api_classes_package_name" + exit +fi +echo "" > classpath.txt +for file in `ls lib`; + do echo -n 'lib/' >> classpath.txt; + echo -n $file >> classpath.txt; + echo -n ':' >> classpath.txt; +done +for file in `ls build`; + do echo -n 'build/' >> classpath.txt; + echo -n $file >> classpath.txt; + echo -n ':' >> classpath.txt; +done +export CLASSPATH=$(cat classpath.txt)$7 +echo $CLASSPATH +export JAVA_OPTS="${JAVA_OPTS} -Dproperty=Xmx2g " +java $WORDNIK_OPTS $JAVA_CONFIG_OPTIONS $JAVA_OPTS -cp $CLASSPATH com.wordnik.swagger.testframework.APITestRunner "$@" JAVA \ No newline at end of file diff --git a/conf/java/sample/build.xml b/conf/java/sample/build.xml new file mode 100644 index 00000000000..e6ee7b8d0ea --- /dev/null +++ b/conf/java/sample/build.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/java/sample/ivy.xml b/conf/java/sample/ivy.xml new file mode 100644 index 00000000000..b2573f73d69 --- /dev/null +++ b/conf/java/sample/ivy.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/java/sample/ivysettings.xml b/conf/java/sample/ivysettings.xml new file mode 100644 index 00000000000..ea8e09b9f5b --- /dev/null +++ b/conf/java/sample/ivysettings.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/conf/java/sample/lib-test-data.json b/conf/java/sample/lib-test-data.json index 68a5c2cebd5..24d529e981d 100644 --- a/conf/java/sample/lib-test-data.json +++ b/conf/java/sample/lib-test-data.json @@ -1,12 +1,12 @@ { "userList":[ { - "userName":"testuser1", + "username":"testuser1", "password":"password1", "email":"test1@dummy.com" }, { - "userName":"testuser2", + "username":"testuser2", "password":"password2", "email":"test2@dummy.com" } diff --git a/conf/java/sample/lib-test-script.json b/conf/java/sample/lib-test-script.json index c61bd06c0da..7953c939cfb 100644 --- a/conf/java/sample/lib-test-script.json +++ b/conf/java/sample/lib-test-script.json @@ -145,7 +145,7 @@ "assertions" : [ { "actualOutput" : "${output(1.3).username}", - "condition" : "!=", + "condition" : "==", "expectedOutput" : "${input.userList[0].username}" } ] @@ -240,7 +240,7 @@ ] }, { - "name" : "PLace order", + "name" : "Place order", "id" : 2, "resourceId" : 14, "input" : { diff --git a/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java b/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java index 2e634afd68b..8667f1b55fd 100644 --- a/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java +++ b/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java @@ -40,13 +40,15 @@ public class JavaLibCodeGen extends LibraryCodeGenerator { JavaLibCodeGen codeGenerator = new JavaLibCodeGen(configPath); codeGenerator.generateCode(); } - if(args.length == 6) { + if(args.length == 4) { String apiServerURL = args[0]; String apiKey = args[1]; - String modelPackageName = args[2]; - String apiPackageName = args[3]; - String classOutputDir = args[4]; - String libraryHome = args[5]; + String packageName = args[2]; + String libraryHome = args[3]; + + String modelPackageName = packageName+".model"; + String apiPackageName = packageName+".api"; + String classOutputDir = libraryHome + "/src/main/java/" + packageName.replace(".","/"); JavaLibCodeGen codeGenerator = new JavaLibCodeGen(apiServerURL, apiKey, modelPackageName, apiPackageName, classOutputDir, libraryHome); codeGenerator.generateCode(); diff --git a/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java b/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java index 6e906365014..cfa28ffc845 100644 --- a/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java +++ b/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java @@ -80,7 +80,8 @@ public class APITestRunner { * Arg[4] --> test data class name (class to which test data file will be deserialized) * Arg[5] --> package where API classes are available * Arg[6] --> Language to execute test cases - * Arg[7] --> Optional test cases id. provide this if you need to execute only one test case + * Arg[7] --> Library location + * Arg[8] --> Optional test cases id. provide this if you need to execute only one test case * * @param args * @throws Exception @@ -93,17 +94,19 @@ public class APITestRunner { String testDataLocation = args[3]; String testDataClass = args[4]; String apiPackageName = args[5]; - String language = args[6]; + String libraryLocation = args[6]; + String language = args[7]; + String suiteId = "0"; - if(args.length > 7){ - suiteId = args[7]; + if(args.length > 8){ + suiteId = args[8]; } ApiKeyAuthTokenBasedSecurityHandler securityHandler = new ApiKeyAuthTokenBasedSecurityHandler(apiKey, ""); APIInvoker.initialize(securityHandler, apiServer, true); APITestRunner runner = new APITestRunner(); runner.initialize(testScriptLocation, testDataLocation, testDataClass); - runner.runTests(apiServer, apiPackageName, runner.getTestPackage(), language, new Integer(suiteId), apiPackageName, securityHandler); + runner.runTests(apiServer, apiPackageName, runner.getTestPackage(), language, new Integer(suiteId), apiPackageName, securityHandler, libraryLocation); } public void initialize(String testScriptLocation, String testDataLocation, String testDataClass) throws Exception { @@ -152,7 +155,8 @@ public class APITestRunner { * @param testPackage */ private void runTests(String apiServer, String apiPackageName, TestPackage testPackage, String language, int suiteId, - String libraryPackageName, ApiKeyAuthTokenBasedSecurityHandler securityHandler) throws Exception { + String libraryPackageName, ApiKeyAuthTokenBasedSecurityHandler securityHandler, + String libraryLocation) throws Exception { /** * Logic: * @@ -231,7 +235,7 @@ public class APITestRunner { String[] externalCommand = constructExternalCommand(apiServer, apiPackageName, securityHandler.getApiKey(), authToken, resource.getPath(), resource.getHttpMethod(), resource.getSuggestedMethodName(), - queryPathParameters.toString(), postData, language); + queryPathParameters.toString(), postData, language, libraryLocation); //print the command System.out.println("Test Case :" + testCasePath); for(String arg : externalCommand){ @@ -502,11 +506,12 @@ public class APITestRunner { */ private String[] constructExternalCommand(String apiServer, String apiPackageName, String apiKey, String authToken, String resource, String httpMethod, String suggestedMethodName, String queryAndPathParams, - String postData, String language) { + String postData, String language, String libraryLocation) { List command = new ArrayList(); if(language.equals(JAVA)){ - command.add("./bin/runjava.sh"); + command.add("./bin/runjavaTestCase.sh"); command.add("com.wordnik.swagger.testframework.JavaTestCaseExecutor"); + command.add( libraryLocation ); }else if (language.equals(PYTHON)){ command.add("../python/runtest.py "); }else if (language.equals(ANDROID)){ diff --git a/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java b/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java index 61021004799..7c272b7ea89 100644 --- a/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java +++ b/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java @@ -38,24 +38,24 @@ public class JavaTestCaseExecutor { JavaTestCaseExecutor runner = new JavaTestCaseExecutor(); - String apiServer = args[0]; - String servicePackageName = args[1]; - String apiKey = args[2]; - String authToken = args[3]; - String resource = args[4]; - String httpMethod = args[5]; - String suggestedMethodName = args[6]; + String apiServer = args[1]; + String servicePackageName = args[2]; + String apiKey = args[3]; + String authToken = args[4]; + String resource = args[5]; + String httpMethod = args[6]; + String suggestedMethodName = args[7]; Map queryAndPathParameters = new HashMap(); String postData = null; - if(args.length > 7 && args[7].length() > 0){ - String[] qpTuple = args[7].split("~"); + if(args.length > 8 && args[8].length() > 0){ + String[] qpTuple = args[8].split("~"); for(String tuple: qpTuple){ String[] nameValue = tuple.split("="); queryAndPathParameters.put(nameValue[0], nameValue[1]); } } - if(args.length > 8 ){ - postData = args[8]; + if(args.length > 9 ){ + postData = args[9]; } queryAndPathParameters.put("authToken", authToken);