Skip to content

Commit 0fa4f47

Browse files
gianpaolo-pestilliilgrosso
authored andcommitted
[SYNCOPE-2010] DefaultPasswordGenerator.merge() ignores usernameAllowed (#1606)
1 parent 836de22 commit 0fa4f47

3 files changed

Lines changed: 65 additions & 1 deletion

File tree

‎client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxGridBottomToolbar.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ protected void populateItem(final LoopItem item) {
123123
};
124124
}
125125

126+
@SuppressWarnings("unchecked")
126127
protected List<AbstractEditablePropertyColumn<T, S>> getEditableColumns() {
127128
List<AbstractEditablePropertyColumn<T, S>> columns = new ArrayList<>();
128129
getTable().getColumns().stream().

‎core/spring/src/main/java/org/apache/syncope/core/spring/security/DefaultPasswordGenerator.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ protected DefaultPasswordRuleConf merge(final List<DefaultPasswordRuleConf> defa
150150
result.setRepeatSame(ruleConf.getRepeatSame());
151151
}
152152

153-
if (!result.isUsernameAllowed()) {
153+
if (result.isUsernameAllowed()) {
154154
result.setUsernameAllowed(ruleConf.isUsernameAllowed());
155155
}
156156

‎core/spring/src/test/java/org/apache/syncope/core/spring/security/PasswordGeneratorTest.java‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
package org.apache.syncope.core.spring.security;
2020

2121
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
22+
import static org.junit.jupiter.api.Assertions.assertFalse;
2223
import static org.junit.jupiter.api.Assertions.assertNotNull;
2324
import static org.junit.jupiter.api.Assertions.assertTrue;
2425

2526
import com.fasterxml.jackson.core.JsonProcessingException;
2627
import com.fasterxml.jackson.databind.json.JsonMapper;
28+
import java.util.ArrayList;
2729
import java.util.List;
2830
import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
2931
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
@@ -150,4 +152,65 @@ public void issueSYNCOPE678() {
150152
password = passwordGenerator.generate(List.of(new TestPasswordPolicy(passwordRule)));
151153
assertNotNull(password);
152154
}
155+
156+
private static DefaultPasswordRuleConf configRule(final boolean usernameAllowed) {
157+
DefaultPasswordRuleConf conf = new DefaultPasswordRuleConf();
158+
conf.setUsernameAllowed(usernameAllowed);
159+
return conf;
160+
}
161+
162+
@Test
163+
public void allForbid() {
164+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
165+
rules.add(configRule(false));
166+
rules.add(configRule(false));
167+
assertFalse(passwordGenerator.merge(rules).isUsernameAllowed());
168+
}
169+
170+
@Test
171+
public void singleTrue() {
172+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
173+
rules.add(configRule(true));
174+
assertTrue(passwordGenerator.merge(rules).isUsernameAllowed());
175+
}
176+
177+
@Test
178+
public void singleFalse() {
179+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
180+
rules.add(configRule(false));
181+
assertFalse(passwordGenerator.merge(rules).isUsernameAllowed());
182+
}
183+
184+
@Test
185+
public void twoTrue() {
186+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
187+
rules.add(configRule(true));
188+
rules.add(configRule(true));
189+
assertTrue(passwordGenerator.merge(rules).isUsernameAllowed());
190+
}
191+
192+
@Test
193+
public void trueThenFalse() {
194+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
195+
rules.add(configRule(true));
196+
rules.add(configRule(false));
197+
assertFalse(passwordGenerator.merge(rules).isUsernameAllowed());
198+
}
199+
200+
@Test
201+
public void falseThenTrue() {
202+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
203+
rules.add(configRule(false));
204+
rules.add(configRule(true));
205+
assertFalse(passwordGenerator.merge(rules).isUsernameAllowed());
206+
}
207+
208+
@Test
209+
public void falseInTheMiddle() {
210+
List<DefaultPasswordRuleConf> rules = new ArrayList<>();
211+
rules.add(configRule(true));
212+
rules.add(configRule(false));
213+
rules.add(configRule(true));
214+
assertFalse(passwordGenerator.merge(rules).isUsernameAllowed());
215+
}
153216
}

0 commit comments

Comments
 (0)