| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.camel.swagger; |
| |
| import java.util.Collections; |
| import java.util.List; |
| import java.util.Map; |
| |
| import io.swagger.jaxrs.config.BeanConfig; |
| import io.swagger.models.Operation; |
| import io.swagger.models.Path; |
| import io.swagger.models.Swagger; |
| import io.swagger.models.parameters.Parameter; |
| import org.apache.camel.impl.engine.DefaultClassResolver; |
| import org.apache.camel.model.rest.RestDefinition; |
| import org.apache.camel.model.rest.RestParamType; |
| import org.junit.Test; |
| |
| import static org.assertj.core.api.Assertions.assertThat; |
| |
| public class RestSwaggerArrayEnumTest { |
| |
| @Test |
| public void shouldGenerateEnumValuesForArraysAndNonArrays() throws Exception { |
| final RestSwaggerReader reader = new RestSwaggerReader(); |
| |
| final RestDefinition restDefinition = new RestDefinition(); |
| restDefinition.get("/operation").param().name("pathParam").type(RestParamType.path).dataType("string") |
| .allowableValues("a", "b", "c").endParam() |
| |
| .param().name("queryParam").type(RestParamType.query).dataType("int").allowableValues("1", "2", "3") |
| .endParam() |
| |
| .param().name("headerParam").type(RestParamType.header).dataType("float") |
| .allowableValues("1.1", "2.2", "3.3").endParam() |
| |
| .param().name("pathArrayParam").type(RestParamType.path).dataType("array").arrayType("string") |
| .allowableValues("a", "b", "c").endParam() |
| |
| .param().name("queryArrayParam").type(RestParamType.query).dataType("array").arrayType("int") |
| .allowableValues("1", "2", "3").endParam() |
| |
| .param().name("headerArrayParam").type(RestParamType.header).dataType("array").arrayType("float") |
| .allowableValues("1.1", "2.2", "3.3").endParam(); |
| |
| final Swagger swagger = reader.read(Collections.singletonList(restDefinition), null, new BeanConfig(), |
| "camel-1", new DefaultClassResolver()); |
| |
| assertThat(swagger).isNotNull(); |
| final Map<String, Path> paths = swagger.getPaths(); |
| assertThat(paths).containsKey("/operation"); |
| final Operation getOperation = paths.get("/operation").getGet(); |
| assertThat(getOperation).isNotNull(); |
| final List<Parameter> parameters = getOperation.getParameters(); |
| assertThat(parameters).hasSize(6); |
| |
| ParameterAssert.assertThat(parameters.get(0)).hasName("pathParam").isGivenIn("path").isOfType("string") |
| .hasEnumSpecifiedWith("a", "b", "c"); |
| |
| ParameterAssert.assertThat(parameters.get(1)).hasName("queryParam").isGivenIn("query").isOfType("string") |
| .hasEnumSpecifiedWith("1", "2", "3"); |
| |
| ParameterAssert.assertThat(parameters.get(2)).hasName("headerParam").isGivenIn("header").isOfType("string") |
| .hasEnumSpecifiedWith("1.1", "2.2", "3.3"); |
| |
| ParameterAssert.assertThat(parameters.get(3)).hasName("pathArrayParam").isGivenIn("path").isOfType("array") |
| .isOfArrayType("string").hasArrayEnumSpecifiedWith("a", "b", "c"); |
| |
| ParameterAssert.assertThat(parameters.get(4)).hasName("queryParam").isGivenIn("query").isOfType("array") |
| .isOfArrayType("int").hasArrayEnumSpecifiedWith(1, 2, 3); |
| |
| ParameterAssert.assertThat(parameters.get(5)).hasName("headerParam").isGivenIn("header").isOfType("array") |
| .isOfArrayType("float").hasArrayEnumSpecifiedWith(1.1f, 2.2f, 3.3f); |
| } |
| |
| } |