Skip to content
William Cheng edited this page Dec 18, 2022 · 14 revisions

Integration Tests

To run integration test for an API client or server stub, go to the sample directory which contains pom.xml and then run mvn integration-test.

To identify API client or server stub tests with pom.xml, run find samples -name "pom.xml" under Mac/Linux.

Continuous Integration

CI Config Tests covered
Travis .travis.yml RubyJavaScript, PHP, Python, TypeScript, Haskell, C++, Elm, Groovy, etc
Shippable shippable.yml Mustache templates, Elixir, Erlang (client, server), Kotlin, etc
AppVeyor appveyor.yml C# (clients), PowerShell
CircleCI circle.yml Go, TypeScript Angular6, Clojure, Java (clients, servers), Scala, Kotlin with JDK7, JDK8, etc
drone.io .drone.yml JDK11 test, OCaml client, etc
bitrise.io bitrise.yml Swift 4, 5

How to add integration tests for new Petstore samples?

1. Create pom.xml in the sample directory

Let's say the new sample folder is openapi-generator/samples/client/petstore/ruby/. We will need to create pom.xml used by Maven to execute commands for testing the Ruby Petstore client.

To test it locally, please run mvn integration-test

2. Update root-level pom.xml to include the new directory

Please update pom.xml.

For example, search for "ruby" in pom.xml to see how the Ruby petstore folder is added.

3. Run the test server locally

To setup the test server locally, please run

docker pull swaggerapi/petstore

docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore

and add the following entry to your host table:

127.0.0.1 petstore.swagger.io

Echo server

Echo server tests are newly added in Nov 2022. Eventually it will replace the PetStore server tests, which couldn't meet the growing requirements in terms of test coverage of the auto-generated code.

To run the server:

git clone https://github.com/wing328/http-echo-server -b openapi-generator-test-server
cd http-echo-server
npm install
npm start

Echo server OpenAPI spec:

modules/openapi-generator/src/test/resources/3_0/echo_api.yaml

Example of a sample config:

generatorName: java
outputDir: samples/client/echo_api/java/native
library: native
inputSpec: modules/openapi-generator/src/test/resources/3_0/echo_api.yaml
templateDir: modules/openapi-generator/src/main/resources/Java
additionalProperties:
  artifactId: echo-api-native
  hideGenerationTimestamp: "true"

To facilitate testing, usually we create a helper to parse the response from the echo server, e.g. https://github.com/OpenAPITools/openapi-generator/blob/master/samples/client/echo_api/java/native/src/test/java/org/openapitools/client/EchoServerResponseParser.java