package io.swagger.servlet.extensions;
import io.swagger.models.Operation;
import io.swagger.models.Response;
import io.swagger.servlet.ReaderContext;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
public class ResponsesTest extends BaseServletReaderExtensionTest {
private static final Map<String, String> responses = new HashMap<String, String>();
@DataProvider
private Object[][] resourceWithAnnotations() {
return new Object[][]{
{"testMethod1", new Response().description("successful operation")},
{"testMethod2", null},
{"testMethod3", new Response().description("successful operation")},
{"testMethod4", null}
};
}
@Test(dataProvider = "resourceWithAnnotations")
public void applyResponsesTest(String methodName, Response expected) throws NoSuchMethodException {
final Operation operation = new Operation();
final ReaderContext context = createDefaultContext();
extension.applyResponses(context, operation, findMethod(context, methodName));
if (expected == null) {
Assert.assertNull(operation.getResponses());
} else {
final Response response = operation.getResponses().get("200");
Assert.assertEquals(response.getDescription(), expected.getDescription());
}
}
@Test
public void detailedResponsesTest() throws NoSuchMethodException {
final Operation operation = new Operation();
final ReaderContext context = createDefaultContext();
extension.applyResponses(context, operation, findMethod(context, "testMethod3"));
final Map<String, Response> responses = operation.getResponses();
Assert.assertEquals(responses.size(), 7);
for (Map.Entry<String, String> entry : ResponsesTest.responses.entrySet()) {
Assert.assertEquals(responses.get(entry.getKey()).getDescription(), entry.getValue());
}
}
static {
responses.put("default", "response_annotation1");
responses.put("200", "successful operation");
responses.put("400", "response_annotation2");
responses.put("401", "response_annotation3");
responses.put("402", "response_annotation4");
responses.put("403", "response_annotation5");
responses.put("404", "response_annotation6");
}
}