# Swagger Client Code-Generator ## Overview This is a project to build the Swagger code-gen library which can be used to automatically generate client libraries from a Swagger-compliant server. It also contains a testing framework which allows the client library to query an API server and validate expected results You can find out more about both the spec and the framework at http://swagger.wordnik.com. For more information about Wordnik's APIs, please visit http://developer.wordnik.com. ### Prerequisites You need the following installed and available in your $PATH:
ant -f install-ivyThis will copy the ivy ant lib into your antlib directory. Now you can build the artifact:
antThis will create the swagger-codegen library in your build folder. ### To build java client source files
./bin/generate-java-lib.sh {server-url} {api_key} {output-package} {output-dir}for example:
./bin/generate-java-lib.sh http://petstore.swagger.wordnik.com/api/ special-key com.foo.mydriver.model generated-filesThe main class for the generator is at src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java The code-gen uses the antlr string template library for generating the output files, please look at http://www.stringtemplate.org for details on the antlr framework. Wordnik team is working on generating libraries for Ruby, ActionScript 3, Android, PHP and JavaScript. They will be released to open source in coming weeks. ### The Swagger client test framework The testing framework helps you to test Swagger generated client libraries using declarative test scripts. The same scripts can be used to test client libraries in different languages. The framework can be used for client and server regression testing. For Example, first build the client library from the sample app:
./bin/generate-java-lib.sh http://petstore.swagger.wordnik.com/api/ special-key com.foo.mydriver generated-filesUse the sample build script to build a jar from the client files:
cp conf/java/sample/*.xml ./generated-files cd generated-files antThis creates a complete client library jar. You can now run the tests:
./bin/test-java-lib.sh http://petstore.swagger.wordnik.com/api/ special-key conf/java/sample/lib-test-script.json \ conf/java/sample/lib-test-data.json com.foo.mydriver.model.TestData com.foo.mydriver.api \ generated-files/build/swagger-sample-java-lib-1.0.jar Summary --> Total Test Cases: 9 Failed Test Cases: 0 Details: 1.1 : Create User : passed 1.2 : Login User : passed 1.3 : Find user by name : passed 1.4 : Delete user by name : passed 2.1 : Add pet : passed 2.2 : Find pet by id : passed 2.3 : Find pet by status : passed 3.1 : Find order by id : passed 3.2 : Place order : passedIn detail, there are two components in the test framework:
${input., followed by object graph navigation syntax. Example: to refer a first user object in test data file use the syntax
${input.userList[0]}
${input.userList[0].username}
${output.
${output(1.2)}. Individual attributes can be accessed using OGNL syntax. Example:
${output(1.1).username}#### Reporting Test Results A Summary will be reported with each test run. For instance:
Sample: "Summary --> Total Test Cases: 9 Failed Test Cases: 0"In detail section each test case and its status (passed/failed) are reported. Failures include an exception trace. Test case path is combination of test suite id and test case id separated by "."