From 5448c96df0192b3a33711db3de6fbd14560e8a30 Mon Sep 17 00:00:00 2001 From: David Dufour-Boivin Date: Thu, 5 Jul 2018 21:43:54 +0200 Subject: [PATCH] WIP Make more test pass, but `spp api` still does not (#714) --- .../rule/zally/NoUnusedDefinitionsRule2.kt | 5 +- .../test/java/de/zalando/zally/TestUtil.kt | 12 ++--- .../zally/rule/zalando/MediaTypesRuleTest.kt | 4 +- .../zally/NoUnusedDefinitionsRule2Test.kt | 47 ++++++++++--------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/server/src/main/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2.kt b/server/src/main/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2.kt index c7453bfbf..5a73a6e92 100644 --- a/server/src/main/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2.kt +++ b/server/src/main/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2.kt @@ -10,7 +10,6 @@ import io.swagger.v3.oas.models.Operation import io.swagger.v3.oas.models.PathItem import io.swagger.v3.oas.models.media.ArraySchema import io.swagger.v3.oas.models.media.ComposedSchema -import io.swagger.v3.oas.models.media.ObjectSchema import io.swagger.v3.oas.models.media.Schema import io.swagger.v3.oas.models.responses.ApiResponse @@ -79,14 +78,12 @@ class NoUnusedDefinitionsRule2 { findAllSchemas(schema.items) is ComposedSchema -> findAllSchemas(schema) - is ObjectSchema -> { + else -> { val self = if (includeSelf) listOf(schema) else emptyList() val properties = schema.properties.orEmpty().values.flatMap(this::findAllSchemas) val additionalProperties = findAllRefsFromProperties(schema.properties) self + properties + additionalProperties } - else -> - emptyList() } private fun findAllSchemas(schema: ComposedSchema): List> = diff --git a/server/src/test/java/de/zalando/zally/TestUtil.kt b/server/src/test/java/de/zalando/zally/TestUtil.kt index 19c3356f3..fb9bc327b 100644 --- a/server/src/test/java/de/zalando/zally/TestUtil.kt +++ b/server/src/test/java/de/zalando/zally/TestUtil.kt @@ -5,11 +5,7 @@ import com.typesafe.config.Config import com.typesafe.config.ConfigFactory import de.zalando.zally.rule.Context import de.zalando.zally.rule.ObjectTreeReader -import io.swagger.models.ModelImpl -import io.swagger.models.Operation -import io.swagger.models.Path -import io.swagger.models.Response -import io.swagger.models.Swagger +import io.swagger.models.* import io.swagger.models.parameters.HeaderParameter import io.swagger.models.properties.StringProperty import io.swagger.parser.SwaggerParser @@ -26,9 +22,11 @@ val testConfig: Config by lazy { fun getFixture(fileName: String): Swagger = SwaggerParser().read("fixtures/$fileName") -fun getContextFromFixture(fileName: String): Context? { +fun getContextFromFixture(fileName: String): Context { val content = getResourceContent(fileName) - return Context.createOpenApiContext(content) ?: Context.createSwaggerContext(content) + return Context.createOpenApiContext(content) + ?: Context.createSwaggerContext(content) + ?: throw AssertionError("Could not generate a context for fixture `$fileName`.") } fun getResourceContent(fileName: String): String = ClasspathHelper.loadFileFromClasspath("fixtures/$fileName") diff --git a/server/src/test/java/de/zalando/zally/rule/zalando/MediaTypesRuleTest.kt b/server/src/test/java/de/zalando/zally/rule/zalando/MediaTypesRuleTest.kt index fe2e923b5..e2b3692c2 100644 --- a/server/src/test/java/de/zalando/zally/rule/zalando/MediaTypesRuleTest.kt +++ b/server/src/test/java/de/zalando/zally/rule/zalando/MediaTypesRuleTest.kt @@ -120,7 +120,7 @@ class MediaTypesRuleTest { @Test fun `the SPP API generates violations`() { - val context = getContextFromFixture("api_spp.json")!! + val context = getContextFromFixture("api_spp.json") val result = rule.validate(context) assertThat(result).hasSameElementsAs(listOf( // --- consumes --- @@ -137,7 +137,7 @@ class MediaTypesRuleTest { @Test fun `the SPA API generates no violations`() { - val context = getContextFromFixture("api_spa.yaml")!! + val context = getContextFromFixture("api_spa.yaml") assertThat(rule.validate(context)).isEmpty() } diff --git a/server/src/test/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2Test.kt b/server/src/test/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2Test.kt index 3aa63edb1..23fe46cd8 100644 --- a/server/src/test/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2Test.kt +++ b/server/src/test/java/de/zalando/zally/rule/zally/NoUnusedDefinitionsRule2Test.kt @@ -2,45 +2,50 @@ package de.zalando.zally.rule.zally import com.fasterxml.jackson.core.JsonPointer import de.zalando.zally.getContextFromFixture +import de.zalando.zally.rule.Context import de.zalando.zally.rule.api.Violation +import io.swagger.v3.oas.models.OpenAPI import org.assertj.core.api.Assertions.assertThat import org.junit.Test class NoUnusedDefinitionsRule2Test { @Test - fun positiveCase() { - val context = getContextFromFixture("unusedDefinitionsValid.json")!! + fun `positive case causes no violation`() { + val context = getContextFromFixture("unusedDefinitionsValid.json") assertThat(rule.validate(context)) .isEmpty() } @Test - fun negativeCase() { - val results = rule.validate(getContextFromFixture("unusedDefinitionsInvalid.json")!!) + fun `negative case causes violations`() { + val results = rule.validate(getContextFromFixture("unusedDefinitionsInvalid.json")) assertThat(results).hasSameElementsAs(listOf( vSchema("/definitions/PetName"), vParam("/parameters/FlowId") )) } - // @Test -// fun emptySwaggerShouldPass() { -// val swagger = Swagger() -// assertThat(rule.validate(swagger)).isNull() -// } -// -// @Test -// fun positiveCaseSpp() { -// val swagger = getFixture("api_spp.json") -// assertThat(rule.validate(swagger)).isNull() -// } -// -// @Test -// fun positiveCaseTinbox() { -// val swagger = getFixture("api_tinbox.yaml") -// assertThat(rule.validate(swagger)).isNull() -// } + @Test + fun `empty specification causes no violation`() { + val context = Context(OpenAPI()) + assertThat(rule.validate(context)) + .isEmpty() + } + + @Test + fun `the SPP API causes no violations`() { + val context = getContextFromFixture("api_spp.json") + assertThat(rule.validate(context)) + .isEmpty() + } + + @Test + fun `the tinbox API causes no violation`() { + val context = getContextFromFixture("api_tinbox.yaml") + assertThat(rule.validate(context)) + .isEmpty() + } private val rule = NoUnusedDefinitionsRule2()