blob: bfba159b35c0bb91e69b3ee153000a8ec5538db0 [file] [log] [blame]
/*
* 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);
}
}