diff --git a/build.gradle b/build.gradle index 0d1711b..cb3ae64 100644 --- a/build.gradle +++ b/build.gradle @@ -63,3 +63,8 @@ artifacts { task wrapper(type: Wrapper) { gradleVersion = '2.12' } + +task runJar(dependsOn:jar) << { + String swaggerInput = file("src/test/resources/swagger_petstore.yaml").getAbsolutePath() + javaexec { main="-jar"; args = [jar.archivePath, 'convert', '-i', "${swaggerInput}", '-d', "${buildDir}"]} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..110207d --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +systemProp.file.encoding=UTF-8 +systemProp.sun.jnu.encoding=UTF-8 \ No newline at end of file diff --git a/src/test/resources/swagger_petstore.yaml b/src/test/resources/swagger_petstore.yaml new file mode 100644 index 0000000..b3ec656 --- /dev/null +++ b/src/test/resources/swagger_petstore.yaml @@ -0,0 +1,670 @@ +swagger: "2.0" +info: + description: | + This is a sample server Petstore server. + + [Learn about Swagger](http://swagger.io) or join the IRC channel `#swagger` on irc.freenode.net. + + For this sample, you can use the api key `special-key` to test the authorization filters + version: "1.0.0" + title: Swagger Petstore + termsOfService: http://helloreverb.com/terms/ + contact: + name: apiteam@swagger.io + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html +host: petstore.swagger.io +basePath: /v2 +schemes: + - http +tags: + - name: pet + description: Pet resource + - name: store + description: Store resource + - name: user + description: User resource +paths: + /pets: + post: + tags: + - pet + summary: Add a new pet to the store + description: "" + operationId: addPet + consumes: + - application/json + - application/xml + produces: + - application/json + - application/xml + parameters: + - $ref: "#/parameters/PetBody" + responses: + "405": + description: Invalid input + security: + - petstore_auth: + - write_pets + - read_pets + put: + tags: + - pet + summary: Update an existing pet + description: "" + operationId: updatePet + consumes: + - application/json + - application/xml + produces: + - application/json + - application/xml + parameters: + - $ref: "#/parameters/PetBody" + responses: + "405": + description: Validation exception + "404": + description: Pet not found + "400": + $ref: "#/responses/InvalidId" + security: + - petstore_auth: + - write_pets + - read_pets + /pets/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma seperated strings + operationId: findPetsByStatus + produces: + - application/json + - application/xml + parameters: + - in: query + name: status + description: Status values that need to be considered for filter + required: false + type: array + items: + type: string + collectionFormat: multi + responses: + "200": + description: successful operation + schema: + type: array + items: + $ref: "#/definitions/Pet" + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + description: Invalid status value + security: + - petstore_auth: + - write_pets + - read_pets + /pets/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. + operationId: findPetsByTags + produces: + - application/json + - application/xml + parameters: + - in: query + name: tags + description: Tags to filter by + required: false + type: array + items: + type: string + collectionFormat: multi + responses: + "200": + description: successful operation + schema: + type: array + items: + $ref: "#/definitions/Pet" + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + description: Invalid tag value + security: + - petstore_auth: + - write_pets + - read_pets + /pets/{petId}: + get: + tags: + - pet + summary: Find pet by ID + description: Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + operationId: getPetById + produces: + - application/json + - application/xml + parameters: + - in: path + name: petId + description: ID of pet that needs to be fetched + required: true + type: integer + format: int64 + responses: + "404": + description: Pet not found + "200": + description: successful operation + schema: + $ref: "#/definitions/Pet" + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + $ref: "#/responses/InvalidId" + security: + - api_key: [] + - petstore_auth: + - write_pets + - read_pets + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: "" + operationId: updatePetWithForm + consumes: + - application/x-www-form-urlencoded + produces: + - application/json + - application/xml + parameters: + - in: path + name: petId + description: ID of pet that needs to be updated + required: true + type: string + - in: formData + name: name + description: Updated name of the pet + required: true + type: string + - in: formData + name: status + description: Updated status of the pet + required: true + type: string + responses: + "405": + description: Invalid input + security: + - petstore_auth: + - write_pets + - read_pets + delete: + tags: + - pet + summary: Deletes a pet + description: "" + operationId: deletePet + produces: + - application/json + - application/xml + parameters: + - in: header + name: api_key + description: "" + required: true + type: string + - in: path + name: petId + description: Pet id to delete + required: true + type: integer + format: int64 + responses: + "400": + description: Invalid pet value + security: + - petstore_auth: + - write_pets + - read_pets + /stores/order: + post: + tags: + - store + summary: Place an order for a pet + description: "" + operationId: placeOrder + produces: + - application/json + - application/xml + parameters: + - in: body + name: body + description: order placed for purchasing the pet + required: false + schema: + $ref: "#/definitions/Order" + responses: + "200": + description: successful operation + schema: + $ref: "#/definitions/Order" + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + description: Invalid Order + /stores/order/{orderId}: + get: + tags: + - store + summary: Find purchase order by ID + description: For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + operationId: getOrderById + produces: + - application/json + - application/xml + parameters: + - in: path + name: orderId + description: ID of pet that needs to be fetched + required: true + type: string + responses: + "404": + description: Order not found + "200": + description: successful operation + schema: + $ref: "#/definitions/Order" + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + $ref: "#/responses/InvalidId" + delete: + tags: + - store + summary: Delete purchase order by ID + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + produces: + - application/json + - application/xml + parameters: + - in: path + name: orderId + description: ID of the order that needs to be deleted + required: true + type: string + responses: + "404": + description: Order not found + "400": + $ref: "#/responses/InvalidId" + /users: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + produces: + - application/json + - application/xml + parameters: + - in: body + name: body + description: Created user object + required: false + schema: + $ref: "#/definitions/User" + responses: + default: + description: successful operation + /users/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: "" + operationId: createUsersWithArrayInput + produces: + - application/json + - application/xml + parameters: + - in: body + name: body + description: List of user object + required: false + schema: + type: array + items: + $ref: "#/definitions/User" + responses: + default: + description: successful operation + /users/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: "" + operationId: createUsersWithListInput + produces: + - application/json + - application/xml + parameters: + - in: body + name: body + description: List of user object + required: false + schema: + type: array + items: + $ref: "#/definitions/User" + responses: + default: + description: successful operation + /users/login: + get: + tags: + - user + summary: Logs user into the system + description: "" + operationId: loginUser + produces: + - application/json + - application/xml + parameters: + - in: query + name: username + description: The user name for login + required: false + type: string + - in: query + name: password + description: The password for login in clear text + required: false + type: string + responses: + "200": + description: successful operation + schema: + type: string + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + description: Invalid username/password supplied + /users/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: "" + operationId: logoutUser + produces: + - application/json + - application/xml + responses: + default: + description: successful operation + /users/{username}: + get: + tags: + - user + summary: Get user by user name + description: "" + operationId: getUserByName + produces: + - application/json + - application/xml + parameters: + - in: path + name: username + description: The name that needs to be fetched. Use user1 for testing. + required: true + type: string + responses: + "404": + description: User not found + "200": + description: successful operation + schema: + $ref: "#/definitions/User" + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + type: integer + "400": + description: Invalid username supplied + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + produces: + - application/json + - application/xml + parameters: + - in: path + name: username + description: name that need to be deleted + required: true + type: string + - in: body + name: body + description: Updated user object + required: false + schema: + $ref: "#/definitions/User" + responses: + "404": + description: User not found + "400": + description: Invalid user supplied + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + produces: + - application/json + - application/xml + parameters: + - in: path + name: username + description: The name that needs to be deleted + required: true + type: string + responses: + "404": + description: User not found + "400": + description: Invalid username supplied +parameters: + PetBody: + in: body + name: body + description: Pet object that needs to be added to the store + required: false + schema: + $ref: "#/definitions/Pet" +responses: + InvalidId: + description: Invalid ID supplied +securityDefinitions: + api_key: + type: apiKey + name: api_key + in: header + petstore_auth: + type: oauth2 + authorizationUrl: http://petstore.swagger.io/api/oauth/dialog + flow: implicit + scopes: + write_pets: modify pets in your account + read_pets: read your pets +definitions: + User: + type: object + properties: + id: + type: integer + format: int64 + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + format: int32 + description: User Status + Category: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: The name of the category + minLength: 0 + maxLength: 255 + pattern: "[A-Za-zäöüÄÖÜß]{0,255}" + default: DefaultCategory + example: FoobarCategory + Pet: + type: object + required: + - name + - photoUrls + properties: + id: + type: integer + format: int64 + category: + $ref: "#/definitions/Category" + name: + type: string + example: doggie + photoUrls: + type: array + items: + type: string + tags: + type: array + items: + $ref: "#/definitions/Tag" + status: + type: string + description: pet status in the store, + enum: + - Dead + - Alive + Tag: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + Order: + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + quantity: + type: integer + format: int32 + minimum: 0 + maximum: 10000.0 + default: 0 + example: 10 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - Ordered + - Cancelled + complete: + type: boolean