2 * Copyright (c) 2020 Lumina Networks, Inc. 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.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertThrows;
13 import static org.junit.Assert.assertTrue;
14 import static org.mockito.Mockito.mock;
16 import javax.servlet.Filter;
17 import org.junit.Test;
19 public class FilterDetailsTest {
21 public void testDefaultValue() {
22 var filterDetails = FilterDetails.builder()
23 .filter(mock(Filter.class))
24 .addUrlPattern("/test")
25 .addUrlPattern("/another")
27 .putInitParam("key", "value")
30 assertFalse(filterDetails.asyncSupported());
34 public void testAsyncFalse() {
35 var filterDetails = FilterDetails.builder()
36 .filter(mock(Filter.class))
37 .addUrlPattern("/test")
38 .addUrlPattern("/another")
40 .putInitParam("key", "value")
41 .asyncSupported(false)
44 assertFalse(filterDetails.asyncSupported());
48 public void testAsyncTrue() {
49 var filterDetails = FilterDetails.builder()
50 .filter(mock(Filter.class))
51 .addUrlPattern("/test")
52 .addUrlPattern("/another")
54 .putInitParam("key", "value")
58 assertTrue(filterDetails.asyncSupported());
62 public void testEmptyBuilderException() {
63 final var builder = FilterDetails.builder();
64 final var ex = assertThrows(IllegalStateException.class, builder::build);
65 assertEquals("No filter specified", ex.getMessage());
69 public void testBadFilterWithoutAnyURL() {
70 final var builder = FilterDetails.builder().filter(mock(Filter.class));
71 final var ex = assertThrows(IllegalStateException.class, builder::build);
72 assertEquals("No urlPattern specified", ex.getMessage());
76 public void testNotPrefixNorSuffixPatternException() {
77 final var builder = FilterDetails.builder();
78 final var ex = assertThrows(IllegalArgumentException.class, () -> builder.addUrlPattern("test"));
79 assertEquals("Spec 'test' is neither prefix-based nor suffix-based", ex.getMessage());
83 public void testIllegalPrefixPatternException() {
84 final var builder = FilterDetails.builder();
85 final var ex = assertThrows(IllegalArgumentException.class, () -> builder.addUrlPattern("/*test"));
86 assertEquals("Prefix-based spec '/*test' with a '*' at offset 1", ex.getMessage());
90 public void testIllegalSuffixPatternException() {
91 final var builder = FilterDetails.builder();
92 final var ex = assertThrows(IllegalArgumentException.class, () -> builder.addUrlPattern("*./test"));
93 assertEquals("Spec '*./test' is neither prefix-based nor suffix-based", ex.getMessage());