mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-06-04 16:00:59 +00:00
142 lines
4.8 KiB
Scala
142 lines
4.8 KiB
Scala
import io.swagger.codegen.DefaultCodegen
|
|
import io.swagger.models.properties.Property
|
|
import io.swagger.parser._
|
|
import org.junit.runner.RunWith
|
|
import org.scalatest.junit.JUnitRunner
|
|
import org.scalatest.{FlatSpec, Matchers}
|
|
|
|
@RunWith(classOf[JUnitRunner])
|
|
class CodegenTest extends FlatSpec with Matchers {
|
|
behavior of "Codegen"
|
|
|
|
it should "read a file upload param from a 2.0 spec" in {
|
|
val model = new SwaggerParser()
|
|
.read("src/test/resources/2_0/petstore.json")
|
|
|
|
val codegen = new DefaultCodegen()
|
|
val path = "/pet/{petId}/uploadImage"
|
|
val p = model.getPaths().get(path).getPost()
|
|
val op = codegen.fromOperation(path, "post", p, model.getDefinitions())
|
|
|
|
op.operationId should be ("uploadFile")
|
|
op.httpMethod should be ("POST")
|
|
op.hasConsumes should equal (true)
|
|
op.consumes.size should be(1)
|
|
op.consumes.get(0).get("mediaType") should be ("multipart/form-data")
|
|
|
|
op.hasProduces should equal (true)
|
|
val allParams = op.allParams
|
|
allParams.size should be (3)
|
|
|
|
val formParams = op.formParams
|
|
formParams.size should be (2)
|
|
|
|
val file = formParams.get(1)
|
|
file.isFormParam should equal (true)
|
|
file.dataType should be ("file")
|
|
file.required should equal (null)
|
|
file.isFile should equal (true)
|
|
file.hasMore should be (null)
|
|
}
|
|
|
|
it should "read formParam values from a 2.0 spec" in {
|
|
val model = new SwaggerParser()
|
|
.read("src/test/resources/2_0/petstore.json")
|
|
|
|
val codegen = new DefaultCodegen()
|
|
val path = "/pet/{petId}"
|
|
val p = model.getPaths().get(path).getPost()
|
|
val op = codegen.fromOperation(path, "post", p, model.getDefinitions())
|
|
|
|
op.operationId should be ("updatePetWithForm")
|
|
op.httpMethod should be ("POST")
|
|
op.hasConsumes should equal (true)
|
|
op.consumes.size should be(1)
|
|
op.consumes.get(0).get("mediaType") should be ("application/x-www-form-urlencoded")
|
|
|
|
op.hasProduces should equal (true)
|
|
op.produces.size should be(2)
|
|
op.produces.get(0).get("mediaType") should be ("application/json")
|
|
op.produces.get(0).get("hasMore") should be ("true")
|
|
op.produces.get(1).get("mediaType") should be ("application/xml")
|
|
|
|
val pathParams = op.pathParams
|
|
pathParams.size should be (1)
|
|
|
|
val idParam = pathParams.get(0)
|
|
idParam.isPathParam should equal (true)
|
|
idParam.dataType should be ("String")
|
|
idParam.required should equal (true)
|
|
idParam.hasMore should be (null)
|
|
|
|
val allParams = op.allParams
|
|
allParams.size should be (3)
|
|
|
|
val formParams = op.formParams
|
|
formParams.size should be (2)
|
|
val nameParam = formParams.get(0)
|
|
nameParam.isFormParam should equal (true)
|
|
nameParam.notFile should equal (true)
|
|
nameParam.dataType should be ("String")
|
|
nameParam.required should equal (null)
|
|
nameParam.hasMore should equal (true)
|
|
|
|
val statusParam = formParams.get(1)
|
|
statusParam.isFormParam should equal (true)
|
|
statusParam.notFile should equal (true)
|
|
statusParam.dataType should be ("String")
|
|
statusParam.required should equal (null)
|
|
statusParam.hasMore should be (null)
|
|
}
|
|
|
|
it should "handle required parameters from a 2.0 spec as required when figuring out Swagger types" in {
|
|
val model = new SwaggerParser()
|
|
.read("src/test/resources/2_0/requiredTest.json")
|
|
|
|
val codegen = new DefaultCodegen() {
|
|
override def getSwaggerType(p: Property) = Option(p) match {
|
|
case Some(property) if !property.getRequired =>
|
|
"Optional<" + super.getSwaggerType(p) + ">"
|
|
case other => super.getSwaggerType(p)
|
|
}
|
|
}
|
|
val path = "/tests/requiredParams"
|
|
val p = model.getPaths().get(path).getGet()
|
|
val op = codegen.fromOperation(path, "get", p, model.getDefinitions)
|
|
|
|
val formParams = op.formParams
|
|
formParams.size should be(2)
|
|
val requiredParam = formParams.get(0)
|
|
requiredParam.dataType should be("Long")
|
|
|
|
val optionalParam = formParams.get(1)
|
|
optionalParam.dataType should be("Optional<string>")
|
|
|
|
op.returnType should be("Long")
|
|
}
|
|
|
|
it should "select main response from a 2.0 spec using the lowest 2XX code" in {
|
|
val model = new SwaggerParser()
|
|
.read("src/test/resources/2_0/responseSelectionTest.json")
|
|
|
|
val codegen = new DefaultCodegen()
|
|
|
|
val path = "/tests/withTwoHundredAndDefault"
|
|
val p = model.getPaths().get(path).getGet()
|
|
val op = codegen.fromOperation(path, "get", p, model.getDefinitions())
|
|
op.returnType should be("String")
|
|
|
|
}
|
|
|
|
it should "select main response from a 2.0 spec using the default keyword when no 2XX code" in {
|
|
val model = new SwaggerParser()
|
|
.read("src/test/resources/2_0/responseSelectionTest.json")
|
|
|
|
val codegen = new DefaultCodegen()
|
|
|
|
val path = "/tests/withoutTwoHundredButDefault"
|
|
val p = model.getPaths().get(path).getGet()
|
|
val op = codegen.fromOperation(path, "get", p, model.getDefinitions())
|
|
op.returnType should be("String")
|
|
}
|
|
} |