package io.swagger.models;
import io.swagger.models.auth.BasicAuthDefinition;
import io.swagger.models.auth.SecuritySchemeDefinition;
import io.swagger.models.parameters.Parameter;
import org.mockito.Mockito;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
public class SwaggerTest {
private Swagger swagger;
private SecurityRequirement requirement;
@BeforeMethod
public void setup() {
swagger = new Swagger();
requirement = new SecurityRequirement();
}
@Test
public void testAddScheme() {
// when
swagger.addScheme(Scheme.HTTP);
// then
assertTrue(swagger.getSchemes().contains(Scheme.HTTP),
"The newly added scheme must be contained in the schemes list");
}
@Test
public void testScheme() {
// when
swagger.scheme(Scheme.HTTPS);
// then
assertTrue(swagger.getSchemes().contains(Scheme.HTTPS),
"The newly added scheme must be contained in the schemes list");
}
@Test
public void testConsumes() {
// when
swagger.consumes("consumes");
// then
assertTrue(swagger.getConsumes().contains("consumes"),
"The newly added consumes must be contained in the consumes list");
}
@Test
public void testProduces() {
// when
swagger.produces("produces");
// then
assertTrue(swagger.getProduces().contains("produces"),
"The newly added produces must be contained in the produces list");
}
@Test
public void testSecurity() {
// when
swagger.security(requirement);
// then
assertTrue(swagger.getSecurity().contains(requirement),
"The newly added requiement must be contained in the requiements list");
}
@Test
public void testSetSecurityRequirement() {
// when
swagger.setSecurityRequirement(new ArrayList<SecurityRequirement>(Arrays.asList(requirement)));
// then
assertTrue(swagger.getSecurity().contains(requirement),
"The newly added requiement must be contained in the requiement list");
}
@Test
public void testAddSecurityDefinition() {
// when
swagger.addSecurityDefinition(requirement);
// then
assertTrue(swagger.getSecurity().contains(requirement),
"The newly added requiement must be contained in the requiement list");
}
@Test
public void testParameter() {
// given
Parameter parameter = Mockito.mock(Parameter.class);
// when
swagger.setParameters(null);
String key = "key";
// then
assertNull(swagger.getParameter(key), "Cannot retrieve a key without adding it first");
// when
swagger.parameter(key, parameter);
// then
assertEquals(swagger.getParameters().get(key), parameter, "Must be able to retrieve the added key");
assertEquals(swagger.getParameter(key), parameter, "Must be able to retrieave the added key");
}
@Test
public void testResponse() {
// given
Response response = Mockito.mock(Response.class);
// when
swagger.response("44", response);
// then
assertEquals(swagger.getResponses().get("44"), response, "Must be able to retrieve the added response");
}
@Test
public void testVendorExtension() {
// given
String vendorName = "x-vendor";
String value = "value";
// when
swagger.vendorExtension(vendorName, value);
swagger.vendorExtensions(new HashMap<String, Object>());
// then
assertEquals(swagger.getVendorExtensions().get(vendorName), value,
"Must be able to retrieve the same value from the map");
// when
swagger.setVendorExtension(vendorName, value);
// then
assertEquals(swagger.getVendorExtensions().get(vendorName), value,
"Must be able to retrieve the same value from the map");
// when
swagger.vendorExtensions(null);
// then
assertEquals(swagger.getVendorExtensions().get(vendorName), value,
"Must be able to retrieve the same value from the map");
// given
swagger = new Swagger();
// when
swagger.vendorExtensions(new HashMap<String, Object>());
// then
assertNull(swagger.getVendorExtensions().get(vendorName), "Can not retrieve the key from an empty map");
}
@Test
public void testTag() {
// given
Tag tag = new Tag();
tag.setName("name");
// when
swagger.tag(tag);
// then
assertTrue(swagger.getTags().contains(tag), "The newly added tag must be contained in the tags list");
// when
swagger.tag(tag);
// then
assertTrue(swagger.getTags().contains(tag), "The newly added tag must be contained in the tags list");
// when
swagger.tags(Arrays.asList(tag));
// then
assertTrue(swagger.getTags().contains(tag), "The newly added tag must be contained in the tags list");
}
@Test
public void testSetExternalDocs() {
// given
ExternalDocs externalDocs = new ExternalDocs();
// when
swagger.setExternalDocs(externalDocs);
// then
assertEquals(swagger.getExternalDocs(), externalDocs, "The get externalDocs must be the same as the set one");
}
@Test
public void testPath() {
// when
String key = "key";
swagger.setPaths(null);
// then
assertNull(swagger.getPaths(), "If paths is set to null, then it must resolve to null");
assertNull(swagger.getPath(key), "If paths is set to null, then you cannot retrieve any key from it");
// given
Path path = new Path();
// when
swagger.path(key, path);
// then
assertEquals(swagger.getPaths().get(key), path, "Must be able to retrieve the path");
assertEquals(swagger.getPath(key), path, "Must be able to retrieve the path");
}
@Test
public void testSecurityDefinition() {
// given
SecuritySchemeDefinition securityDefinition = new BasicAuthDefinition();
String name = "name";
// when
swagger.securityDefinition(name, securityDefinition);
// then
assertEquals(swagger.getSecurityDefinitions().get(name), securityDefinition,
"Must be able to retrieve the added security definition");
}
@Test
public void testModel() {
// given
Model model = new ComposedModel();
String name = "name";
// when
swagger.model(name, model);
// then
assertEquals(swagger.getDefinitions().get(name), model, "Must be able to retrieve the added model");
}
}