You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2017/08/16 09:13:23 UTC

karaf git commit: Refactor test

Repository: karaf
Updated Branches:
  refs/heads/master 713d25d4f -> 01d0aae9b


Refactor test


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/01d0aae9
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/01d0aae9
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/01d0aae9

Branch: refs/heads/master
Commit: 01d0aae9b62531919f00d96eb22119bf59d0209b
Parents: 713d25d
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 11:12:46 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 11:12:46 2017 +0200

----------------------------------------------------------------------
 jaas/modules/pom.xml                            |   6 +
 .../karaf/jaas/modules/PrincipalAssert.java     |  40 +++
 .../properties/PropertiesBackingEngineTest.java | 266 +++++++------------
 .../properties/PropertiesLoginModuleTest.java   |  42 +--
 4 files changed, 146 insertions(+), 208 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/01d0aae9/jaas/modules/pom.xml
----------------------------------------------------------------------
diff --git a/jaas/modules/pom.xml b/jaas/modules/pom.xml
index 8313005..b6be3d8 100644
--- a/jaas/modules/pom.xml
+++ b/jaas/modules/pom.xml
@@ -120,6 +120,12 @@
             <version>${derby-version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-all</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/01d0aae9/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalAssert.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalAssert.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalAssert.java
new file mode 100644
index 0000000..c19fd2b
--- /dev/null
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalAssert.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed 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.
+ *  under the License.
+ */
+package org.apache.karaf.jaas.modules;
+
+import static java.util.stream.Collectors.toList;
+
+import java.security.Principal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.security.auth.Subject;
+
+import org.junit.Assert;
+
+public class PrincipalAssert {
+    
+    public static List<String> names(List<? extends Principal> principals) {
+        return principals.stream().map(r->r.getName()).collect(toList());
+    }
+    
+    public static void assertPrincipalNamed(Subject subject, Class<? extends Principal> clazz, String expectedName) {
+        Long numMatching = subject.getPrincipals(clazz).stream()
+            .filter(pr -> expectedName.equals(pr.getName()))
+            .collect(Collectors.counting());
+        Assert.assertEquals("Expected " + clazz.getSimpleName() + " principal in subject with name=" + expectedName, 
+                            1l, numMatching.intValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/01d0aae9/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngineTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngineTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngineTest.java
index b781cd1..0c811da 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngineTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngineTest.java
@@ -16,188 +16,104 @@
  */
 package org.apache.karaf.jaas.modules.properties;
 
-import junit.framework.TestCase;
+import static org.apache.karaf.jaas.modules.PrincipalAssert.names;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.felix.utils.properties.Properties;
 import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
-import org.apache.karaf.jaas.boot.principal.RolePrincipal;
 import org.apache.karaf.jaas.boot.principal.UserPrincipal;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
-import java.io.File;
-import java.io.IOException;
+public class PropertiesBackingEngineTest {
+    private File f;
 
-public class PropertiesBackingEngineTest extends TestCase {
+    @Before
+    public void start() throws IOException {
+        f = File.createTempFile(getClass().getName(), ".tmp");
+    }
 
+    @Test
     public void testUserRoles() throws IOException {
-        File f = File.createTempFile(getClass().getName(), ".tmp");
-        try {
-            Properties p = new Properties(f);
-
-            PropertiesBackingEngine engine = new PropertiesBackingEngine(p);
-            engine.addUser("a", "aa");
-            assertEquals(1, engine.listUsers().size());
-            UserPrincipal upa = engine.listUsers().iterator().next();
-            assertEquals("a", upa.getName());
-            engine.addUser("b", "bb");
-
-            engine.addRole("a", "role1");
-            engine.addRole("a", "role2");
-            assertEquals(2, engine.listRoles(upa).size());
-
-            boolean foundR1 = false;
-            boolean foundR2 = false;
-            for (RolePrincipal rp : engine.listRoles(upa)) {
-                if ("role1".equals(rp.getName())) {
-                    foundR1 = true;
-                } else if ("role2".equals(rp.getName())) {
-                    foundR2 = true;
-                }
-            }
-            assertTrue(foundR1);
-            assertTrue(foundR2);
-
-            engine.addGroup("a", "g");
-            engine.addGroupRole("g", "role2");
-            engine.addGroupRole("g", "role3");
-            engine.addGroup("b", "g");
-            engine.addGroup("b", "g2");
-            engine.addGroupRole("g2", "role4");
-
-            assertEquals(2, engine.listUsers().size());
-            UserPrincipal upa_1 = null;
-            UserPrincipal upb_1 = null;
-            for (UserPrincipal u : engine.listUsers()) {
-                if ("a".equals(u.getName())) {
-                    upa_1 = u;
-                } else if ("b".equals(u.getName())) {
-                    upb_1 = u;
-                }
-            }
-            assertNotNull(upa_1);
-            assertNotNull(upb_1);
-
-            assertEquals(3, engine.listRoles(upa).size());
-            boolean foundR1_2 = false;
-            boolean foundR2_2 = false;
-            boolean foundR3_2 = false;
-            for (RolePrincipal rp : engine.listRoles(upa)) {
-                if ("role1".equals(rp.getName())) {
-                    foundR1_2 = true;
-                } else if ("role2".equals(rp.getName())) {
-                    foundR2_2 = true;
-                } else if ("role3".equals(rp.getName())) {
-                    foundR3_2 = true;
-                }
-            }
-            assertTrue(foundR1_2);
-            assertTrue(foundR2_2);
-            assertTrue(foundR3_2);
-
-            // check that the loading works
-            PropertiesBackingEngine engine2 = new PropertiesBackingEngine(new Properties(f));
-            assertEquals(2, engine2.listUsers().size());
-            UserPrincipal upa_2 = null;
-            UserPrincipal upb_2 = null;
-            for (UserPrincipal u : engine2.listUsers()) {
-                if ("a".equals(u.getName())) {
-                    upa_2 = u;
-                } else if ("b".equals(u.getName())) {
-                    upb_2 = u;
-                }
-            }
-            assertNotNull(upa_2);
-            assertNotNull(upb_2);
-
-            assertEquals(3, engine2.listRoles(upa_2).size());
-            boolean foundR1_3 = false;
-            boolean foundR2_3 = false;
-            boolean foundR3_3 = false;
-            for (RolePrincipal rp : engine2.listRoles(upa_2)) {
-                if ("role1".equals(rp.getName())) {
-                    foundR1_3 = true;
-                } else if ("role2".equals(rp.getName())) {
-                    foundR2_3 = true;
-                } else if ("role3".equals(rp.getName())) {
-                    foundR3_3 = true;
-                }
-            }
-            assertTrue(foundR1_3);
-            assertTrue(foundR2_3);
-            assertTrue(foundR3_3);
-
-            assertEquals(3, engine2.listRoles(upb_2).size());
-            boolean foundR2_4 = false;
-            boolean foundR3_4 = false;
-            boolean foundR4_4 = false;
-            for (RolePrincipal rp : engine2.listRoles(upb_2)) {
-                if ("role2".equals(rp.getName())) {
-                    foundR2_4 = true;
-                } else if ("role3".equals(rp.getName())) {
-                    foundR3_4 = true;
-                } else if ("role4".equals(rp.getName())) {
-                    foundR4_4 = true;
-                }
-            }
-            assertTrue(foundR2_4);
-            assertTrue(foundR3_4);
-            assertTrue(foundR4_4);
-
-            // removing some stuff
-            UserPrincipal upb = null;
-            for (UserPrincipal up : engine.listUsers()) {
-                if ("b".equals(up.getName())) {
-                    upb = up;
-                }
-            }
-            assertEquals(1, engine.listGroups(upa).size());
-            assertEquals(2, engine.listGroups(upb).size());
-
-            GroupPrincipal gp = engine.listGroups(upa).iterator().next();
-            engine.deleteGroupRole("g", "role2");
-            assertEquals(1, engine.listRoles(gp).size());
-            assertEquals("role3", engine.listRoles(gp).iterator().next().getName());
-
-            // check that the user roles are reported correctly
-            assertEquals("role2 should still be there as it was added to the user directly too", 3, engine.listRoles(upa).size());
-            boolean foundR1_5 = false;
-            boolean foundR2_5 = false;
-            boolean foundR3_5 = false;
-            for (RolePrincipal rp : engine.listRoles(upa)) {
-                if ("role1".equals(rp.getName())) {
-                    foundR1_5 = true;
-                } else if ("role2".equals(rp.getName())) {
-                    foundR2_5 = true;
-                } else if ("role3".equals(rp.getName())) {
-                    foundR3_5 = true;
-                }
-            }
-            assertTrue(foundR1_5);
-            assertTrue(foundR2_5);
-            assertTrue(foundR3_5);
-
-            assertEquals(2, engine.listRoles(upb).size());
-            boolean foundR3_6 = false;
-            boolean foundR4_6 = false;
-            for (RolePrincipal rp : engine.listRoles(upb)) {
-                if ("role3".equals(rp.getName())) {
-                    foundR3_6 = true;
-                } else if ("role4".equals(rp.getName())) {
-                    foundR4_6 = true;
-                }
-            }
-            assertTrue(foundR3_6);
-            assertTrue(foundR4_6);
-
-            engine.deleteGroup("b", "g");
-            engine.deleteGroup("b", "g2");
-            assertEquals(0, engine.listRoles(upb).size());
-
-            engine.deleteUser("b");
-            engine.deleteUser("a");
-            assertEquals("Properties should be empty now", 0, p.size());
-        } finally {
-            if (!f.delete()) {
-                fail("Could not delete temporary file: " + f);
-            }
+        Properties p = new Properties(f);
+
+        PropertiesBackingEngine engine = new PropertiesBackingEngine(p);
+        engine.addUser("a", "aa");
+        engine.addUser("b", "bb");
+
+        engine.addRole("a", "role1");
+        engine.addRole("a", "role2");
+        
+        UserPrincipal upa = getUser(engine, "a");
+        Assert.assertThat(names(engine.listRoles(upa)), containsInAnyOrder("role1", "role2"));
+
+        engine.addGroup("a", "g");
+        engine.addGroupRole("g", "role2");
+        engine.addGroupRole("g", "role3");
+        engine.addGroup("b", "g");
+        engine.addGroup("b", "g2");
+        engine.addGroupRole("g2", "role4");
+
+        Assert.assertThat(names(engine.listUsers()), containsInAnyOrder("a", "b"));
+        Assert.assertThat(names(engine.listRoles(upa)), containsInAnyOrder("role1", "role2", "role3"));
+
+        checkLoading();
+
+        // removing some stuff
+        UserPrincipal upb = getUser(engine, "b");
+        assertEquals(1, engine.listGroups(upa).size());
+        assertEquals(2, engine.listGroups(upb).size());
+
+        GroupPrincipal gp = engine.listGroups(upa).iterator().next();
+        engine.deleteGroupRole("g", "role2");
+        Assert.assertThat(names(engine.listRoles(gp)), containsInAnyOrder("role3"));
+
+        // role2 should still be there as it was added to the user directly too
+        Assert.assertThat(names(engine.listRoles(upa)), containsInAnyOrder("role1", "role2", "role3"));
+        Assert.assertThat(names(engine.listRoles(upb)), containsInAnyOrder("role3", "role4"));
+
+        engine.deleteGroup("b", "g");
+        engine.deleteGroup("b", "g2");
+        assertEquals(0, engine.listRoles(upb).size());
+
+        engine.deleteUser("b");
+        engine.deleteUser("a");
+        assertEquals("Properties should be empty now", 0, p.size());
+    }
+
+    private void checkLoading() throws IOException {
+        PropertiesBackingEngine engine = new PropertiesBackingEngine(new Properties(f));
+        assertEquals(2, engine.listUsers().size());
+        UserPrincipal upa_2 = getUser(engine, "a");
+        UserPrincipal upb_2 = getUser(engine, "b");
+ 
+        assertEquals(3, engine.listRoles(upa_2).size());
+        Assert.assertThat(names(engine.listRoles(upa_2)), containsInAnyOrder("role1", "role2", "role3"));
+
+        assertEquals(3, engine.listRoles(upb_2).size());
+        Assert.assertThat(names(engine.listRoles(upb_2)), containsInAnyOrder("role2", "role3", "role4"));
+    }
+    
+    private UserPrincipal getUser(PropertiesBackingEngine engine, String name) {
+        List<UserPrincipal> matchingUsers = engine.listUsers().stream()
+            .filter(user->name.equals(user.getName())).collect(Collectors.toList());
+        Assert.assertFalse("User with name " + name + " was not found", matchingUsers.isEmpty());
+        return matchingUsers.iterator().next();
+    }
+
+    @After
+    public void cleanup() {
+        if (!f.delete()) {
+            fail("Could not delete temporary file: " + f);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/01d0aae9/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModuleTest.java
index 5d69d20..26d90a7 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModuleTest.java
@@ -16,14 +16,16 @@
  */
 package org.apache.karaf.jaas.modules.properties;
 
+import static org.apache.karaf.jaas.modules.PrincipalAssert.assertPrincipalNamed;
+
 import java.io.File;
 import java.io.IOException;
-import java.security.Principal;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.security.auth.Subject;
-import javax.security.auth.callback.*;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.login.FailedLoginException;
 import javax.security.auth.login.LoginException;
 
@@ -59,19 +61,8 @@ public class PropertiesLoginModuleTest {
 
             Assert.assertEquals(2, subject.getPrincipals().size());
 
-            boolean foundUser = false;
-            boolean foundRole = false;
-            for (Principal pr : subject.getPrincipals()) {
-                if (pr instanceof UserPrincipal) {
-                    Assert.assertEquals("abc", pr.getName());
-                    foundUser = true;
-                } else if (pr instanceof RolePrincipal) {
-                    Assert.assertEquals("myrole", pr.getName());
-                    foundRole = true;
-                }
-            }
-            Assert.assertTrue(foundUser);
-            Assert.assertTrue(foundRole);
+            assertPrincipalNamed(subject, UserPrincipal.class, "abc");
+            assertPrincipalNamed(subject, RolePrincipal.class, "myrole");
 
             Assert.assertTrue(module.logout());
             Assert.assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -131,24 +122,9 @@ public class PropertiesLoginModuleTest {
             Assert.assertTrue(module.commit());
 
             Assert.assertEquals(3, subject.getPrincipals().size());
-            boolean foundUser = false;
-            boolean foundRole = false;
-            boolean foundGroup = false;
-            for (Principal pr : subject.getPrincipals()) {
-                if (pr instanceof UserPrincipal) {
-                    Assert.assertEquals("pqr", pr.getName());
-                    foundUser = true;
-                } else if (pr instanceof GroupPrincipal) {
-                    Assert.assertEquals("group1", pr.getName());
-                    foundGroup = true;
-                } else if (pr instanceof RolePrincipal) {
-                    Assert.assertEquals("r1", pr.getName());
-                    foundRole = true;
-                }
-            }
-            Assert.assertTrue(foundUser);
-            Assert.assertTrue(foundGroup);
-            Assert.assertTrue(foundRole);
+            assertPrincipalNamed(subject, UserPrincipal.class, "pqr");
+            assertPrincipalNamed(subject, GroupPrincipal.class, "group1");
+            assertPrincipalNamed(subject, RolePrincipal.class, "r1");
         } finally {
             if (!f.delete()) {
                 Assert.fail("Could not delete temporary file: " + f);