This is an automated email from the ASF dual-hosted git repository. chanjarster pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git
commit 3743b86912efb615a7783c9ac94aac2d3d139953 Author: kakulisen <[email protected]> AuthorDate: Tue Nov 12 15:51:14 2019 +0800 add unit test Signed-off-by: kakulisen <[email protected]> --- .../generator/util/LocalVariableVisitor.java | 3 -- .../toolkit/generator/AnnotationProcessorTest.java | 51 +++++++++++++++++++--- .../servicecomb/toolkit/generator/ContextTest.java | 32 +++++++++++++- .../generator/parser/ServicecombPojoParser.java | 2 +- .../toolkit/generator/ServiceCombParserTest.java | 8 ++++ .../parser/SpringmvcAnnotationParser.java | 13 +----- .../toolkit/generator/SpringParserTest.java | 1 + 7 files changed, 88 insertions(+), 22 deletions(-) diff --git a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/util/LocalVariableVisitor.java b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/util/LocalVariableVisitor.java index b7f19c1..4141d77 100644 --- a/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/util/LocalVariableVisitor.java +++ b/oas-generator/oas-generator-core/src/main/java/org/apache/servicecomb/toolkit/generator/util/LocalVariableVisitor.java @@ -23,8 +23,6 @@ import org.objectweb.asm.Type; public class LocalVariableVisitor extends MethodVisitor { - private boolean isStatic; - private String[] parameterNames; private final int[] lvtSlotIndex; @@ -33,7 +31,6 @@ public class LocalVariableVisitor extends MethodVisitor { public LocalVariableVisitor(int api, String desc, boolean isStatic, String[] parameterNames) { super(api); - this.isStatic = isStatic; this.parameterNames = parameterNames; this.args = Type.getArgumentTypes(desc); this.lvtSlotIndex = computeLvtSlotIndices(isStatic, this.args); diff --git a/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/AnnotationProcessorTest.java b/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/AnnotationProcessorTest.java index a46854d..1f51291 100644 --- a/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/AnnotationProcessorTest.java +++ b/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/AnnotationProcessorTest.java @@ -21,8 +21,10 @@ import java.lang.reflect.Method; import org.apache.servicecomb.toolkit.generator.annotation.ApiResponseMethodAnnotationProcessor; import org.apache.servicecomb.toolkit.generator.annotation.ApiResponsesMethodAnnotationProcessor; +import org.apache.servicecomb.toolkit.generator.annotation.OpenApiDefinitionClassAnnotationProcessor; import org.apache.servicecomb.toolkit.generator.annotation.OperationMethodAnnotationProcessor; import org.apache.servicecomb.toolkit.generator.annotation.ParameterAnnotationProcessor; +import org.apache.servicecomb.toolkit.generator.annotation.RequestBodyParamAnnotationProcessor; import org.apache.servicecomb.toolkit.generator.context.OasContext; import org.apache.servicecomb.toolkit.generator.context.OperationContext; import org.apache.servicecomb.toolkit.generator.context.ParameterContext; @@ -112,11 +114,9 @@ public class AnnotationProcessorTest { @Test public void processOperationAnnotation() throws NoSuchMethodException { - OasContext oasContext = new OasContext(null); - OperationContext context = new OperationContext(null, oasContext); + OasContext oasContext = null; + OperationMethodAnnotationProcessor operationMethodAnnotationProcessor = new OperationMethodAnnotationProcessor(); -// Operation operation = Mockito.mock(Operation.class); -// operationMethodAnnotationProcessor.process(operation, context); Method helloMethod = OpenapiDef.class.getDeclaredMethod("hello", String.class, Object.class); Operation operation = helloMethod.getAnnotation(Operation.class); @@ -131,10 +131,51 @@ public class AnnotationProcessorTest { return true; } }); - context = new OperationContext(helloMethod, oasContext); + OperationContext context = new OperationContext(helloMethod, oasContext); operationMethodAnnotationProcessor.process(operation, context); + Assert.assertEquals("hello-operation", context.getOperationId()); + } + + @Test + public void processOpenApiDefinitionClassAnnotation() throws NoSuchMethodException { + + OasContext oasContext = null; + + OpenApiDefinitionClassAnnotationProcessor openApiDefinitionClassAnnotationProcessor = new OpenApiDefinitionClassAnnotationProcessor(); + + OpenAPIDefinition openAPIDefinition = OpenapiDef.class.getAnnotation(OpenAPIDefinition.class); + oasContext = new OasContext(new AbstractAnnotationParser() { + @Override + public int getOrder() { + return 0; + } + + @Override + public boolean canProcess(Class<?> cls) { + return true; + } + }); + openApiDefinitionClassAnnotationProcessor.process(openAPIDefinition, oasContext); +// Assert.assertEquals("hello-operation", context.getOperationId()); } + @Test + public void processRequestBodyAnnotation() throws NoSuchMethodException { + + OasContext oasContext = new OasContext(null); + RequestBodyParamAnnotationProcessor operationMethodAnnotationProcessor = new RequestBodyParamAnnotationProcessor(); + + RequestBody requestBody = Mockito.mock(RequestBody.class); + Mockito.when(requestBody.content()).thenReturn(new Content[] {Mockito.mock(Content.class)}); + Mockito.when(requestBody.ref()).thenReturn("#components/string"); + + Method helloMethod = OpenapiDef.class.getDeclaredMethod("hello", String.class, Object.class); + OperationContext operationContext = new OperationContext(helloMethod, oasContext); + ParameterContext parameterContext = new ParameterContext(operationContext, null); + operationMethodAnnotationProcessor.process(requestBody, parameterContext); + + Assert.assertTrue(parameterContext.isRequestBody()); + } @Test public void processParameterAnnotation() throws NoSuchMethodException, IllegalAccessException, diff --git a/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/ContextTest.java b/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/ContextTest.java index efce736..d4e726b 100644 --- a/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/ContextTest.java +++ b/oas-generator/oas-generator-core/src/test/java/org/apache/servicecomb/toolkit/generator/ContextTest.java @@ -34,7 +34,10 @@ import org.apache.servicecomb.toolkit.generator.context.ParameterContext; import org.apache.servicecomb.toolkit.generator.context.ParameterContext.InType; import org.junit.Test; +import io.swagger.v3.oas.annotations.enums.ParameterStyle; import io.swagger.v3.oas.models.PathItem.HttpMethod; +import io.swagger.v3.oas.models.parameters.RequestBody; +import io.swagger.v3.oas.models.responses.ApiResponses; public class ContextTest { @@ -53,6 +56,8 @@ public class ContextTest { context.setDefaultValue("default"); context.setIn(InType.QUERY); context.setName("param1"); + context.setDescription("desc"); + context.setStyle(ParameterStyle.SIMPLE); context.addExtension("extension-key", "extension-value"); assertFalse(context.isRequestBody()); @@ -72,7 +77,10 @@ public class ContextTest { assertEquals(parameter, context.getParameter()); assertNotNull(context.getSchema()); assertEquals("default", context.getDefaultValue()); + assertEquals("desc", context.getDescription()); + assertEquals(ParameterStyle.SIMPLE, context.getStyle()); assertFalse(context.isRequired()); + assertNull(context.getDeprecated()); context.setIn(InType.COOKIE); assertFalse(context.isRequestBody()); @@ -93,6 +101,12 @@ public class ContextTest { context.setIn(InType.BODY); context.toParameter(); assertTrue(context.isRequestBody()); + + context.addConsume(MediaTypes.APPLICATION_JSON); + assertEquals(MediaTypes.APPLICATION_JSON, context.getConsumers().get(0)); + + context.setRequestBody(new RequestBody()); + assertNotNull(context.getRequestBody()); } @Test @@ -103,10 +117,26 @@ public class ContextTest { Parameter parameter = method.getParameters()[0]; ParameterContext context = new ParameterContext(operationContext, parameter); context.setIn(InType.FORM); - + oasContext.toOpenAPI(); operationContext.setHttpMethod(HttpMethod.GET.name()); + operationContext.setTags(null); + operationContext.setApiResponses(new ApiResponses()); + operationContext.setDescription("desc"); + operationContext.setConsumers(new String[] {MediaTypes.APPLICATION_JSON}); + operationContext.addExtension("x-extension", "value"); operationContext.toOperation(); + oasContext.toOpenAPI(); + oasContext.addExtension("x-extension", "value"); + assertEquals("value", oasContext.getExtensions().get("x-extension")); + assertEquals("value", operationContext.getExtensions().get("x-extension")); assertEquals(HttpMethod.GET.name(), operationContext.getHttpMethod()); + assertNotNull(operationContext.getOperation()); + assertNotNull(operationContext.getApiResponses()); + assertEquals(oasContext, operationContext.getOpenApiContext()); + assertNull(operationContext.getSummary()); + assertNull(operationContext.getTags()); + assertEquals(MediaTypes.APPLICATION_JSON, operationContext.getConsumers()[0]); + assertEquals("desc", operationContext.getDescription()); } } diff --git a/oas-generator/oas-generator-servicecomb/src/main/java/org/apache/servicecomb/toolkit/generator/parser/ServicecombPojoParser.java b/oas-generator/oas-generator-servicecomb/src/main/java/org/apache/servicecomb/toolkit/generator/parser/ServicecombPojoParser.java index bf26c42..ff467fb 100644 --- a/oas-generator/oas-generator-servicecomb/src/main/java/org/apache/servicecomb/toolkit/generator/parser/ServicecombPojoParser.java +++ b/oas-generator/oas-generator-servicecomb/src/main/java/org/apache/servicecomb/toolkit/generator/parser/ServicecombPojoParser.java @@ -29,7 +29,7 @@ public class ServicecombPojoParser extends AbstractAnnotationParser { @Override public int getOrder() { - return 0; + return 100; } @Override diff --git a/oas-generator/oas-generator-servicecomb/src/test/java/org/apache/servicecomb/toolkit/generator/ServiceCombParserTest.java b/oas-generator/oas-generator-servicecomb/src/test/java/org/apache/servicecomb/toolkit/generator/ServiceCombParserTest.java index d9cf795..8d5bb56 100644 --- a/oas-generator/oas-generator-servicecomb/src/test/java/org/apache/servicecomb/toolkit/generator/ServiceCombParserTest.java +++ b/oas-generator/oas-generator-servicecomb/src/test/java/org/apache/servicecomb/toolkit/generator/ServiceCombParserTest.java @@ -41,11 +41,19 @@ public class ServiceCombParserTest { boolean canProcess = servicecombJaxrsParser.canProcess(ServicecombJaxrs.class); Assert.assertTrue(canProcess); + canProcess = servicecombJaxrsParser.canProcess(ServicecombPojo.class); + Assert.assertFalse(canProcess); + canProcess = servicecombSpringmvcParser.canProcess(ServicecombSpringmvc.class); Assert.assertTrue(canProcess); + canProcess = servicecombSpringmvcParser.canProcess(ServicecombPojo.class); + Assert.assertFalse(canProcess); canProcess = servicecombPojoParser.canProcess(ServicecombPojo.class); Assert.assertTrue(canProcess); + canProcess = servicecombPojoParser.canProcess(ServicecombSpringmvc.class); + Assert.assertFalse(canProcess); + Assert.assertEquals(100, servicecombPojoParser.getOrder()); OasContext pojoOasContext = new OasContext(servicecombPojoParser); servicecombPojoParser.parser(ServicecombPojo.class, pojoOasContext); diff --git a/oas-generator/oas-generator-spring/src/main/java/org/apache/servicecomb/toolkit/generator/parser/SpringmvcAnnotationParser.java b/oas-generator/oas-generator-spring/src/main/java/org/apache/servicecomb/toolkit/generator/parser/SpringmvcAnnotationParser.java index d35621f..923ad4b 100644 --- a/oas-generator/oas-generator-spring/src/main/java/org/apache/servicecomb/toolkit/generator/parser/SpringmvcAnnotationParser.java +++ b/oas-generator/oas-generator-spring/src/main/java/org/apache/servicecomb/toolkit/generator/parser/SpringmvcAnnotationParser.java @@ -47,7 +47,7 @@ public class SpringmvcAnnotationParser extends AbstractAnnotationParser { @Override public int getOrder() { - return 0; + return 200; } @Override @@ -87,16 +87,5 @@ public class SpringmvcAnnotationParser extends AbstractAnnotationParser { parameterAnnotationMap.put(RequestParam.class, new RequestParamAnnotationProcessor()); parameterAnnotationMap.put(RequestHeader.class, new RequestHeaderAnnotationProcessor()); } - - public static void main(String[] args) { - List<Integer> integers = new ArrayList<>(); - integers.add(1); - integers.add(2); - integers.add(5); - integers.add(3); - integers.sort(Comparator.comparingInt(Integer::intValue)); - - integers.forEach(System.out::println); - } } diff --git a/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringParserTest.java b/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringParserTest.java index 3acce3d..8295038 100644 --- a/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringParserTest.java +++ b/oas-generator/oas-generator-spring/src/test/java/org/apache/servicecomb/toolkit/generator/SpringParserTest.java @@ -29,6 +29,7 @@ public class SpringParserTest { public void parse() { SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser(); + Assert.assertEquals(200, parser.getOrder()); boolean canProcess = parser.canProcess(String.class); Assert.assertFalse(canProcess);
