Skip to content

Commit f7c1676

Browse files
author
Dave Syer
committed
Add setter for security.user.role
Fixes gh-700
1 parent 0aa9303 commit f7c1676

File tree

2 files changed

+52
-40
lines changed

2 files changed

+52
-40
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/SecurityProperties.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ public List<String> getRole() {
223223
return this.role;
224224
}
225225

226+
public void setRole(List<String> role) {
227+
this.role = new ArrayList<String>(role);
228+
}
229+
226230
public boolean isDefaultPassword() {
227231
return this.defaultPassword;
228232
}

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityPropertiesTests.java

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23+
import org.junit.Before;
2324
import org.junit.Test;
2425
import org.springframework.beans.MutablePropertyValues;
2526
import org.springframework.boot.bind.RelaxedDataBinder;
@@ -36,81 +37,88 @@
3637
*/
3738
public class SecurityPropertiesTests {
3839

40+
private SecurityProperties security = new SecurityProperties();
41+
private RelaxedDataBinder binder = new RelaxedDataBinder(this.security, "security");
42+
43+
@Before
44+
public void init() {
45+
this.binder.setIgnoreUnknownFields(false);
46+
this.binder.setConversionService(new DefaultConversionService());
47+
}
48+
3949
@Test
4050
public void testBindingIgnoredSingleValued() {
41-
SecurityProperties security = new SecurityProperties();
42-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
43-
binder.bind(new MutablePropertyValues(Collections.singletonMap(
51+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
4452
"security.ignored", "/css/**")));
45-
assertFalse(binder.getBindingResult().hasErrors());
46-
assertEquals(1, security.getIgnored().size());
53+
assertFalse(this.binder.getBindingResult().hasErrors());
54+
assertEquals(1, this.security.getIgnored().size());
4755
}
4856

4957
@Test
5058
public void testBindingIgnoredEmpty() {
51-
SecurityProperties security = new SecurityProperties();
52-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
53-
binder.setConversionService(new DefaultConversionService());
54-
binder.bind(new MutablePropertyValues(Collections.singletonMap(
59+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
5560
"security.ignored", "")));
56-
assertFalse(binder.getBindingResult().hasErrors());
57-
assertEquals(0, security.getIgnored().size());
61+
assertFalse(this.binder.getBindingResult().hasErrors());
62+
assertEquals(0, this.security.getIgnored().size());
5863
}
5964

6065
@Test
6166
public void testBindingIgnoredDisable() {
62-
SecurityProperties security = new SecurityProperties();
63-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
64-
binder.setConversionService(new DefaultConversionService());
65-
binder.bind(new MutablePropertyValues(Collections.singletonMap(
67+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
6668
"security.ignored", "none")));
67-
assertFalse(binder.getBindingResult().hasErrors());
68-
assertEquals(1, security.getIgnored().size());
69+
assertFalse(this.binder.getBindingResult().hasErrors());
70+
assertEquals(1, this.security.getIgnored().size());
6971
}
7072

7173
@Test
7274
public void testBindingIgnoredMultiValued() {
73-
SecurityProperties security = new SecurityProperties();
74-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
75-
binder.setConversionService(new DefaultConversionService());
76-
binder.bind(new MutablePropertyValues(Collections.singletonMap(
75+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
7776
"security.ignored", "/css/**,/images/**")));
78-
assertFalse(binder.getBindingResult().hasErrors());
79-
assertEquals(2, security.getIgnored().size());
77+
assertFalse(this.binder.getBindingResult().hasErrors());
78+
assertEquals(2, this.security.getIgnored().size());
8079
}
8180

8281
@Test
8382
public void testBindingIgnoredMultiValuedList() {
84-
SecurityProperties security = new SecurityProperties();
85-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
86-
binder.setConversionService(new DefaultConversionService());
8783
Map<String, String> map = new HashMap<String, String>();
8884
map.put("security.ignored[0]", "/css/**");
8985
map.put("security.ignored[1]", "/foo/**");
90-
binder.bind(new MutablePropertyValues(map));
91-
assertFalse(binder.getBindingResult().hasErrors());
92-
assertEquals(2, security.getIgnored().size());
93-
assertTrue(security.getIgnored().contains("/foo/**"));
86+
this.binder.bind(new MutablePropertyValues(map));
87+
assertFalse(this.binder.getBindingResult().hasErrors());
88+
assertEquals(2, this.security.getIgnored().size());
89+
assertTrue(this.security.getIgnored().contains("/foo/**"));
9490
}
9591

9692
@Test
9793
public void testDefaultPasswordAutogeneratedIfUnresolovedPlaceholder() {
98-
SecurityProperties security = new SecurityProperties();
99-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
100-
binder.bind(new MutablePropertyValues(Collections.singletonMap(
94+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
10195
"security.user.password", "${ADMIN_PASSWORD}")));
102-
assertFalse(binder.getBindingResult().hasErrors());
103-
assertTrue(security.getUser().isDefaultPassword());
96+
assertFalse(this.binder.getBindingResult().hasErrors());
97+
assertTrue(this.security.getUser().isDefaultPassword());
10498
}
10599

106100
@Test
107101
public void testDefaultPasswordAutogeneratedIfEmpty() {
108-
SecurityProperties security = new SecurityProperties();
109-
RelaxedDataBinder binder = new RelaxedDataBinder(security, "security");
110-
binder.bind(new MutablePropertyValues(Collections.singletonMap(
102+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
111103
"security.user.password", "")));
112-
assertFalse(binder.getBindingResult().hasErrors());
113-
assertTrue(security.getUser().isDefaultPassword());
104+
assertFalse(this.binder.getBindingResult().hasErrors());
105+
assertTrue(this.security.getUser().isDefaultPassword());
106+
}
107+
108+
@Test
109+
public void testRoles() {
110+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
111+
"security.user.role", "USER,ADMIN")));
112+
assertFalse(this.binder.getBindingResult().hasErrors());
113+
assertEquals("[USER, ADMIN]", this.security.getUser().getRole().toString());
114+
}
115+
116+
@Test
117+
public void testRole() {
118+
this.binder.bind(new MutablePropertyValues(Collections.singletonMap(
119+
"security.user.role", "ADMIN")));
120+
assertFalse(this.binder.getBindingResult().hasErrors());
121+
assertEquals("[ADMIN]", this.security.getUser().getRole().toString());
114122
}
115123

116124
}

0 commit comments

Comments
 (0)