package org.jsondoc.springmvc.scanner; import java.util.Iterator; import org.jsondoc.core.pojo.ApiDoc; import org.jsondoc.core.pojo.ApiHeaderDoc; import org.jsondoc.core.pojo.ApiMethodDoc; import org.jsondoc.core.pojo.JSONDoc.MethodDisplay; import org.jsondoc.core.scanner.JSONDocScanner; import org.junit.Assert; import org.junit.Test; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import com.google.common.collect.Sets; public class SpringApiHeadersDocTest { private JSONDocScanner jsondocScanner = new Spring3JSONDocScanner(); @Controller @RequestMapping(headers = { "h1", "h2" }) public class SpringApiHeadersController { @RequestMapping(value = "/spring-api-headers-controller-method-one") public void apiHeadersMethodOne() { } @RequestMapping(value = "/spring-api-headers-controller-method-two", headers = { "h3" }) public void apiHeadersMethodTwo() { } @RequestMapping(value = "/spring-api-headers-controller-method-three", headers = { "h4" }) public void apiHeadersMethodThree(@RequestHeader(value = "h5") String h5) { } } @SuppressWarnings("unused") @Test public void testApiHeadersOnClass() { ApiDoc apiDoc = jsondocScanner.getApiDocs(Sets.<Class<?>> newHashSet(SpringApiHeadersController.class), MethodDisplay.URI).iterator().next(); Assert.assertEquals("SpringApiHeadersController", apiDoc.getName()); Assert.assertEquals(3, apiDoc.getMethods().size()); for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) { if (apiMethodDoc.getPath().contains("/spring-api-headers-controller-method-one")) { Assert.assertEquals(2, apiMethodDoc.getHeaders().size()); } if (apiMethodDoc.getPath().contains("/spring-api-headers-controller-method-two")) { Assert.assertEquals(3, apiMethodDoc.getHeaders().size()); } if (apiMethodDoc.getPath().contains("/spring-api-headers-controller-method-three")) { Assert.assertEquals(4, apiMethodDoc.getHeaders().size()); Iterator<ApiHeaderDoc> headers = apiMethodDoc.getHeaders().iterator(); ApiHeaderDoc h1 = headers.next(); ApiHeaderDoc h2 = headers.next(); ApiHeaderDoc h4 = headers.next(); Assert.assertEquals("h4", h4.getName()); ApiHeaderDoc h5 = headers.next(); Assert.assertEquals("h5", h5.getName()); } } } }