@Test
public void testApiDoc() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(TestController.class);
ApiDoc apiDoc = JSONDocUtils.getApiDocs(classes).iterator().next();
Assert.assertEquals("test-controller", apiDoc.getName());
Assert.assertEquals("a-test-controller", apiDoc.getDescription());
Assert.assertEquals("1.0", apiDoc.getSupportedversions().getSince());
Assert.assertEquals("2.12", apiDoc.getSupportedversions().getUntil());
Assert.assertEquals(ApiAuthType.NONE.name(), apiDoc.getAuth().getType());
Assert.assertEquals(JSONDocUtils.ANONYMOUS, apiDoc.getAuth().getRoles().get(0));
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().equals("/name")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("string", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("string", apiMethodDoc.getBodyobject().getObject());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("name")) {
Assert.assertEquals("string", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/age")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("integer", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("integer", apiMethodDoc.getBodyobject().getObject());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("age")) {
Assert.assertEquals("integer", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/avg")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("long", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("long", apiMethodDoc.getBodyobject().getObject());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("avg")) {
Assert.assertEquals("long", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/map")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("map", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("string", apiMethodDoc.getResponse().getMapKeyObject());
Assert.assertEquals("integer", apiMethodDoc.getResponse().getMapValueObject());
Assert.assertEquals("map", apiMethodDoc.getBodyobject().getObject());
Assert.assertEquals("string", apiMethodDoc.getBodyobject().getMapKeyObject());
Assert.assertEquals("integer", apiMethodDoc.getBodyobject().getMapValueObject());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("map")) {
Assert.assertEquals("map", apiParamDoc.getType());
//TODO there is no check on the map key and value objects
}
}
}
if (apiMethodDoc.getPath().equals("/parametrizedList")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("string", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("true", apiMethodDoc.getResponse().getMultiple());
Assert.assertEquals("string", apiMethodDoc.getBodyobject().getObject());
Assert.assertEquals("true", apiMethodDoc.getBodyobject().getMultiple());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("parametrizedList")) {
Assert.assertEquals("string", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/unparametrizedList")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("undefined", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("true", apiMethodDoc.getResponse().getMultiple());
Assert.assertEquals("undefined", apiMethodDoc.getBodyobject().getObject());
Assert.assertEquals("true", apiMethodDoc.getBodyobject().getMultiple());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("unparametrizedList")) {
Assert.assertEquals("undefined", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/wildcardParametrizedList")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("wildcard", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("true", apiMethodDoc.getResponse().getMultiple());
Assert.assertEquals("wildcard", apiMethodDoc.getBodyobject().getObject());
Assert.assertEquals("true", apiMethodDoc.getBodyobject().getMultiple());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("wildcardParametrizedList")) {
Assert.assertEquals("wildcard", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/LongArray")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("long", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("true", apiMethodDoc.getResponse().getMultiple());
Assert.assertEquals("long", apiMethodDoc.getBodyobject().getObject());
Assert.assertEquals("true", apiMethodDoc.getBodyobject().getMultiple());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("LongArray")) {
Assert.assertEquals("long", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/longArray")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("long", apiMethodDoc.getResponse().getObject());
Assert.assertEquals("true", apiMethodDoc.getResponse().getMultiple());
Assert.assertEquals("long", apiMethodDoc.getBodyobject().getObject());
Assert.assertEquals("true", apiMethodDoc.getBodyobject().getMultiple());
for (ApiParamDoc apiParamDoc : apiMethodDoc.getPathparameters()) {
if(apiParamDoc.getName().equals("longArray")) {
Assert.assertEquals("long", apiParamDoc.getType());
}
}
}
if (apiMethodDoc.getPath().equals("/version")) {
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb());
Assert.assertEquals("1.0", apiMethodDoc.getSupportedversions().getSince());
Assert.assertEquals("2.12", apiMethodDoc.getSupportedversions().getUntil());
}
}
classes.clear();
classes.add(TestControllerWithBasicAuth.class);
apiDoc = JSONDocUtils.getApiDocs(classes).iterator().next();
Assert.assertEquals("test-controller-with-basic-auth", apiDoc.getName());
Assert.assertEquals(ApiAuthType.BASIC_AUTH.name(), apiDoc.getAuth().getType());
Assert.assertEquals("ROLE_USER", apiDoc.getAuth().getRoles().get(0));
Assert.assertEquals("ROLE_ADMIN", apiDoc.getAuth().getRoles().get(1));
Assert.assertTrue(apiDoc.getAuth().getTestusers().size() > 0);
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().equals("/basicAuth")) {
Assert.assertEquals(ApiAuthType.BASIC_AUTH.name(), apiMethodDoc.getAuth().getType());
Assert.assertEquals("ROLE_USER", apiMethodDoc.getAuth().getRoles().get(0));
Assert.assertTrue(apiMethodDoc.getAuth().getTestusers().size() > 0);
}
if (apiMethodDoc.getPath().equals("/noAuth")) {
Assert.assertEquals(ApiAuthType.NONE.name(), apiMethodDoc.getAuth().getType());
Assert.assertEquals(JSONDocUtils.ANONYMOUS, apiMethodDoc.getAuth().getRoles().get(0));
}
if (apiMethodDoc.getPath().equals("/undefinedAuthWithAuthOnClass")) {
Assert.assertEquals(ApiAuthType.BASIC_AUTH.name(), apiMethodDoc.getAuth().getType());
Assert.assertEquals("ROLE_USER", apiMethodDoc.getAuth().getRoles().get(0));
Assert.assertEquals("ROLE_ADMIN", apiMethodDoc.getAuth().getRoles().get(1));
}
}
classes.clear();
classes.add(TestControllerWithNoAuthAnnotation.class);
apiDoc = JSONDocUtils.getApiDocs(classes).iterator().next();
Assert.assertEquals("test-controller-with-no-auth-annotation", apiDoc.getName());
Assert.assertNull(apiDoc.getAuth());
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().equals("/basicAuth")) {
Assert.assertEquals(ApiAuthType.BASIC_AUTH.name(), apiMethodDoc.getAuth().getType());
Assert.assertEquals("ROLE_USER", apiMethodDoc.getAuth().getRoles().get(0));
Assert.assertTrue(apiMethodDoc.getAuth().getTestusers().size() > 0);
}