Author: angela
Date: Tue Apr  4 13:30:12 2017
New Revision: 1790110

URL: http://svn.apache.org/viewvc?rev=1790110&view=rev
Log:
OAK-5882 : Improve coverage for oak.security code in oak-core (wip)

Added:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipAbortTest.java
   (with props)
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipBesteffortTest.java
   (with props)
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
   (with props)

Added: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipAbortTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipAbortTest.java?rev=1790110&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipAbortTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipAbortTest.java
 Tue Apr  4 13:30:12 2017
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.user;
+
+import javax.jcr.nodetype.ConstraintViolationException;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
+import org.junit.Test;
+
+public class UserImporterMembershipAbortTest extends 
UserImporterMembershipIgnoreTest {
+
+    @Override
+    String getImportBehavior() {
+        return ImportBehavior.NAME_ABORT;
+    }
+
+    @Test(expected = ConstraintViolationException.class)
+    public void testUnknownMember() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
unknownContentId)));
+        importer.processReferences();
+    }
+
+    @Test(expected = ConstraintViolationException.class)
+    public void testMixedMembers() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
unknownContentId, knownMemberContentId)));
+        importer.processReferences();
+    }
+}
\ No newline at end of file

Propchange: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipAbortTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipBesteffortTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipBesteffortTest.java?rev=1790110&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipBesteffortTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipBesteffortTest.java
 Tue Apr  4 13:30:12 2017
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.user;
+
+import javax.jcr.nodetype.ConstraintViolationException;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+public class UserImporterMembershipBesteffortTest extends 
UserImporterMembershipIgnoreTest {
+
+    @Override
+    String getImportBehavior() {
+        return ImportBehavior.NAME_BESTEFFORT;
+    }
+
+    @Test
+    public void testUnknownMember() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
unknownContentId)));
+        importer.processReferences();
+
+        assertTrue(groupTree.hasProperty(REP_MEMBERS));
+    }
+
+    @Test
+    public void testMixedMembers() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
unknownContentId, knownMemberContentId)));
+        importer.processReferences();
+
+        assertTrue(groupTree.hasProperty(REP_MEMBERS));
+    }
+}
\ No newline at end of file

Propchange: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipBesteffortTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java?rev=1790110&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
 Tue Apr  4 13:30:12 2017
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.user;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.jcr.RepositoryException;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+public class UserImporterMembershipIgnoreTest extends UserImporterBaseTest {
+
+    Tree groupTree;
+    Tree memberRefList;
+
+    private UserProvider userProvider;
+
+    String knownMemberContentId;
+    String unknownContentId;
+
+    @Override
+    public void before() throws Exception {
+        super.before();
+
+        userProvider = new UserProvider(root, ConfigurationParameters.EMPTY);
+        knownMemberContentId = userProvider.getContentID(testUser.getID());
+        unknownContentId = userProvider.getContentID("member1");
+
+        init();
+        groupTree = createGroupTree();
+        groupTree.setProperty(REP_PRINCIPAL_NAME, "groupPrincipal");
+        memberRefList = groupTree.addChild(REP_MEMBERS_LIST);
+        memberRefList.setProperty(JcrConstants.JCR_PRIMARYTYPE, 
NT_REP_MEMBER_REFERENCES_LIST);
+
+        assertTrue(importer.start(memberRefList));
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testInvalidMemberContentId() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
"memberId")));
+        importer.processReferences();
+    }
+
+    @Test
+    public void testUnknownMember() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
unknownContentId)));
+        importer.processReferences();
+
+        // default importbehavior == IGNORE
+        assertFalse(memberRefList.hasChild("memberRef"));
+    }
+
+    @Test
+    public void testKnownMemberThresholdNotReached() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
knownMemberContentId)));
+        importer.processReferences();
+
+        assertTrue(groupTree.hasProperty(REP_MEMBERS));
+    }
+
+    @Test
+    public void testKnownMemberThresholdReached() throws Exception {
+        List<String> memberIds = new ArrayList();
+        for (int i = 0; i <= MembershipWriter.DEFAULT_MEMBERSHIP_THRESHHOLD; 
i++) {
+            memberIds.add(userProvider.getContentID("m"+i));
+        }
+        groupTree.setProperty(REP_MEMBERS, memberIds, Type.STRINGS);
+
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
knownMemberContentId)));
+        importer.processReferences();
+
+        assertEquals(1, memberRefList.getChildrenCount(100));
+        
assertTrue(memberRefList.getChildren().iterator().next().hasProperty(REP_MEMBERS));
+    }
+
+    @Test
+    public void testMixedMembers() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
unknownContentId, knownMemberContentId)));
+        importer.processReferences();
+
+        assertFalse(memberRefList.hasChild("memberRef"));
+    }
+
+    @Test(expected = RepositoryException.class)
+    public void testGroupRemovedBeforeProcessing() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
knownMemberContentId)));
+
+        groupTree.remove();
+        importer.processReferences();
+    }
+
+    @Test(expected = RepositoryException.class)
+    public void testUserConvertedGroupBeforeProcessing() throws Exception {
+        importer.startChildInfo(createNodeInfo("memberRef", 
NT_REP_MEMBER_REFERENCES), ImmutableList.of(createPropInfo(REP_MEMBERS, 
knownMemberContentId)));
+        groupTree.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_USER);
+        importer.processReferences();
+    }
+
+    @Test
+    public void testReplaceExistingProperty() throws Exception {
+//        groupTree.setProperty(REP_MEMBERS, 
ImmutableList.of(unknownContentId), Type.STRINGS);
+//
+//        assertTrue(importer.handlePropInfo(groupTree, 
createPropInfo(REP_MEMBERS, testUser.getPrincipal().getName()), 
mockPropertyDefinition(NT_REP_USER, true)));
+//        importer.processReferences();
+//
+//        PropertyState impersonators = userTree.getProperty(REP_MEMBERS);
+//        assertNotNull(impersonators);
+//        assertEquals(ImmutableList.of(testUser.getPrincipal().getName()), 
impersonators.getValue(Type.STRINGS));
+    }
+
+    @Test
+    public void testNewMembers() throws Exception {
+//        Tree folder = 
root.getTree(getUserConfiguration().getParameters().getConfigValue(PARAM_USER_PATH,
 DEFAULT_USER_PATH));
+//        Tree impersonatorTree = folder.addChild("impersonatorTree");
+//        impersonatorTree.setProperty(JcrConstants.JCR_PRIMARYTYPE, 
NT_REP_USER, Type.NAME);
+//        impersonatorTree.setProperty(JcrConstants.JCR_UUID, new 
UserProvider(root, 
ConfigurationParameters.EMPTY).getContentID("impersonator1"));
+//
+//        assertTrue(importer.handlePropInfo(userTree, 
createPropInfo(REP_IMPERSONATORS, "impersonator1"), 
mockPropertyDefinition(NT_REP_USER, true)));
+//        assertTrue(importer.handlePropInfo(impersonatorTree, 
createPropInfo(REP_PRINCIPAL_NAME, "impersonator1"), 
mockPropertyDefinition(NT_REP_AUTHORIZABLE, false)));
+//
+//        importer.processReferences();
+//
+//        PropertyState impersonators = 
userTree.getProperty(REP_IMPERSONATORS);
+//        assertNotNull(impersonators);
+//        assertEquals(ImmutableList.of("impersonator1"), 
impersonators.getValue(Type.STRINGS));
+    }
+
+    @Test
+    public void testNewMembers2() throws Exception {
+//        Tree folder = 
root.getTree(getUserConfiguration().getParameters().getConfigValue(PARAM_USER_PATH,
 DEFAULT_USER_PATH));
+//        Tree impersonatorTree = folder.addChild("impersonatorTree");
+//        impersonatorTree.setProperty(JcrConstants.JCR_PRIMARYTYPE, 
NT_REP_USER, Type.NAME);
+//        impersonatorTree.setProperty(JcrConstants.JCR_UUID, new 
UserProvider(root, 
ConfigurationParameters.EMPTY).getContentID("impersonator1"));
+//
+//        // NOTE: reversed over of import compared to 'testNewImpersonator'
+//        assertTrue(importer.handlePropInfo(impersonatorTree, 
createPropInfo(REP_PRINCIPAL_NAME, "impersonator1"), 
mockPropertyDefinition(NT_REP_AUTHORIZABLE, false)));
+//        assertTrue(importer.handlePropInfo(userTree, 
createPropInfo(REP_IMPERSONATORS, "impersonator1"), 
mockPropertyDefinition(NT_REP_USER, true)));
+//
+//        importer.processReferences();
+//
+//        PropertyState impersonators = 
userTree.getProperty(REP_IMPERSONATORS);
+//        assertNotNull(impersonators);
+//        assertEquals(ImmutableList.of("impersonator1"), 
impersonators.getValue(Type.STRINGS));
+    }
+}
\ No newline at end of file

Propchange: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterMembershipIgnoreTest.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to