Added unit test
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ab101cb4 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ab101cb4 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ab101cb4 Branch: refs/heads/master Commit: ab101cb4e282db776e4624f9b933b28a2637493a Parents: 7fbccbb Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Mar 14 20:17:03 2016 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Mar 14 20:17:03 2016 +0100 ---------------------------------------------------------------------- .../apache/camel/swagger/RestSwaggerReader.java | 20 ++++- .../RestSwaggerReaderApiDocsOverrideTest.java | 86 +++++++++++++++++++ .../swagger/RestSwaggerReaderApiDocsTest.java | 89 ++++++++++++++++++++ 3 files changed, 193 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/ab101cb4/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java ---------------------------------------------------------------------- diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java index 4131c8f..08c0a2d 100644 --- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java +++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java @@ -117,10 +117,19 @@ public class RestSwaggerReader { // gather all types in use Set<String> types = new LinkedHashSet<>(); for (VerbDefinition verb : verbs) { + // check if the Verb Definition must be excluded from documentation - if (verb.getApiDocs() != null && !verb.getApiDocs()) { + Boolean apiDocs; + if (verb.getApiDocs() != null) { + apiDocs = verb.getApiDocs(); + } else { + // fallback to option on rest + apiDocs = rest.getApiDocs(); + } + if (apiDocs != null && !apiDocs) { continue; } + String type = verb.getType(); if (ObjectHelper.isNotEmpty(type)) { if (type.endsWith("[]")) { @@ -166,7 +175,14 @@ public class RestSwaggerReader { for (VerbDefinition verb : verbs) { // check if the Verb Definition must be excluded from documentation - if (verb.getApiDocs() != null && !verb.getApiDocs()) { + Boolean apiDocs; + if (verb.getApiDocs() != null) { + apiDocs = verb.getApiDocs(); + } else { + // fallback to option on rest + apiDocs = rest.getApiDocs(); + } + if (apiDocs != null && !apiDocs) { continue; } // the method must be in lower case http://git-wip-us.apache.org/repos/asf/camel/blob/ab101cb4/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java ---------------------------------------------------------------------- diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java new file mode 100644 index 0000000..7db9792 --- /dev/null +++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsOverrideTest.java @@ -0,0 +1,86 @@ +/** + * 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 com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import io.swagger.jaxrs.config.BeanConfig; +import io.swagger.models.Swagger; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultClassResolver; +import org.apache.camel.impl.JndiRegistry; +import org.apache.camel.model.rest.RestParamType; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Test; + +public class RestSwaggerReaderApiDocsOverrideTest extends CamelTestSupport { + + @Override + protected JndiRegistry createRegistry() throws Exception { + JndiRegistry jndi = super.createRegistry(); + jndi.bind("dummy-rest", new DummyRestConsumerFactory()); + return jndi; + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + rest("/hello").apiDocs(false).consumes("application/json").produces("application/json") + .get("/hi/{name}").description("Saying hi") + .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam() + .to("log:hi") + .get("/bye/{name}").apiDocs(true).description("Saying bye") + .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam() + .responseMessage().code(200).message("A reply message").endResponseMessage() + .to("log:bye") + .post("/bye").description("To update the greeting message").consumes("application/xml").produces("application/xml") + .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam() + .to("log:bye"); + } + }; + } + + @Test + public void testReaderRead() throws Exception { + BeanConfig config = new BeanConfig(); + config.setHost("localhost:8080"); + config.setSchemes(new String[]{"http"}); + config.setBasePath("/api"); + RestSwaggerReader reader = new RestSwaggerReader(); + + Swagger swagger = reader.read(context.getRestDefinitions(), null, config, context.getName(), new DefaultClassResolver()); + assertNotNull(swagger); + + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.INDENT_OUTPUT); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + String json = mapper.writeValueAsString(swagger); + + log.info(json); + + assertFalse(json.contains("\"/hello/bye\"")); + assertFalse(json.contains("\"summary\" : \"To update the greeting message\"")); + assertTrue(json.contains("\"/hello/bye/{name}\"")); + assertFalse(json.contains("\"/hello/hi/{name}\"")); + + context.stop(); + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/ab101cb4/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java ---------------------------------------------------------------------- diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java new file mode 100644 index 0000000..14a7bf2 --- /dev/null +++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderApiDocsTest.java @@ -0,0 +1,89 @@ +/** + * 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 com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import io.swagger.jaxrs.config.BeanConfig; +import io.swagger.models.Swagger; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultClassResolver; +import org.apache.camel.impl.JndiRegistry; +import org.apache.camel.model.rest.RestParamType; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Test; + +public class RestSwaggerReaderApiDocsTest extends CamelTestSupport { + + @Override + protected JndiRegistry createRegistry() throws Exception { + JndiRegistry jndi = super.createRegistry(); + jndi.bind("dummy-rest", new DummyRestConsumerFactory()); + return jndi; + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + rest("/hello").consumes("application/json").produces("application/json") + .get("/hi/{name}").description("Saying hi") + .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam() + .to("log:hi") + .get("/bye/{name}").apiDocs(false).description("Saying bye") + .param().name("name").type(RestParamType.path).dataType("string").description("Who is it").endParam() + .responseMessage().code(200).message("A reply message").endResponseMessage() + .to("log:bye") + .post("/bye").apiDocs(false).description("To update the greeting message").consumes("application/xml").produces("application/xml") + .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").endParam() + .to("log:bye"); + } + }; + } + + @Test + public void testReaderRead() throws Exception { + BeanConfig config = new BeanConfig(); + config.setHost("localhost:8080"); + config.setSchemes(new String[]{"http"}); + config.setBasePath("/api"); + RestSwaggerReader reader = new RestSwaggerReader(); + + Swagger swagger = reader.read(context.getRestDefinitions(), null, config, context.getName(), new DefaultClassResolver()); + assertNotNull(swagger); + + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.INDENT_OUTPUT); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + String json = mapper.writeValueAsString(swagger); + + log.info(json); + + assertTrue(json.contains("\"host\" : \"localhost:8080\"")); + assertTrue(json.contains("\"basePath\" : \"/api\"")); + + assertFalse(json.contains("\"/hello/bye\"")); + assertFalse(json.contains("\"summary\" : \"To update the greeting message\"")); + assertFalse(json.contains("\"/hello/bye/{name}\"")); + assertTrue(json.contains("\"/hello/hi/{name}\"")); + + context.stop(); + } + +}