@Test public void testHashCode() { assertEquals(def.hashCode(), def.hashCode()); assertEquals(def.hashCode(), new ImmutablePrivilegeDefinition(def.getName(), def.isAbstract(), def.getDeclaredAggregateNames()).hashCode()); }
private static Collection<PrivilegeDefinition> getBuiltInDefinitions() { Map<String, PrivilegeDefinition> definitions = new LinkedHashMap<String, PrivilegeDefinition>(); for (String privilegeName : NON_AGGREGATE_PRIVILEGES) { PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, null); definitions.put(privilegeName, def); } for (String privilegeName : AGGREGATE_PRIVILEGES.keySet()) { PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, asList(AGGREGATE_PRIVILEGES.get(privilegeName))); definitions.put(privilegeName, def); } PrivilegeDefinition all = new ImmutablePrivilegeDefinition(JCR_ALL, false, definitions.keySet()); definitions.put(JCR_ALL, all); return definitions.values(); } }
@Test public void testGetDeclaredAggregatedNames2() { assertTrue(new ImmutablePrivilegeDefinition("name", false, null).getDeclaredAggregateNames().isEmpty()); }
@Override public int hashCode() { return Objects.hashCode(name, isAbstract(), declaredAggregateNames); }
@Test public void testGetDeclaredAggregatedNames() { assertEquals(ImmutableSet.of("aggrName"), def.getDeclaredAggregateNames()); }
@Test public void testGetName() { assertEquals("name", def.getName()); }
@NotNull private static Collection<PrivilegeDefinition> getBuiltInDefinitions() { Map<String, PrivilegeDefinition> definitions = new LinkedHashMap<>(); NON_AGGREGATE_PRIVILEGES.forEach((privilegeName) -> { PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, null); definitions.put(privilegeName, def); }); AGGREGATE_PRIVILEGES.forEach((privilegeName, aggregatedNames) -> { PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, asList(aggregatedNames)); definitions.put(privilegeName, def); }); PrivilegeDefinition all = new ImmutablePrivilegeDefinition(JCR_ALL, false, definitions.keySet()); definitions.put(JCR_ALL, all); return definitions.values(); } }
@Override public int hashCode() { return Objects.hashCode(name, isAbstract(), declaredAggregateNames); }
@Test public void testEquals() { assertEquals(def, def); assertEquals(def, new ImmutablePrivilegeDefinition(def.getName(), def.isAbstract(), def.getDeclaredAggregateNames())); }
@NotNull private static Collection<PrivilegeDefinition> getBuiltInDefinitions() { Map<String, PrivilegeDefinition> definitions = new LinkedHashMap<>(); NON_AGGREGATE_PRIVILEGES.forEach((privilegeName) -> { PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, null); definitions.put(privilegeName, def); }); AGGREGATE_PRIVILEGES.forEach((privilegeName, aggregatedNames) -> { PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, asList(aggregatedNames)); definitions.put(privilegeName, def); }); PrivilegeDefinition all = new ImmutablePrivilegeDefinition(JCR_ALL, false, definitions.keySet()); definitions.put(JCR_ALL, all); return definitions.values(); } }
@Test public void testIsAbstract() { assertTrue(def.isAbstract()); }
@Test public void testNotEquals() { PrivilegeDefinition otherDef = Mockito.mock(PrivilegeDefinition.class); when(otherDef.getName()).thenReturn(def.getName()); when(otherDef.isAbstract()).thenReturn(def.isAbstract()); when(otherDef.getDeclaredAggregateNames()).thenReturn(def.getDeclaredAggregateNames()); assertNotEquals(def, otherDef); assertNotEquals(def, null); assertNotEquals(def, new ImmutablePrivilegeDefinition("othername", true, ImmutableList.of("aggrName"))); assertNotEquals(def, new ImmutablePrivilegeDefinition("name", false, ImmutableList.of("aggrName"))); assertNotEquals(def, new ImmutablePrivilegeDefinition("name", true, ImmutableList.of("anotherName"))); assertNotEquals(def, new ImmutablePrivilegeDefinition("name", true, ImmutableList.of())); assertNotEquals(def, new ImmutablePrivilegeDefinition("otherName", false, ImmutableList.of("aggrName","aggrName2"))); } }
/** * Reads the privilege definition stored in the specified definition tree. * Note, that this utility does not check the existence nor the node type * of the specified tree. * * @param definitionTree An existing tree storing a privilege definition. * @return A new instance of {@code PrivilegeDefinition}. */ @NotNull public static PrivilegeDefinition readDefinition(@NotNull Tree definitionTree) { String name = definitionTree.getName(); boolean isAbstract = TreeUtil.getBoolean(definitionTree, REP_IS_ABSTRACT); Iterable<String> declAggrNames = null; PropertyState property = definitionTree.getProperty(REP_AGGREGATES); if (property != null) { declAggrNames = property.getValue(Type.NAMES); } return new ImmutablePrivilegeDefinition(name, isAbstract, declAggrNames); } }
/** * Reads the privilege definition stored in the specified definition tree. * Note, that this utility does not check the existence nor the node type * of the specified tree. * * @param definitionTree An existing tree storing a privilege definition. * @return A new instance of {@code PrivilegeDefinition}. */ @Nonnull public static PrivilegeDefinition readDefinition(@Nonnull Tree definitionTree) { String name = definitionTree.getName(); boolean isAbstract = TreeUtil.getBoolean(definitionTree, REP_IS_ABSTRACT); Iterable<String> declAggrNames = null; PropertyState property = definitionTree.getProperty(REP_AGGREGATES); if (property != null) { declAggrNames = property.getValue(Type.NAMES); } return new ImmutablePrivilegeDefinition(name, isAbstract, declAggrNames); } }
@Test(expected = RepositoryException.class) public void testCommitFails() throws Exception { Root r = Mockito.spy(root); doThrow(new CommitFailedException(CommitFailedException.OAK, 1, "msg")).when(r).commit(); PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(r); writer.writeDefinition(new ImmutablePrivilegeDefinition( "tmp", true, asList(JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL))); } }
@Override public Privilege registerPrivilege(String privilegeName, boolean isAbstract, String[] declaredAggregateNames) throws RepositoryException { if (root.hasPendingChanges()) { throw new InvalidItemStateException("Attempt to register a new privilege while there are pending changes."); } if (privilegeName == null || privilegeName.isEmpty()) { throw new RepositoryException("Invalid privilege name " + privilegeName); } PrivilegeDefinition definition = new ImmutablePrivilegeDefinition(getOakName(privilegeName), isAbstract, getOakNames(declaredAggregateNames)); PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(getWriteRoot()); writer.writeDefinition(definition); // refresh the current root to make sure the definition is visible root.refresh(); return getPrivilege(definition); }
@Override public Privilege registerPrivilege(String privilegeName, boolean isAbstract, String[] declaredAggregateNames) throws RepositoryException { if (root.hasPendingChanges()) { throw new InvalidItemStateException("Attempt to register a new privilege while there are pending changes."); } if (privilegeName == null || privilegeName.isEmpty()) { throw new RepositoryException("Invalid privilege name " + privilegeName); } PrivilegeDefinition definition = new ImmutablePrivilegeDefinition(getOakName(privilegeName), isAbstract, getOakNames(declaredAggregateNames)); PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(getWriteRoot()); writer.writeDefinition(definition); // refresh the current root to make sure the definition is visible root.refresh(); return getPrivilege(definition); }
@Override public Privilege registerPrivilege(String privilegeName, boolean isAbstract, String[] declaredAggregateNames) throws RepositoryException { if (root.hasPendingChanges()) { throw new InvalidItemStateException("Attempt to register a new privilege while there are pending changes."); } if (privilegeName == null || privilegeName.isEmpty()) { throw new RepositoryException("Invalid privilege name " + privilegeName); } PrivilegeDefinition definition = new ImmutablePrivilegeDefinition(getOakName(privilegeName), isAbstract, getOakNames(declaredAggregateNames)); PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(getWriteRoot()); writer.writeDefinition(definition); // refresh the current root to make sure the definition is visible root.refresh(); return getPrivilege(definition); }
@Test public void testNameCollision() { try { PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(root); writer.writeDefinition(new ImmutablePrivilegeDefinition(JCR_READ, true, null)); fail("name collision"); } catch (RepositoryException e) { // success } }
@Test public void testWriteDefinition() throws Exception { PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(root); writer.writeDefinition(new ImmutablePrivilegeDefinition( "tmp", true, asList(JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL))); Tree privRoot = root.getTree(PRIVILEGES_PATH); assertTrue(privRoot.hasChild("tmp")); Tree tmpTree = privRoot.getChild("tmp"); assertTrue(TreeUtil.getBoolean(tmpTree, REP_IS_ABSTRACT)); assertArrayEquals( new String[] {JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL}, Iterables.toArray(TreeUtil.getStrings(tmpTree, REP_AGGREGATES), String.class)); }