1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.spring;
18
19 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertNotNull;
22 import static org.junit.jupiter.api.Assertions.assertNull;
23 import static org.junit.jupiter.api.Assertions.assertThrows;
24
25 import java.io.StringReader;
26 import java.util.Properties;
27
28 import org.apache.commons.configuration2.BaseConfiguration;
29 import org.apache.commons.configuration2.Configuration;
30 import org.apache.commons.configuration2.PropertiesConfiguration;
31 import org.apache.commons.configuration2.PropertiesConfigurationLayout;
32 import org.apache.commons.configuration2.XMLConfiguration;
33 import org.junit.jupiter.api.BeforeEach;
34 import org.junit.jupiter.api.Test;
35 import org.springframework.core.io.ClassPathResource;
36 import org.springframework.core.io.Resource;
37
38
39
40
41 public class TestConfigurationPropertiesFactoryBean {
42
43 private ConfigurationPropertiesFactoryBean configurationFactory;
44
45 @BeforeEach
46 public void setUp() {
47 configurationFactory = new ConfigurationPropertiesFactoryBean();
48 }
49
50 @Test
51 void testAfterPropertiesSet() throws Exception {
52 assertThrows(IllegalArgumentException.class, configurationFactory::afterPropertiesSet);
53 }
54
55 @Test
56 void testGetConfigurationDefensiveCopy() {
57 final Configuration[] configs = {new PropertiesConfiguration(), new XMLConfiguration()};
58 configurationFactory.setConfigurations(configs);
59
60 final Configuration[] configsGet = configurationFactory.getConfigurations();
61 configsGet[0] = null;
62 assertArrayEquals(configs, configurationFactory.getConfigurations());
63 }
64
65 @Test
66 void testGetLocationsDefensiveCopy() {
67 final Resource[] locations = {new ClassPathResource("f1"), new ClassPathResource("f2")};
68 configurationFactory.setLocations(locations);
69
70 final Resource[] locationsGet = configurationFactory.getLocations();
71 locationsGet[1] = null;
72 assertArrayEquals(locations, configurationFactory.getLocations());
73 }
74
75 @Test
76 void testGetObject() throws Exception {
77 configurationFactory.setConfigurations(new BaseConfiguration());
78 assertNull(configurationFactory.getObject());
79 configurationFactory.afterPropertiesSet();
80 assertNotNull(configurationFactory.getObject());
81 }
82
83 @Test
84 void testInitialConfiguration() throws Exception {
85 configurationFactory = new ConfigurationPropertiesFactoryBean(new BaseConfiguration());
86 configurationFactory.afterPropertiesSet();
87 assertNotNull(configurationFactory.getConfiguration());
88 }
89
90 @Test
91 void testLoadResources() throws Exception {
92 configurationFactory.setLocations(new ClassPathResource("testConfigurationFactoryBean.file"));
93 configurationFactory.setConfigurations(new BaseConfiguration());
94 configurationFactory.afterPropertiesSet();
95
96 final Properties props = configurationFactory.getObject();
97 assertEquals("duke", props.getProperty("java"));
98 }
99
100 @Test
101 void testMergeConfigurations() throws Exception {
102 final Configuration one = new BaseConfiguration();
103 one.setProperty("foo", "bar");
104
105 final String properties = "## some header \n"
106 + "foo = bar1\n"
107 + "bar = foo\n";
108
109
110 final PropertiesConfiguration two = new PropertiesConfiguration();
111 final PropertiesConfigurationLayout layout = new PropertiesConfigurationLayout();
112 layout.load(two, new StringReader(properties));
113
114 configurationFactory.setConfigurations(one, two);
115 configurationFactory.afterPropertiesSet();
116 final Properties props = configurationFactory.getObject();
117 assertEquals("foo", props.getProperty("bar"));
118 assertEquals("bar", props.getProperty("foo"));
119 }
120
121 @Test
122 void testSetConfigurationsDefensiveCopy() {
123 final Configuration[] configs = {new PropertiesConfiguration(), new XMLConfiguration()};
124 final Configuration[] configsUpdate = configs.clone();
125
126 configurationFactory.setConfigurations(configsUpdate);
127 configsUpdate[0] = null;
128 assertArrayEquals(configs, configurationFactory.getConfigurations());
129 }
130
131 @Test
132 void testSetLocationsDefensiveCopy() {
133 final Resource[] locations = {new ClassPathResource("f1"), new ClassPathResource("f2")};
134 final Resource[] locationsUpdate = locations.clone();
135
136 configurationFactory.setLocations(locationsUpdate);
137 locationsUpdate[0] = new ClassPathResource("other");
138 assertArrayEquals(locations, configurationFactory.getLocations());
139 }
140
141 @Test
142 void testSetLocationsNull() {
143 configurationFactory.setLocations(null);
144 assertNull(configurationFactory.getLocations());
145 }
146 }