Document and validate web-api constructs
[aaa.git] / web / api / src / test / java / org / opendaylight / aaa / web / WebContextApiTest.java
index 12ae81413eb769a140e86ed32910dba04b7b56aa..f86217b58967088a2c88d92b1a6e39f2c621553d 100644 (file)
@@ -19,7 +19,6 @@ import java.util.Map;
 import javax.servlet.Filter;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContextListener;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -32,20 +31,20 @@ import org.junit.Test;
 public class WebContextApiTest {
     @Test
     public void testEmptyBuilder() {
-        final WebContextBuilder builder = WebContext.builder();
-        assertThrows(IllegalStateException.class, () -> builder.build());
+        final var builder = WebContext.builder();
+        assertThrows(IllegalStateException.class, builder::build);
     }
 
     @Test
     public void testMinimalBuilder() {
-        assertTrue(WebContext.builder().contextPath("test").build().supportsSessions());
-        assertEquals("test", WebContext.builder().contextPath("test").supportsSessions(false).build().contextPath());
+        assertTrue(WebContext.builder().contextPath("/test").build().supportsSessions());
+        assertEquals("/test", WebContext.builder().contextPath("/test").supportsSessions(false).build().contextPath());
     }
 
     @Test
     public void testAddSimpleServlet() {
-        WebContext webContext = WebContext.builder().contextPath("test")
-                .addServlet(ServletDetails.builder().servlet(mock(Servlet.class)).addUrlPattern("test").build())
+        WebContext webContext = WebContext.builder().contextPath("/test")
+                .addServlet(ServletDetails.builder().servlet(mock(Servlet.class)).addUrlPattern("/test").build())
                 .build();
         assertThat(webContext.servlets(), hasSize(1));
         ServletDetails firstServletDetail = webContext.servlets().get(0);
@@ -55,50 +54,42 @@ public class WebContextApiTest {
 
     @Test
     public void testAddFullServlet() {
-        WebContext.builder().contextPath("test").addServlet(ServletDetails.builder().servlet(mock(Servlet.class))
-                .addUrlPattern("test").addUrlPattern("another").name("custom").putInitParam("key", "value").build())
+        WebContext.builder().contextPath("/test").addServlet(ServletDetails.builder().servlet(mock(Servlet.class))
+                .addUrlPattern("/test").addUrlPattern("/another").name("custom").putInitParam("key", "value").build())
                 .build();
     }
 
     @Test
     public void testAddFilter() {
-        WebContext.builder().contextPath("test")
-            .addFilter(FilterDetails.builder().filter(mock(Filter.class)).addUrlPattern("test").build()).build();
+        WebContext.builder().contextPath("/test")
+            .addFilter(FilterDetails.builder().filter(mock(Filter.class)).addUrlPattern("/test").build()).build();
     }
 
     @Test
     public void testAddListener() {
-        assertThat(WebContext.builder().contextPath("test").addListener(mock(ServletContextListener.class)).build()
+        assertThat(WebContext.builder().contextPath("/test").addListener(mock(ServletContextListener.class)).build()
                 .listeners(), hasSize(1));
     }
 
     @Test
     public void testContextParam() {
         assertEquals(Map.of("key", "value"),
-            WebContext.builder().contextPath("test").putContextParam("key", "value").build().contextParams());
+            WebContext.builder().contextPath("/test").putContextParam("key", "value").build().contextParams());
     }
 
     @Test
-    @Ignore
     public void testBadContextPath() {
-        // FIXME: this is completely broken usage -- which call is expected to raise the exception?!
-        assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("test/sub").build());
-        assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("test space").build());
-        assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("/test").build());
-        assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("test/").build());
+        assertBadContextPath("Context path is empty", "");
+        assertBadContextPath("Context path 'test/sub' does not start with '/'", "test/sub");
+        assertBadContextPath("Context path 'test space' does not start with '/'", "test space");
+        assertBadContextPath("Context path 'test/' does not start with '/'", "test/");
+        assertBadContextPath("Context path '/test/' ends with '/'", "/test/");
     }
 
-    @Test
-    public void testBadServletWithoutAnyURL() {
-        final WebContextBuilder builder = WebContext.builder().contextPath("test")
-                .addServlet(ServletDetails.builder().servlet(mock(Servlet.class)).build());
-        assertThrows(IllegalArgumentException.class, () -> builder.build());
+    private static void assertBadContextPath(final String expectedMessage, final String contextPath) {
+        final var builder = WebContext.builder();
+        final var ex = assertThrows(IllegalArgumentException.class, () -> builder.contextPath(contextPath));
+        assertEquals(expectedMessage, ex.getMessage());
     }
 
-    @Test
-    public void testBadFilterWithoutAnyURL() {
-        final WebContextBuilder builder = WebContext.builder().contextPath("test")
-                .addFilter(FilterDetails.builder().filter(mock(Filter.class)).build());
-        assertThrows(IllegalArgumentException.class, () -> builder.build());
-    }
 }