forked from loafle/openapi-generator-original
[gradle-plugin] enhance unit test cases (#18285)
This commit is contained in:
parent
2a39b29684
commit
f357be480e
@ -401,7 +401,7 @@ class GenerateTaskDslTest : TestBase() {
|
|||||||
fun `openApiValidate should fail on invalid spec`() {
|
fun `openApiValidate should fail on invalid spec`() {
|
||||||
// Arrange
|
// Arrange
|
||||||
val projectFiles = mapOf(
|
val projectFiles = mapOf(
|
||||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||||
)
|
)
|
||||||
|
|
||||||
withProject(defaultBuildGradle, projectFiles)
|
withProject(defaultBuildGradle, projectFiles)
|
||||||
@ -423,7 +423,7 @@ class GenerateTaskDslTest : TestBase() {
|
|||||||
fun `openApiValidate should ok skip spec validation`() {
|
fun `openApiValidate should ok skip spec validation`() {
|
||||||
// Arrange
|
// Arrange
|
||||||
val projectFiles = mapOf(
|
val projectFiles = mapOf(
|
||||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||||
)
|
)
|
||||||
|
|
||||||
withProject("""
|
withProject("""
|
||||||
|
@ -113,7 +113,7 @@ class ValidateTaskDslTest : TestBase() {
|
|||||||
fun `openApiValidate should fail on invalid spec`(gradleVersion: String?) {
|
fun `openApiValidate should fail on invalid spec`(gradleVersion: String?) {
|
||||||
// Arrange
|
// Arrange
|
||||||
val projectFiles = mapOf(
|
val projectFiles = mapOf(
|
||||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||||
)
|
)
|
||||||
withProject(
|
withProject(
|
||||||
"""
|
"""
|
||||||
@ -139,6 +139,50 @@ class ValidateTaskDslTest : TestBase() {
|
|||||||
result.output.contains("Spec is invalid."),
|
result.output.contains("Spec is invalid."),
|
||||||
"Unexpected/no message presented to the user for an invalid spec."
|
"Unexpected/no message presented to the user for an invalid spec."
|
||||||
)
|
)
|
||||||
|
assertTrue(
|
||||||
|
result.output.contains("attribute info is missing"),
|
||||||
|
"Spec validation detail"
|
||||||
|
)
|
||||||
|
assertEquals(
|
||||||
|
FAILED, result.task(":openApiValidate")?.outcome,
|
||||||
|
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "gradle_version_provider")
|
||||||
|
fun `openApiValidate should fail on invalid spec with duplicate 200 status code`(gradleVersion: String?) {
|
||||||
|
// Arrange
|
||||||
|
val projectFiles = mapOf(
|
||||||
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-duplicate-200-status-code.yaml")
|
||||||
|
)
|
||||||
|
withProject(
|
||||||
|
"""
|
||||||
|
| plugins {
|
||||||
|
| id 'org.openapi.generator'
|
||||||
|
| }
|
||||||
|
|
|
||||||
|
| openApiValidate {
|
||||||
|
| inputSpec = file('spec.yaml').absolutePath
|
||||||
|
| }
|
||||||
|
""".trimMargin(), projectFiles
|
||||||
|
)
|
||||||
|
|
||||||
|
// Act
|
||||||
|
val result = getGradleRunner(gradleVersion)
|
||||||
|
.withProjectDir(temp)
|
||||||
|
.withArguments("openApiValidate")
|
||||||
|
.withPluginClasspath()
|
||||||
|
.buildAndFail()
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertTrue(
|
||||||
|
result.output.contains("Spec is invalid."),
|
||||||
|
"Unexpected/no message presented to the user for an invalid spec."
|
||||||
|
)
|
||||||
|
assertTrue(
|
||||||
|
result.output.contains("Duplicate field 200"),
|
||||||
|
"Spec validation detail"
|
||||||
|
)
|
||||||
assertEquals(
|
assertEquals(
|
||||||
FAILED, result.task(":openApiValidate")?.outcome,
|
FAILED, result.task(":openApiValidate")?.outcome,
|
||||||
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}"
|
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}"
|
||||||
@ -186,7 +230,7 @@ class ValidateTaskDslTest : TestBase() {
|
|||||||
fun `validateBadSpec as defined task should fail on invalid spec`(gradleVersion: String?) {
|
fun `validateBadSpec as defined task should fail on invalid spec`(gradleVersion: String?) {
|
||||||
// Arrange
|
// Arrange
|
||||||
val projectFiles = mapOf(
|
val projectFiles = mapOf(
|
||||||
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid-due-to-missing-info-attribute.yaml")
|
||||||
)
|
)
|
||||||
withProject(
|
withProject(
|
||||||
"""
|
"""
|
||||||
@ -212,6 +256,10 @@ class ValidateTaskDslTest : TestBase() {
|
|||||||
result.output.contains("Spec is invalid."),
|
result.output.contains("Spec is invalid."),
|
||||||
"Unexpected/no message presented to the user for an invalid spec."
|
"Unexpected/no message presented to the user for an invalid spec."
|
||||||
)
|
)
|
||||||
|
assertTrue(
|
||||||
|
result.output.contains("attribute info is missing"),
|
||||||
|
"Unexpected/no message presented to the user for an invalid spec."
|
||||||
|
)
|
||||||
assertEquals(
|
assertEquals(
|
||||||
FAILED, result.task(":validateBadSpec")?.outcome,
|
FAILED, result.task(":validateBadSpec")?.outcome,
|
||||||
"Expected a failed run, but found ${result.task(":validateBadSpec")?.outcome}"
|
"Expected a failed run, but found ${result.task(":validateBadSpec")?.outcome}"
|
||||||
|
@ -0,0 +1,111 @@
|
|||||||
|
openapi: "3.0.0"
|
||||||
|
info:
|
||||||
|
version: 1.0.0
|
||||||
|
title: Swagger Petstore
|
||||||
|
license:
|
||||||
|
name: MIT
|
||||||
|
servers:
|
||||||
|
- url: http://petstore.swagger.io/v1
|
||||||
|
paths:
|
||||||
|
/pets:
|
||||||
|
get:
|
||||||
|
summary: List all pets
|
||||||
|
operationId: listPets
|
||||||
|
tags:
|
||||||
|
- pets
|
||||||
|
parameters:
|
||||||
|
- name: limit
|
||||||
|
in: query
|
||||||
|
description: How many items to return at one time (max 100)
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: A paged array of pets
|
||||||
|
headers:
|
||||||
|
x-next:
|
||||||
|
description: A link to the next page of responses
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Pets"
|
||||||
|
'200':
|
||||||
|
description: duplicate 200
|
||||||
|
default:
|
||||||
|
description: unexpected error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
post:
|
||||||
|
summary: Create a pet
|
||||||
|
operationId: createPets
|
||||||
|
tags:
|
||||||
|
- pets
|
||||||
|
responses:
|
||||||
|
'201':
|
||||||
|
description: Null response
|
||||||
|
default:
|
||||||
|
description: unexpected error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
/pets/{petId}:
|
||||||
|
get:
|
||||||
|
summary: Info for a specific pet
|
||||||
|
operationId: showPetById
|
||||||
|
tags:
|
||||||
|
- pets
|
||||||
|
parameters:
|
||||||
|
- name: petId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
description: The id of the pet to retrieve
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Expected response to a valid request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Pets"
|
||||||
|
default:
|
||||||
|
description: unexpected error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
Pet:
|
||||||
|
required:
|
||||||
|
- id
|
||||||
|
- name
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
tag:
|
||||||
|
type: string
|
||||||
|
Pets:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/Pet"
|
||||||
|
Error:
|
||||||
|
required:
|
||||||
|
- code
|
||||||
|
- message
|
||||||
|
properties:
|
||||||
|
code:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
message:
|
||||||
|
type: string
|
Loading…
x
Reference in New Issue
Block a user