2 * Copyright (c) 2018 Red Hat, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.aaa.web;
10 import static org.hamcrest.CoreMatchers.startsWith;
11 import static org.hamcrest.MatcherAssert.assertThat;
12 import static org.hamcrest.Matchers.hasSize;
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertThrows;
15 import static org.junit.Assert.assertTrue;
16 import static org.mockito.Mockito.mock;
19 import javax.servlet.Filter;
20 import javax.servlet.Servlet;
21 import javax.servlet.ServletContextListener;
22 import org.junit.Ignore;
23 import org.junit.Test;
26 * Tests for Web Server {@link WebContext} API. These tests don't test an
27 * {@link WebServer} implementation; the purpose is just to compile time check
28 * against the API signatures, notably incl. their generated code.
30 * @author Michael Vorburger.ch
32 public class WebContextApiTest {
34 public void testEmptyBuilder() {
35 final WebContextBuilder builder = WebContext.builder();
36 assertThrows(IllegalStateException.class, () -> builder.build());
40 public void testMinimalBuilder() {
41 assertTrue(WebContext.builder().contextPath("test").build().supportsSessions());
42 assertEquals("test", WebContext.builder().contextPath("test").supportsSessions(false).build().contextPath());
46 public void testAddSimpleServlet() {
47 WebContext webContext = WebContext.builder().contextPath("test")
48 .addServlet(ServletDetails.builder().servlet(mock(Servlet.class)).addUrlPattern("test").build())
50 assertThat(webContext.servlets(), hasSize(1));
51 ServletDetails firstServletDetail = webContext.servlets().get(0);
52 assertThat(firstServletDetail.name(), startsWith("org.mockito.codegen.Servlet$MockitoMock$"));
53 assertEquals(Map.of(), firstServletDetail.initParams());
57 public void testAddFullServlet() {
58 WebContext.builder().contextPath("test").addServlet(ServletDetails.builder().servlet(mock(Servlet.class))
59 .addUrlPattern("test").addUrlPattern("another").name("custom").putInitParam("key", "value").build())
64 public void testAddFilter() {
65 WebContext.builder().contextPath("test")
66 .addFilter(FilterDetails.builder().filter(mock(Filter.class)).addUrlPattern("test").build()).build();
70 public void testAddListener() {
71 assertThat(WebContext.builder().contextPath("test").addListener(mock(ServletContextListener.class)).build()
72 .listeners(), hasSize(1));
76 public void testContextParam() {
77 assertEquals(Map.of("key", "value"),
78 WebContext.builder().contextPath("test").putContextParam("key", "value").build().contextParams());
83 public void testBadContextPath() {
84 // FIXME: this is completely broken usage -- which call is expected to raise the exception?!
85 assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("test/sub").build());
86 assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("test space").build());
87 assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("/test").build());
88 assertThrows(IllegalArgumentException.class, () -> WebContext.builder().contextPath("test/").build());
92 public void testBadServletWithoutAnyURL() {
93 final WebContextBuilder builder = WebContext.builder().contextPath("test")
94 .addServlet(ServletDetails.builder().servlet(mock(Servlet.class)).build());
95 assertThrows(IllegalArgumentException.class, () -> builder.build());
99 public void testBadFilterWithoutAnyURL() {
100 final WebContextBuilder builder = WebContext.builder().contextPath("test")
101 .addFilter(FilterDetails.builder().filter(mock(Filter.class)).build());
102 assertThrows(IllegalArgumentException.class, () -> builder.build());