1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.configuration2.web;
19
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21 import static org.mockito.Mockito.mock;
22 import static org.mockito.Mockito.when;
23
24 import java.util.Properties;
25
26 import javax.servlet.Servlet;
27 import javax.servlet.ServletConfig;
28 import javax.servlet.ServletContext;
29 import javax.servlet.http.HttpServlet;
30
31 import org.apache.commons.configuration2.AbstractConfiguration;
32 import org.apache.commons.configuration2.TestAbstractConfiguration;
33 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
34 import org.junit.jupiter.api.Test;
35 import org.mockito.ArgumentMatchers;
36
37
38
39
40 public class TestServletContextConfiguration extends TestAbstractConfiguration {
41
42
43
44
45
46
47
48 private ServletContext mockServletConfig(final Properties parameters) {
49 final ServletContext context = mock(ServletContext.class);
50 when(context.getInitParameterNames()).thenAnswer(invocation -> parameters.keys());
51 when(context.getInitParameter(ArgumentMatchers.any())).thenAnswer(invocation -> {
52 final String name = invocation.getArgument(0, String.class);
53 return parameters.getProperty(name);
54 });
55 return context;
56 }
57
58 @Override
59 protected AbstractConfiguration getConfiguration() {
60 final Properties parameters = new Properties();
61 parameters.setProperty("key1", "value1");
62 parameters.setProperty("key2", "value2");
63 parameters.setProperty("list", "value1, value2");
64 parameters.setProperty("listesc", "value1\\,value2");
65
66
67 final ServletContext context = mockServletConfig(parameters);
68
69
70 final ServletConfig config = mock(ServletConfig.class);
71 when(config.getServletContext()).thenReturn(context);
72
73
74 final Servlet servlet = new HttpServlet() {
75
76
77
78 private static final long serialVersionUID = 1L;
79
80 @Override
81 public ServletConfig getServletConfig() {
82 return config;
83 }
84 };
85
86 final ServletContextConfiguration resultConfig = new ServletContextConfiguration(servlet);
87 resultConfig.setListDelimiterHandler(new DefaultListDelimiterHandler(','));
88 return resultConfig;
89 }
90
91 @Override
92 protected AbstractConfiguration getEmptyConfiguration() {
93
94 final ServletContext context = mockServletConfig(new Properties());
95
96 return new ServletContextConfiguration(context);
97 }
98
99 @Override
100 @Test
101 public void testAddPropertyDirect() {
102 assertThrows(UnsupportedOperationException.class, super::testAddPropertyDirect);
103 }
104
105 @Override
106 @Test
107 public void testClearProperty() {
108 assertThrows(UnsupportedOperationException.class, super::testClearProperty);
109 }
110 }