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