package io.swagger.servlet.extensions; import io.swagger.models.Operation; import io.swagger.models.parameters.BodyParameter; import io.swagger.models.parameters.Parameter; import io.swagger.models.parameters.PathParameter; import io.swagger.servlet.ReaderContext; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.util.List; public class ImplicitParametersTest extends BaseServletReaderExtensionTest { @DataProvider private Object[][] resourceWithAnnotations() { return new Object[][]{ {"testMethod1", 0}, {"testMethod2", 0}, {"testMethod3", 6}, {"testMethod4", 0} }; } @Test(dataProvider = "resourceWithAnnotations") public void applyImplicitParametersTest(String methodName, int expected) throws NoSuchMethodException { final Operation operation = new Operation(); final ReaderContext context = createDefaultContext(); extension.applyImplicitParameters(context, operation, findMethod(context, methodName)); Assert.assertEquals(operation.getParameters().size(), expected); } @Test public void detailedTest() throws NoSuchMethodException { final Operation operation = new Operation(); final ReaderContext context = createDefaultContext(); extension.applyImplicitParameters(context, operation, findMethod(context, "testMethod3")); final List<Parameter> parameters = operation.getParameters(); final Parameter parameter1 = parameters.get(0); Assert.assertNotNull(parameter1); Assert.assertTrue(parameter1 instanceof PathParameter); Assert.assertEquals(parameter1.getName(), "param1"); Assert.assertEquals(parameter1.getIn(), "path"); Assert.assertEquals(parameter1.getDescription(), "Param 1"); Assert.assertTrue(parameter1.getRequired()); final Parameter parameter5 = parameters.get(4); Assert.assertNotNull(parameter5); Assert.assertTrue(parameter5 instanceof BodyParameter); Assert.assertEquals(parameter5.getName(), "param5"); Assert.assertEquals(parameter5.getIn(), "body"); Assert.assertEquals(parameter5.getDescription(), "Param 5"); Assert.assertFalse(parameter5.getRequired()); } }