Skip to content

Commit 9d29f50

Browse files
committed
#538 Fail for yaml lists with more than one item underneath authorizable
config
1 parent 29d10d5 commit 9d29f50

File tree

3 files changed

+26
-11
lines changed

3 files changed

+26
-11
lines changed

accesscontroltool-bundle/src/main/java/biz/netcentric/cq/tools/actool/configreader/YamlConfigReader.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -217,18 +217,20 @@ private AuthorizablesConfig getAuthorizableBeans(
217217
final List<Map<String, Object>> currentAuthorizableData = (List<Map<String, Object>>) currentMap.get(currentAuthorizableIdFromYaml);
218218

219219
if ((currentAuthorizableData != null) && !currentAuthorizableData.isEmpty()) {
220-
221-
for (final Map<String, Object> currentPrincipalDataMap : currentAuthorizableData) {
222-
try {
223-
final AuthorizableConfigBean tmpPrincipalConfigBean = getNewAuthorizableConfigBean();
224-
setupAuthorizableBean(tmpPrincipalConfigBean, currentPrincipalDataMap, currentAuthorizableIdFromYaml, isGroupSection);
225-
if (authorizableValidator != null) {
226-
authorizableValidator.validate(tmpPrincipalConfigBean);
227-
}
228-
authorizableBeans.add(tmpPrincipalConfigBean);
229-
} catch (AcConfigBeanValidationException e) {
230-
throw new AcConfigBeanValidationException("Invalid authorizable " + currentAuthorizableIdFromYaml, e);
220+
221+
if(currentAuthorizableData.size() > 1) {
222+
throw new AcConfigBeanValidationException("Invalid authorizable " + currentAuthorizableIdFromYaml +" - configuration needs to contain exactly one yaml list entry");
223+
}
224+
try {
225+
Map<String, Object> currentPrincipalDataMap = currentAuthorizableData.get(0);
226+
final AuthorizableConfigBean tmpPrincipalConfigBean = getNewAuthorizableConfigBean();
227+
setupAuthorizableBean(tmpPrincipalConfigBean, currentPrincipalDataMap, currentAuthorizableIdFromYaml, isGroupSection);
228+
if (authorizableValidator != null) {
229+
authorizableValidator.validate(tmpPrincipalConfigBean);
231230
}
231+
authorizableBeans.add(tmpPrincipalConfigBean);
232+
} catch (AcConfigBeanValidationException e) {
233+
throw new AcConfigBeanValidationException("Invalid authorizable " + currentAuthorizableIdFromYaml, e);
232234
}
233235
}
234236

accesscontroltool-bundle/src/test/java/biz/netcentric/cq/tools/actool/configreader/YamlConfigurationMergerTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ public void testReadInvalidYaml2() throws IOException, RepositoryException, AcCo
8888
getAcConfigurationForFile(getConfigurationMerger(), session, "test-invalid2.yaml");
8989
}
9090

91+
@Test(expected = AcConfigBeanValidationException.class)
92+
public void testReadInvalidYaml3() throws IOException, RepositoryException, AcConfigBeanValidationException {
93+
getAcConfigurationForFile(getConfigurationMerger(), session, "test-invalid3.yaml");
94+
}
95+
9196
@Test()
9297
public void testReadEmptyYaml() throws IOException, RepositoryException, AcConfigBeanValidationException {
9398
getAcConfigurationForFile(getConfigurationMerger(), session, "test-empty.yaml");
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
- group_config:
3+
4+
- fragment-xyz-editor:
5+
- path: /home/groups/test
6+
# only one item allowed underneath group name
7+
- isMemberOf:
8+
- fragment-xyz

0 commit comments

Comments
 (0)