forked from loafle/openapi-generator-original
* [gradle-plugin] Initial commit * Clarify comments on file constraints When a user sets the models, apis, or supportingFiles environment variables, any one of these being set disables generation for the other two. This could be confusing to users, so I've added some clarification text in the comments for these properties. In addition, I've cleaned up the extension on Property.ifNotEmpty, to avoid using Suppress annotations where it's not necessary. The change creates a local variable of type T?, allowing Kotlin to track the variable's nullable state at compile time. * Move gradle plugin under modules * Move kt files under kotlin source set. Add sample. * [gradle] map-like options as maps * Add tests for gradle validate task * Apply gradle plugin to mvn install phase * [gradle] Testing remaining gradle tasks * Add gradle plugin to the integration doc * Update gradle plugin README with task options * Gradle readme formatting
99 lines
3.3 KiB
Kotlin
99 lines
3.3 KiB
Kotlin
package org.openapitools.generator.gradle.plugin
|
|
|
|
import org.gradle.testkit.runner.GradleRunner
|
|
import org.gradle.testkit.runner.TaskOutcome.FAILED
|
|
import org.gradle.testkit.runner.TaskOutcome.SUCCESS
|
|
import org.testng.annotations.Test
|
|
import java.io.File
|
|
import kotlin.test.assertEquals
|
|
import kotlin.test.assertTrue
|
|
|
|
class ValidateTaskDslTest : TestBase() {
|
|
override var temp: File = createTempDir(javaClass.simpleName)
|
|
|
|
@Test
|
|
fun `openApiValidate should fail on non-file spec`() {
|
|
// Arrange
|
|
withProject("""
|
|
| plugins {
|
|
| id 'org.openapi.generator'
|
|
| }
|
|
|
|
|
| openApiValidate {
|
|
| inputSpec = "some_location"
|
|
| }
|
|
""".trimMargin())
|
|
|
|
// Act
|
|
val result = GradleRunner.create()
|
|
.withProjectDir(temp)
|
|
.withArguments("openApiValidate")
|
|
.withPluginClasspath()
|
|
.buildAndFail()
|
|
|
|
// Assert
|
|
assertTrue(result.output.contains("unable to read location `some_location`"), "Unexpected/no message presented to the user for a spec pointing to an invalid URI.")
|
|
assertEquals(FAILED, result.task(":openApiValidate")?.outcome,
|
|
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}")
|
|
}
|
|
|
|
@Test
|
|
fun `openApiValidate should succeed on valid spec`() {
|
|
// Arrange
|
|
val projectFiles = mapOf(
|
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0.yaml")
|
|
)
|
|
|
|
withProject("""
|
|
| plugins {
|
|
| id 'org.openapi.generator'
|
|
| }
|
|
|
|
|
| openApiValidate {
|
|
| inputSpec = file("spec.yaml").absolutePath
|
|
| }
|
|
""".trimMargin(), projectFiles)
|
|
|
|
// Act
|
|
val result = GradleRunner.create()
|
|
.withProjectDir(temp)
|
|
.withArguments("openApiValidate")
|
|
.withPluginClasspath()
|
|
.build()
|
|
|
|
// Assert
|
|
assertTrue(result.output.contains("Spec is valid."), "Unexpected/no message presented to the user for a valid spec.")
|
|
assertEquals(SUCCESS, result.task(":openApiValidate")?.outcome,
|
|
"Expected a successful run, but found ${result.task(":openApiValidate")?.outcome}")
|
|
}
|
|
|
|
@Test
|
|
fun `openApiValidate should fail on invalid spec`() {
|
|
// Arrange
|
|
val projectFiles = mapOf(
|
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
|
)
|
|
withProject("""
|
|
| plugins {
|
|
| id 'org.openapi.generator'
|
|
| }
|
|
|
|
|
| openApiValidate {
|
|
| inputSpec = file('spec.yaml').absolutePath
|
|
| }
|
|
""".trimMargin(), projectFiles)
|
|
|
|
// Act
|
|
val result = GradleRunner.create()
|
|
.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.")
|
|
assertEquals(FAILED, result.task(":openApiValidate")?.outcome,
|
|
"Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}")
|
|
}
|
|
|
|
} |