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 11:41:26 UTC

[1/5] karaf git commit: Use matcher in tests

Repository: karaf
Updated Branches:
  refs/heads/master 01d0aae9b -> 0853a353a


Use matcher in tests


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

Branch: refs/heads/master
Commit: 6aa806d2ad0df30d162693f8daa013dc6b0f110f
Parents: 01d0aae
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 11:34:37 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 11:34:37 2017 +0200

----------------------------------------------------------------------
 .../karaf/jaas/modules/PrincipalAssert.java     | 40 ------------
 .../karaf/jaas/modules/PrincipalHelper.java     | 29 +++++++++
 .../karaf/jaas/modules/ldap/LdapCacheTest.java  | 67 +++++++++-----------
 .../properties/PropertiesBackingEngineTest.java |  2 +-
 .../properties/PropertiesLoginModuleTest.java   | 14 ++--
 5 files changed, 67 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/6aa806d2/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
deleted file mode 100644
index c19fd2b..0000000
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalAssert.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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/6aa806d2/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalHelper.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalHelper.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalHelper.java
new file mode 100644
index 0000000..9893193
--- /dev/null
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/PrincipalHelper.java
@@ -0,0 +1,29 @@
+/*
+ *  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.Collection;
+import java.util.List;
+
+public class PrincipalHelper {
+    
+    public static List<String> names(Collection<? extends Principal> principals) {
+        return principals.stream().map(r->r.getName()).collect(toList());
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/6aa806d2/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCacheTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCacheTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCacheTest.java
index 1b88a16..b9d252d 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCacheTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCacheTest.java
@@ -15,6 +15,16 @@
  */
 package org.apache.karaf.jaas.modules.ldap;
 
+import static org.apache.karaf.jaas.modules.PrincipalHelper.names;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
 import javax.naming.directory.BasicAttribute;
@@ -22,9 +32,6 @@ import javax.naming.directory.BasicAttributes;
 import javax.naming.directory.DirContext;
 import javax.security.auth.Subject;
 import javax.security.auth.callback.CallbackHandler;
-import java.io.File;
-import java.io.IOException;
-import java.security.Principal;
 
 import org.apache.directory.server.annotations.CreateLdapServer;
 import org.apache.directory.server.annotations.CreateTransport;
@@ -42,9 +49,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 @RunWith(FrameworkRunner.class)
 @CreateLdapServer(transports = {@CreateTransport(protocol = "LDAP")})
 @CreateDS(name = "LdapLoginModuleTest-class",
@@ -78,42 +82,16 @@ public class LdapCacheTest extends AbstractLdapTestUnit {
 
         assertEquals(2, subject.getPrincipals().size());
 
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof UserPrincipal) {
-                assertEquals("admin", pr.getName());
-                foundUser = true;
-            } else if (pr instanceof RolePrincipal) {
-                assertEquals("admin", pr.getName());
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("admin"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
 
-        DirContext context = new LDAPCache(new LDAPOptions(options)).open();
-
-        // Make "admin" user a member of a new "another" group
-
-//        dn: cn=admin,ou=groups,dc=example,dc=com
-//        objectClass: top
-//        objectClass: groupOfNames
-//        cn: admin
-//        member: cn=admin,ou=people,dc=example,dc=com
-        Attributes entry = new BasicAttributes();
-        entry.put(new BasicAttribute("cn", "another"));
-        Attribute oc = new BasicAttribute("objectClass");
-        oc.add("top");
-        oc.add("groupOfNames");
-        entry.put(oc);
-        Attribute mb = new BasicAttribute("member");
-        mb.add("cn=admin,ou=people,dc=example,dc=com");
-        entry.put(mb);
-        context.createSubcontext("cn=another,ou=groups,dc=example,dc=com", entry);
+        LDAPCache ldapCache = new LDAPCache(new LDAPOptions(options));
+        DirContext context = ldapCache.open();
+        addUserToGroup(context, "cn=admin,ou=people,dc=example,dc=com", "another");
+        ldapCache.close();
 
         Thread.sleep(100);
 
@@ -126,6 +104,19 @@ public class LdapCacheTest extends AbstractLdapTestUnit {
         assertEquals("Postcondition", 3, subject.getPrincipals().size());
     }
 
+    private void addUserToGroup(DirContext context, String userCn, String group) throws NamingException {
+        Attributes entry = new BasicAttributes();
+        entry.put(new BasicAttribute("cn", group));
+        Attribute oc = new BasicAttribute("objectClass");
+        oc.add("top");
+        oc.add("groupOfNames");
+        entry.put(oc);
+        Attribute mb = new BasicAttribute("member");
+        mb.add(userCn);
+        entry.put(mb);
+        context.createSubcontext("cn=" + group +",ou=groups,dc=example,dc=com", entry);
+    }
+
     protected Properties ldapLoginModuleOptions() throws IOException {
         String basedir = System.getProperty("basedir");
         if (basedir == null) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/6aa806d2/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 0c811da..c1360d6 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,7 +16,7 @@
  */
 package org.apache.karaf.jaas.modules.properties;
 
-import static org.apache.karaf.jaas.modules.PrincipalAssert.names;
+import static org.apache.karaf.jaas.modules.PrincipalHelper.names;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;

http://git-wip-us.apache.org/repos/asf/karaf/blob/6aa806d2/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 26d90a7..9d43fba 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,7 +16,9 @@
  */
 package org.apache.karaf.jaas.modules.properties;
 
-import static org.apache.karaf.jaas.modules.PrincipalAssert.assertPrincipalNamed;
+import static org.apache.karaf.jaas.modules.PrincipalHelper.names;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.junit.Assert.assertThat;
 
 import java.io.File;
 import java.io.IOException;
@@ -61,8 +63,8 @@ public class PropertiesLoginModuleTest {
 
             Assert.assertEquals(2, subject.getPrincipals().size());
 
-            assertPrincipalNamed(subject, UserPrincipal.class, "abc");
-            assertPrincipalNamed(subject, RolePrincipal.class, "myrole");
+            assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("abc"));
+            assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("myrole"));
 
             Assert.assertTrue(module.logout());
             Assert.assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -122,9 +124,9 @@ public class PropertiesLoginModuleTest {
             Assert.assertTrue(module.commit());
 
             Assert.assertEquals(3, subject.getPrincipals().size());
-            assertPrincipalNamed(subject, UserPrincipal.class, "pqr");
-            assertPrincipalNamed(subject, GroupPrincipal.class, "group1");
-            assertPrincipalNamed(subject, RolePrincipal.class, "r1");
+            assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("pqr"));
+            assertThat(names(subject.getPrincipals(GroupPrincipal.class)), containsInAnyOrder("group1"));
+            assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("r1"));
         } finally {
             if (!f.delete()) {
                 Assert.fail("Could not delete temporary file: " + f);


[3/5] karaf git commit: Use simple PrintStream

Posted by cs...@apache.org.
Use simple PrintStream


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

Branch: refs/heads/master
Commit: e973e3c73cd431492bfc6ed6f1fb336f4f71ceaa
Parents: 71b136e
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 11:50:58 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 11:50:58 2017 +0200

----------------------------------------------------------------------
 .../modules/ldap/GSSAPILdapLoginModuleTest.java | 77 +++++++++-----------
 1 file changed, 33 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/e973e3c7/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
index b0152f1..11daa72 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
@@ -14,9 +14,24 @@
  */
 package org.apache.karaf.jaas.modules.ldap;
 
-import org.apache.commons.io.FileUtils;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.security.Principal;
+import java.util.Collections;
+
+import javax.security.auth.Subject;
+import javax.security.auth.kerberos.KerberosPrincipal;
+import javax.security.auth.kerberos.KerberosTicket;
+import javax.security.auth.login.LoginException;
+
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.SystemUtils;
 import org.apache.directory.api.ldap.model.constants.SupportedSaslMechanisms;
 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
 import org.apache.directory.api.ldap.model.entry.Entry;
@@ -53,22 +68,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import javax.security.auth.Subject;
-import javax.security.auth.kerberos.KerberosPrincipal;
-import javax.security.auth.kerberos.KerberosTicket;
-import javax.security.auth.login.LoginException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.security.Principal;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 @RunWith(FrameworkRunner.class)
 @CreateDS(name = "GSSAPILdapLoginModuleTest-class",
         partitions =
@@ -317,34 +316,24 @@ public class GSSAPILdapLoginModuleTest extends AbstractKerberosITest {
 
     private String createKrb5Conf(ChecksumType checksumType, EncryptionType encryptionType, boolean isTcp) throws IOException {
         File file = folder.newFile("krb5.conf");
-
-        String data = "";
-
-        data += "[libdefaults]" + SystemUtils.LINE_SEPARATOR;
-        data += "default_realm = " + REALM + SystemUtils.LINE_SEPARATOR;
-        data += "default_tkt_enctypes = " + encryptionType.getName() + SystemUtils.LINE_SEPARATOR;
-        data += "default_tgs_enctypes = " + encryptionType.getName() + SystemUtils.LINE_SEPARATOR;
-        data += "permitted_enctypes = " + encryptionType.getName() + SystemUtils.LINE_SEPARATOR;
-        //        data += "default_checksum = " + checksumType.getName() + SystemUtils.LINE_SEPARATOR;
-        //        data += "ap_req_checksum_type = " + checksumType.getName() + SystemUtils.LINE_SEPARATOR;
-        data += "default-checksum_type = " + checksumType.getName() + SystemUtils.LINE_SEPARATOR;
-
+        PrintStream out = new PrintStream(file);
+        out.println("[libdefaults]");
+        out.println("default_realm = " + REALM);
+        out.println("default_tkt_enctypes = " + encryptionType.getName());
+        out.println("default_tgs_enctypes = " + encryptionType.getName());
+        out.println("permitted_enctypes = " + encryptionType.getName());
+        out.println("default-checksum_type = " + checksumType.getName());
         if (isTcp) {
-            data += "udp_preference_limit = 1" + SystemUtils.LINE_SEPARATOR;
+            out.println("udp_preference_limit = 1");
         }
-
-
-        data += "[realms]" + SystemUtils.LINE_SEPARATOR;
-        data += REALM + " = {" + SystemUtils.LINE_SEPARATOR;
-        data += "kdc = " + HOSTNAME + ":" + kdcServer.getTransports()[0].getPort() + SystemUtils.LINE_SEPARATOR;
-        data += "}" + SystemUtils.LINE_SEPARATOR;
-
-        data += "[domain_realm]" + SystemUtils.LINE_SEPARATOR;
-        data += "." + Strings.lowerCaseAscii(REALM) + " = " + REALM + SystemUtils.LINE_SEPARATOR;
-        data += Strings.lowerCaseAscii(REALM) + " = " + REALM + SystemUtils.LINE_SEPARATOR;
-
-        FileUtils.writeStringToFile(file, data, Charset.defaultCharset());
-
+        out.println("[realms]");
+        out.println(REALM + " = {");
+        out.println("kdc = " + HOSTNAME + ":" + kdcServer.getTransports()[0].getPort());
+        out.println("}");
+        out.println("[domain_realm]");
+        out.println("." + Strings.lowerCaseAscii(REALM) + " = " + REALM);
+        out.println(Strings.lowerCaseAscii(REALM) + " = " + REALM);
+        out.close();
         return file.getAbsolutePath();
     }
 


[5/5] karaf git commit: Extract common code in test

Posted by cs...@apache.org.
Extract common code in test


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

Branch: refs/heads/master
Commit: 0853a353afa4c8eabad38327e3943b1543fd4c0a
Parents: 3b72701
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 13:41:17 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 13:41:17 2017 +0200

----------------------------------------------------------------------
 .../jaas/modules/krb5/KarafKerberosITest.java   |  51 ++++++++++
 .../jaas/modules/krb5/Krb5LoginModuleTest.java  | 102 +++----------------
 .../modules/ldap/GSSAPILdapLoginModuleTest.java |  29 +-----
 3 files changed, 66 insertions(+), 116 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/0853a353/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/KarafKerberosITest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/KarafKerberosITest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/KarafKerberosITest.java
new file mode 100644
index 0000000..0b57930
--- /dev/null
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/KarafKerberosITest.java
@@ -0,0 +1,51 @@
+/*
+ *  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.krb5;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.apache.directory.api.util.Strings;
+import org.apache.directory.server.kerberos.kdc.AbstractKerberosITest;
+import org.apache.directory.shared.kerberos.codec.types.EncryptionType;
+import org.apache.directory.shared.kerberos.crypto.checksum.ChecksumType;
+
+public class KarafKerberosITest extends AbstractKerberosITest {
+
+    protected String createKrb5Conf(ChecksumType checksumType, EncryptionType encryptionType, boolean isTcp) throws IOException {
+        File file = folder.newFile("krb5.conf");
+        PrintStream out = new PrintStream(file);
+        out.println("[libdefaults]");
+        out.println("default_realm = " + REALM);
+        out.println("default_tkt_enctypes = " + encryptionType.getName());
+        out.println("default_tgs_enctypes = " + encryptionType.getName());
+        out.println("permitted_enctypes = " + encryptionType.getName());
+        out.println("default-checksum_type = " + checksumType.getName());
+        if (isTcp) {
+            out.println("udp_preference_limit = 1");
+        }
+        out.println("[realms]");
+        out.println(REALM + " = {");
+        out.println("kdc = " + HOSTNAME + ":" + kdcServer.getTransports()[0].getPort());
+        out.println("}");
+        out.println("[domain_realm]");
+        out.println("." + Strings.lowerCaseAscii(REALM) + " = " + REALM);
+        out.println(Strings.lowerCaseAscii(REALM) + " = " + REALM);
+        out.close();
+        return file.getAbsolutePath();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/0853a353/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/Krb5LoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/Krb5LoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/Krb5LoginModuleTest.java
index e6caf7b..d88955d 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/Krb5LoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/krb5/Krb5LoginModuleTest.java
@@ -16,13 +16,10 @@
  */
 package org.apache.karaf.jaas.modules.krb5;
 
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.SystemUtils;
 import org.apache.directory.api.ldap.model.constants.SupportedSaslMechanisms;
 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
 import org.apache.directory.api.ldap.model.entry.Entry;
 import org.apache.directory.api.ldap.model.exception.LdapException;
-import org.apache.directory.api.util.Strings;
 import org.apache.directory.ldap.client.api.Krb5LoginConfiguration;
 import org.apache.directory.server.annotations.CreateKdcServer;
 import org.apache.directory.server.annotations.CreateLdapServer;
@@ -35,7 +32,6 @@ import org.apache.directory.server.core.annotations.CreateIndex;
 import org.apache.directory.server.core.annotations.CreatePartition;
 import org.apache.directory.server.core.integ.FrameworkRunner;
 import org.apache.directory.server.core.kerberos.KeyDerivationInterceptor;
-import org.apache.directory.server.kerberos.kdc.AbstractKerberosITest;
 import org.apache.directory.server.kerberos.kdc.KerberosTestUtils;
 import org.apache.directory.server.kerberos.shared.crypto.encryption.KerberosKeyFactory;
 import org.apache.directory.server.kerberos.shared.keytab.Keytab;
@@ -65,8 +61,6 @@ import javax.security.auth.kerberos.KerberosTicket;
 import javax.security.auth.login.Configuration;
 import javax.security.auth.login.LoginException;
 import java.io.File;
-import java.io.IOException;
-import java.security.Principal;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -75,8 +69,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.apache.karaf.jaas.modules.PrincipalHelper.names;
+import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertThat;
 
 @RunWith(FrameworkRunner.class)
 @CreateDS(name = "Krb5LoginModuleTest-class",
@@ -130,8 +126,7 @@ import static org.junit.Assert.assertTrue;
         "objectClass: organizationalUnit",
         "ou: users"
 })
-public class Krb5LoginModuleTest extends AbstractKerberosITest {
-
+public class Krb5LoginModuleTest extends KarafKerberosITest {
 
     @Before
     public void setUp() throws Exception {
@@ -155,7 +150,6 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
 
     @Test
     public void testKeytabSuccess() throws Exception {
-
         Map<String, Object> props = new HashMap<>();
         props.put("debug", "true");
         props.put("useKeyTab", "true");
@@ -164,11 +158,9 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
         props.put("doNotPrompt", "true");
         props.put("storeKey", "true");
         props.put("detailed.login.exception", "true");
-
-
         Subject subject = new Subject();
-
         Krb5LoginModule module = new Krb5LoginModule();
+
         module.initialize(subject, null, null, props);
 
         assertEquals("Precondition", 0, subject.getPrincipals().size());
@@ -177,27 +169,11 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
         Assert.assertTrue(module.commit());
 
         assertEquals(1, subject.getPrincipals().size());
+        assertThat(names(subject.getPrincipals(KerberosPrincipal.class)), containsInAnyOrder("hnelson@EXAMPLE.COM"));
 
-        boolean foundUser = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof KerberosPrincipal) {
-                assertEquals("hnelson@EXAMPLE.COM", pr.getName());
-                foundUser = true;
-                break;
-            }
-        }
-        assertTrue(foundUser);
-
-        boolean foundToken = false;
-        for (Object crd : subject.getPrivateCredentials()) {
-            if (crd instanceof KerberosTicket) {
-                assertEquals("hnelson@EXAMPLE.COM", ((KerberosTicket) crd).getClient().getName());
-                assertEquals("krbtgt/EXAMPLE.COM@EXAMPLE.COM", ((KerberosTicket) crd).getServer().getName());
-                foundToken = true;
-                break;
-            }
-        }
-        assertTrue(foundToken);
+        KerberosTicket ticket = subject.getPrivateCredentials(KerberosTicket.class).iterator().next();
+        assertEquals("hnelson@EXAMPLE.COM", ticket.getClient().getName());
+        assertEquals("krbtgt/EXAMPLE.COM@EXAMPLE.COM", ticket.getServer().getName());
 
         Assert.assertTrue(module.logout());
 
@@ -215,9 +191,7 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
         props.put("storeKey", "true");
         props.put("detailed.login.exception", "true");
 
-
         Subject subject = new Subject();
-
         Krb5LoginModule module = new Krb5LoginModule();
         module.initialize(subject, null, null, props);
 
@@ -230,7 +204,6 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
     @Test
     public void testLoginSuccess() throws Exception {
         Subject subject = new Subject();
-
         Krb5LoginModule module = new Krb5LoginModule();
         module.initialize(subject, new NamePasswordCallbackHandler("hnelson", "secret"), null, new HashMap<>());
 
@@ -240,27 +213,11 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
         Assert.assertTrue(module.commit());
 
         assertEquals(1, subject.getPrincipals().size());
+        assertThat(names(subject.getPrincipals(KerberosPrincipal.class)), containsInAnyOrder("hnelson@EXAMPLE.COM"));
 
-        boolean foundUser = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof KerberosPrincipal) {
-                assertEquals("hnelson@EXAMPLE.COM", pr.getName());
-                foundUser = true;
-                break;
-            }
-        }
-        assertTrue(foundUser);
-
-        boolean foundToken = false;
-        for (Object crd : subject.getPrivateCredentials()) {
-            if (crd instanceof KerberosTicket) {
-                assertEquals("hnelson@EXAMPLE.COM", ((KerberosTicket) crd).getClient().getName());
-                assertEquals("krbtgt/EXAMPLE.COM@EXAMPLE.COM", ((KerberosTicket) crd).getServer().getName());
-                foundToken = true;
-                break;
-            }
-        }
-        assertTrue(foundToken);
+        KerberosTicket ticket = subject.getPrivateCredentials(KerberosTicket.class).iterator().next();
+        assertEquals("hnelson@EXAMPLE.COM", ticket.getClient().getName());
+        assertEquals("krbtgt/EXAMPLE.COM@EXAMPLE.COM", ticket.getServer().getName());
 
         Assert.assertTrue(module.logout());
 
@@ -328,39 +285,6 @@ public class Krb5LoginModuleTest extends AbstractKerberosITest {
         conn.add(entry);
     }
 
-    private String createKrb5Conf(ChecksumType checksumType, EncryptionType encryptionType, boolean isTcp) throws IOException {
-        File file = folder.newFile("krb5.conf");
-
-        String data = "";
-
-        data += "[libdefaults]" + SystemUtils.LINE_SEPARATOR;
-        data += "default_realm = " + REALM + SystemUtils.LINE_SEPARATOR;
-        data += "default_tkt_enctypes = " + encryptionType.getName() + SystemUtils.LINE_SEPARATOR;
-        data += "default_tgs_enctypes = " + encryptionType.getName() + SystemUtils.LINE_SEPARATOR;
-        data += "permitted_enctypes = " + encryptionType.getName() + SystemUtils.LINE_SEPARATOR;
-        //        data += "default_checksum = " + checksumType.getName() + SystemUtils.LINE_SEPARATOR;
-        //        data += "ap_req_checksum_type = " + checksumType.getName() + SystemUtils.LINE_SEPARATOR;
-        data += "default-checksum_type = " + checksumType.getName() + SystemUtils.LINE_SEPARATOR;
-
-        if (isTcp) {
-            data += "udp_preference_limit = 1" + SystemUtils.LINE_SEPARATOR;
-        }
-
-
-        data += "[realms]" + SystemUtils.LINE_SEPARATOR;
-        data += REALM + " = {" + SystemUtils.LINE_SEPARATOR;
-        data += "kdc = " + HOSTNAME + ":" + kdcServer.getTransports()[0].getPort() + SystemUtils.LINE_SEPARATOR;
-        data += "}" + SystemUtils.LINE_SEPARATOR;
-
-        data += "[domain_realm]" + SystemUtils.LINE_SEPARATOR;
-        data += "." + Strings.lowerCaseAscii(REALM) + " = " + REALM + SystemUtils.LINE_SEPARATOR;
-        data += Strings.lowerCaseAscii(REALM) + " = " + REALM + SystemUtils.LINE_SEPARATOR;
-
-        FileUtils.writeStringToFile(file, data);
-
-        return file.getAbsolutePath();
-    }
-
     private KeytabEntry createKeytabEntry() throws ParseException {
         String principalName = "hnelson@EXAMPLE.COM";
         int principalType = 1;

http://git-wip-us.apache.org/repos/asf/karaf/blob/0853a353/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
index 11daa72..b664bc3 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
@@ -22,7 +22,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.security.Principal;
 import java.util.Collections;
 
@@ -36,7 +35,6 @@ import org.apache.directory.api.ldap.model.constants.SupportedSaslMechanisms;
 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
 import org.apache.directory.api.ldap.model.entry.Entry;
 import org.apache.directory.api.ldap.model.exception.LdapException;
-import org.apache.directory.api.util.Strings;
 import org.apache.directory.server.annotations.CreateKdcServer;
 import org.apache.directory.server.annotations.CreateLdapServer;
 import org.apache.directory.server.annotations.CreateTransport;
@@ -48,7 +46,6 @@ import org.apache.directory.server.core.annotations.CreateIndex;
 import org.apache.directory.server.core.annotations.CreatePartition;
 import org.apache.directory.server.core.integ.FrameworkRunner;
 import org.apache.directory.server.core.kerberos.KeyDerivationInterceptor;
-import org.apache.directory.server.kerberos.kdc.AbstractKerberosITest;
 import org.apache.directory.server.kerberos.kdc.KerberosTestUtils;
 import org.apache.directory.server.ldap.handlers.sasl.cramMD5.CramMd5MechanismHandler;
 import org.apache.directory.server.ldap.handlers.sasl.digestMD5.DigestMd5MechanismHandler;
@@ -63,6 +60,7 @@ import org.apache.felix.utils.properties.Properties;
 import org.apache.karaf.jaas.boot.principal.RolePrincipal;
 import org.apache.karaf.jaas.boot.principal.UserPrincipal;
 import org.apache.karaf.jaas.modules.NamePasswordCallbackHandler;
+import org.apache.karaf.jaas.modules.krb5.KarafKerberosITest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -131,7 +129,7 @@ import org.junit.runner.RunWith;
         "cn: admin",
         "member: uid=hnelson,ou=users,dc=example,dc=com"
 })
-public class GSSAPILdapLoginModuleTest extends AbstractKerberosITest {
+public class GSSAPILdapLoginModuleTest extends KarafKerberosITest {
 
     private static boolean loginConfigUpdated;
 
@@ -314,29 +312,6 @@ public class GSSAPILdapLoginModuleTest extends AbstractKerberosITest {
                 "ldap", "randall", servicePrincipal);
     }
 
-    private String createKrb5Conf(ChecksumType checksumType, EncryptionType encryptionType, boolean isTcp) throws IOException {
-        File file = folder.newFile("krb5.conf");
-        PrintStream out = new PrintStream(file);
-        out.println("[libdefaults]");
-        out.println("default_realm = " + REALM);
-        out.println("default_tkt_enctypes = " + encryptionType.getName());
-        out.println("default_tgs_enctypes = " + encryptionType.getName());
-        out.println("permitted_enctypes = " + encryptionType.getName());
-        out.println("default-checksum_type = " + checksumType.getName());
-        if (isTcp) {
-            out.println("udp_preference_limit = 1");
-        }
-        out.println("[realms]");
-        out.println(REALM + " = {");
-        out.println("kdc = " + HOSTNAME + ":" + kdcServer.getTransports()[0].getPort());
-        out.println("}");
-        out.println("[domain_realm]");
-        out.println("." + Strings.lowerCaseAscii(REALM) + " = " + REALM);
-        out.println(Strings.lowerCaseAscii(REALM) + " = " + REALM);
-        out.close();
-        return file.getAbsolutePath();
-    }
-
     private void createPrincipal(String rdn, String sn, String cn,
                                  String uid, String userPassword, String principalName) throws LdapException {
         Entry entry = new DefaultEntry();


[2/5] karaf git commit: Replace deprecated call

Posted by cs...@apache.org.
Replace deprecated call


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

Branch: refs/heads/master
Commit: 71b136ed8307f6470e32874dfed627844c9fc666
Parents: 6aa806d
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 11:44:38 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 11:44:38 2017 +0200

----------------------------------------------------------------------
 .../apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/71b136ed/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
index 47ea240..b0152f1 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/GSSAPILdapLoginModuleTest.java
@@ -61,6 +61,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.charset.Charset;
 import java.security.Principal;
 import java.util.Collections;
 
@@ -342,7 +343,7 @@ public class GSSAPILdapLoginModuleTest extends AbstractKerberosITest {
         data += "." + Strings.lowerCaseAscii(REALM) + " = " + REALM + SystemUtils.LINE_SEPARATOR;
         data += Strings.lowerCaseAscii(REALM) + " = " + REALM + SystemUtils.LINE_SEPARATOR;
 
-        FileUtils.writeStringToFile(file, data);
+        FileUtils.writeStringToFile(file, data, Charset.defaultCharset());
 
         return file.getAbsolutePath();
     }


[4/5] karaf git commit: Simplify assertions

Posted by cs...@apache.org.
Simplify assertions


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

Branch: refs/heads/master
Commit: 3b72701cdbf06961d2185348b29cbfd5e1f92763
Parents: e973e3c
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 11:52:11 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 11:52:11 2017 +0200

----------------------------------------------------------------------
 .../modules/ldap/LdapCaseInsensitiveDNTest.java |  20 +--
 .../jaas/modules/ldap/LdapLoginModuleTest.java  | 131 +++----------------
 2 files changed, 23 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/3b72701c/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCaseInsensitiveDNTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCaseInsensitiveDNTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCaseInsensitiveDNTest.java
index bcf460d..8e3a56e 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCaseInsensitiveDNTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapCaseInsensitiveDNTest.java
@@ -15,12 +15,14 @@
  */
 package org.apache.karaf.jaas.modules.ldap;
 
+import static org.apache.karaf.jaas.modules.PrincipalHelper.names;
+import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
-import java.security.Principal;
 
 import javax.security.auth.Subject;
 
@@ -65,20 +67,8 @@ public class LdapCaseInsensitiveDNTest extends LdapLoginModuleTest {
         assertTrue(module.commit());
 
         assertEquals(2, subject.getPrincipals().size());
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof UserPrincipal) {
-                assertEquals("admin", pr.getName());
-                foundUser = true;
-            } else if (pr instanceof RolePrincipal) {
-                assertEquals("admin", pr.getName());
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("admin"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());

http://git-wip-us.apache.org/repos/asf/karaf/blob/3b72701c/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
index 140d5df..847dcf3 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
@@ -27,6 +27,7 @@ import org.apache.karaf.jaas.boot.principal.RolePrincipal;
 import org.apache.karaf.jaas.boot.principal.UserPrincipal;
 import org.apache.karaf.jaas.modules.NamePasswordCallbackHandler;
 import org.apache.log4j.Level;
+import org.hamcrest.Matchers;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -37,13 +38,12 @@ import javax.security.auth.login.LoginException;
 
 import java.io.File;
 import java.io.IOException;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
+import static org.apache.karaf.jaas.modules.PrincipalHelper.names;
+import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
@@ -79,20 +79,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(2, subject.getPrincipals().size());
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof UserPrincipal) {
-                assertEquals("admin", pr.getName());
-                foundUser = true;
-            } else if (pr instanceof RolePrincipal) {
-                assertEquals("admin", pr.getName());
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("admin"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -119,21 +107,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(1, subject.getPrincipals().size());
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof UserPrincipal) {
-                assertEquals("cheese", pr.getName());
-                foundUser = true;
-            } else if (pr instanceof RolePrincipal) {
-                assertEquals("admin", pr.getName());
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        // cheese is not an admin so no roles should be returned
-        assertFalse(foundRole);
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("cheese"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), Matchers.empty());
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -152,21 +127,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(1, subject.getPrincipals().size());
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof UserPrincipal) {
-                assertEquals("cheese", pr.getName());
-                foundUser = true;
-            } else if (pr instanceof RolePrincipal) {
-                assertEquals("admin", pr.getName());
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        // cheese is not an admin so no roles should be returned
-        assertFalse(foundRole);
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("cheese"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), Matchers.empty());
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -234,20 +196,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(2, subject.getPrincipals().size());
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal principal : subject.getPrincipals()) {
-            if (principal instanceof UserPrincipal) {
-                assertEquals("admin", principal.getName());
-                foundUser = true;
-            } else if (principal instanceof RolePrincipal) {
-                assertEquals("karaf", principal.getName());
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("karaf"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -266,23 +216,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(4, subject.getPrincipals().size());
-
-        final List<String> roles = new ArrayList<>(Arrays.asList("karaf", "test", "another"));
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal principal : subject.getPrincipals()) {
-            if (principal instanceof UserPrincipal) {
-                assertEquals("admin", principal.getName());
-                foundUser = true;
-            } else if (principal instanceof RolePrincipal) {
-                assertTrue(roles.remove(principal.getName()));
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
-        assertTrue(roles.isEmpty());
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("karaf", "test", "another"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -301,23 +236,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(4, subject.getPrincipals().size());
-
-        final List<String> roles = new ArrayList<>(Arrays.asList("karaf", "test", "another"));
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal pr : subject.getPrincipals()) {
-            if (pr instanceof UserPrincipal) {
-                assertEquals("admin", pr.getName());
-                foundUser = true;
-            } else if (pr instanceof RolePrincipal) {
-                assertTrue(roles.remove(pr.getName()));
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
-        assertTrue(roles.isEmpty());
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("karaf", "test", "another"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
@@ -340,23 +260,8 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
         assertTrue(module.commit());
 
         assertEquals(2, subject.getPrincipals().size());
-
-        final List<String> roles = new ArrayList<>(Arrays.asList("karaf"));
-
-        boolean foundUser = false;
-        boolean foundRole = false;
-        for (Principal principal : subject.getPrincipals()) {
-            if (principal instanceof UserPrincipal) {
-                assertEquals("admin", principal.getName());
-                foundUser = true;
-            } else if (principal instanceof RolePrincipal) {
-                assertTrue(roles.remove(principal.getName()));
-                foundRole = true;
-            }
-        }
-        assertTrue(foundUser);
-        assertTrue(foundRole);
-        assertTrue(roles.isEmpty());
+        assertThat(names(subject.getPrincipals(UserPrincipal.class)), containsInAnyOrder("admin"));
+        assertThat(names(subject.getPrincipals(RolePrincipal.class)), containsInAnyOrder("karaf"));
 
         assertTrue(module.logout());
         assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());