1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.builder.combined;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21
22 import java.util.ArrayList;
23 import java.util.Collections;
24
25 import org.apache.commons.configuration2.PropertiesConfiguration;
26 import org.apache.commons.configuration2.XMLPropertiesConfiguration;
27 import org.apache.commons.configuration2.builder.BasicConfigurationBuilder;
28 import org.apache.commons.configuration2.builder.BuilderParameters;
29 import org.apache.commons.configuration2.builder.FileBasedBuilderParametersImpl;
30 import org.apache.commons.configuration2.builder.ReloadingFileBasedConfigurationBuilder;
31 import org.apache.commons.configuration2.ex.ConfigurationException;
32 import org.apache.commons.lang3.StringUtils;
33 import org.junit.jupiter.api.Test;
34 import org.mockito.Mockito;
35
36
37
38
39 public class TestFileExtensionConfigurationBuilderProvider {
40
41
42 private static final String DEF_CLASS = PropertiesConfiguration.class.getName();
43
44
45 private static final String MATCH_CLASS = XMLPropertiesConfiguration.class.getName();
46
47
48 private static final String EXT = "xml";
49
50
51
52
53
54
55 private static FileExtensionConfigurationBuilderProvider setUpProvider() {
56 return new FileExtensionConfigurationBuilderProvider(BasicConfigurationBuilder.class.getName(), null, MATCH_CLASS, DEF_CLASS, EXT, null);
57 }
58
59
60
61
62
63
64 private ConfigurationDeclaration setUpDecl() {
65 return Mockito.mock(ConfigurationDeclaration.class);
66 }
67
68
69
70
71 @Test
72 void testDetermineConfigurationClassExtensionMatch() throws ConfigurationException {
73 final ConfigurationDeclaration decl = setUpDecl();
74 final BuilderParameters params = new FileBasedBuilderParametersImpl().setPath("C:\\Test\\someTestConfiguration." + EXT);
75 final FileExtensionConfigurationBuilderProvider provider = setUpProvider();
76 assertEquals(MATCH_CLASS, provider.determineConfigurationClass(decl, Collections.singleton(params)));
77 }
78
79
80
81
82 @Test
83 void testDetermineConfigurationClassExtensionNoMatch() throws ConfigurationException {
84 final ConfigurationDeclaration decl = setUpDecl();
85 final BuilderParameters params = new FileBasedBuilderParametersImpl().setPath("C:\\Test\\someTestConfiguration.properties");
86 final FileExtensionConfigurationBuilderProvider provider = setUpProvider();
87 assertEquals(DEF_CLASS, provider.determineConfigurationClass(decl, Collections.singleton(params)));
88 }
89
90
91
92
93 @Test
94 void testDetermineConfigurationClassMatchCase() throws ConfigurationException {
95 final ConfigurationDeclaration decl = setUpDecl();
96 final BuilderParameters params = new FileBasedBuilderParametersImpl().setPath("C:\\Test\\someTestConfiguration." + StringUtils.toRootUpperCase(EXT));
97 final FileExtensionConfigurationBuilderProvider provider = setUpProvider();
98 assertEquals(MATCH_CLASS, provider.determineConfigurationClass(decl, Collections.singleton(params)));
99 }
100
101
102
103
104 @Test
105 void testDetermineConfigurationClassNoExtension() throws ConfigurationException {
106 final ConfigurationDeclaration decl = setUpDecl();
107 final BuilderParameters params = new FileBasedBuilderParametersImpl().setPath("C:\\Test\\someTestConfiguration");
108 final FileExtensionConfigurationBuilderProvider provider = setUpProvider();
109 assertEquals(DEF_CLASS, provider.determineConfigurationClass(decl, Collections.singleton(params)));
110 }
111
112
113
114
115 @Test
116 void testDetermineConfigurationClassNoParams() throws ConfigurationException {
117 final ConfigurationDeclaration decl = setUpDecl();
118 final FileExtensionConfigurationBuilderProvider provider = setUpProvider();
119 assertEquals(DEF_CLASS, provider.determineConfigurationClass(decl, new ArrayList<>()));
120 }
121
122
123
124
125 @Test
126 void testDeterminieConfigurationClassNoFileName() throws ConfigurationException {
127 final ConfigurationDeclaration decl = setUpDecl();
128 final BuilderParameters params = new FileBasedBuilderParametersImpl();
129 final FileExtensionConfigurationBuilderProvider provider = setUpProvider();
130 assertEquals(DEF_CLASS, provider.determineConfigurationClass(decl, Collections.singleton(params)));
131 }
132
133
134
135
136 @Test
137 void testInitNoDefaultConfigClass() {
138 final String builderClass = BasicConfigurationBuilder.class.getName();
139 assertThrows(IllegalArgumentException.class,
140 () -> new FileExtensionConfigurationBuilderProvider(builderClass, null, MATCH_CLASS, null, EXT, null));
141 }
142
143
144
145
146 @Test
147 void testInitNoExt() {
148 final String builderClass = BasicConfigurationBuilder.class.getName();
149 assertThrows(IllegalArgumentException.class,
150 () -> new FileExtensionConfigurationBuilderProvider(builderClass, null, MATCH_CLASS, DEF_CLASS, null, null));
151 }
152
153
154
155
156 @Test
157 void testInitNoMatchingConfigClass() {
158 final String builderClass = BasicConfigurationBuilder.class.getName();
159 assertThrows(IllegalArgumentException.class,
160 () -> new FileExtensionConfigurationBuilderProvider(builderClass, null, null, DEF_CLASS, EXT, null));
161 }
162
163
164
165
166 @Test
167 void testInitSuper() {
168 final FileExtensionConfigurationBuilderProvider provider = new FileExtensionConfigurationBuilderProvider(BasicConfigurationBuilder.class.getName(),
169 ReloadingFileBasedConfigurationBuilder.class.getName(), MATCH_CLASS, DEF_CLASS, EXT, null);
170 assertEquals(BasicConfigurationBuilder.class.getName(), provider.getBuilderClass());
171 assertEquals(ReloadingFileBasedConfigurationBuilder.class.getName(), provider.getReloadingBuilderClass());
172 assertEquals(DEF_CLASS, provider.getConfigurationClass());
173 }
174 }