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 16:09:19 UTC

[1/3] karaf git commit: Cleanup jdbc tests

Repository: karaf
Updated Branches:
  refs/heads/master fd7439664 -> b57bceae1


Cleanup jdbc tests


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

Branch: refs/heads/master
Commit: c79e2ba2b30349f220d2d2affb1d1aed410042fb
Parents: fd74396
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 15:53:10 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 15:53:10 2017 +0200

----------------------------------------------------------------------
 .../karaf/jaas/modules/jdbc/JDBCUtils.java      |   4 +-
 .../jaas/modules/jdbc/JdbcLoginModuleTest.java  | 116 ++++++++-----------
 2 files changed, 52 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/c79e2ba2/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCUtils.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCUtils.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCUtils.java
index 4e1cda8..5be25b0 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCUtils.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCUtils.java
@@ -75,9 +75,9 @@ public final class JDBCUtils {
             if (tokens.length > 1) {
                 filter = tokens[1];
             }
-            ServiceReference[] references = bc.getServiceReferences(clazz, filter);
+            ServiceReference<?>[] references = bc.getServiceReferences(clazz, filter);
             if (references != null) {
-                ServiceReference ref = references[0];
+                ServiceReference<?> ref = references[0];
                 Object ds = bc.getService(ref);
                 bc.ungetService(ref);
                 return ds;

http://git-wip-us.apache.org/repos/asf/karaf/blob/c79e2ba2/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/jdbc/JdbcLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/jdbc/JdbcLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/jdbc/JdbcLoginModuleTest.java
index cd960ed..66eebb6 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/jdbc/JdbcLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/jdbc/JdbcLoginModuleTest.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import javax.security.auth.Subject;
 import javax.sql.DataSource;
 
-import org.apache.derby.jdbc.EmbeddedDataSource40;
+import org.apache.derby.jdbc.EmbeddedDataSource;
 import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
 import org.apache.karaf.jaas.boot.principal.RolePrincipal;
 import org.apache.karaf.jaas.boot.principal.UserPrincipal;
@@ -42,54 +42,42 @@ import static org.junit.Assert.assertTrue;
 
 public class JdbcLoginModuleTest {
 
-    private EmbeddedDataSource40 dataSource;
+    private EmbeddedDataSource dataSource;
     private Map<String, Object> options;
 
+    @SuppressWarnings("unchecked")
     @Before
     public void setUp() throws Exception {
         System.setProperty("derby.stream.error.file", "target/derby.log");
 
         // Create datasource
-        dataSource = new EmbeddedDataSource40();
+        dataSource = new EmbeddedDataSource();
         dataSource.setDatabaseName("memory:db");
         dataSource.setCreateDatabase("create");
 
         // Delete tables
         try (Connection connection = dataSource.getConnection()) {
             connection.setAutoCommit(true);
-            try {
-                try (Statement statement = connection.createStatement()) {
+            try (Statement statement = connection.createStatement()) {
                     statement.execute("drop table USERS");
-                }
             } catch (SQLException e) {
                 // Ignore
             }
-            try {
-                try (Statement statement = connection.createStatement()) {
-                    statement.execute("drop table ROLES");
-                }
+            try (Statement statement = connection.createStatement()) {
+                statement.execute("drop table ROLES");
             } catch (SQLException e) {
                 // Ignore
             }
-            connection.commit();
-        }
-
-        // Create tables
-        try (Connection connection = dataSource.getConnection()) {
             try (Statement statement = connection.createStatement()) {
                 statement.execute("create table USERS (USERNAME VARCHAR(32) PRIMARY KEY, PASSWORD VARCHAR(32))");
-            }
-            try (Statement statement = connection.createStatement()) {
                 statement.execute("create table ROLES (USERNAME VARCHAR(32), ROLE VARCHAR(1024))");
             }
             connection.commit();
         }
 
-        // Mocks
         BundleContext context = EasyMock.createMock(BundleContext.class);
-        ServiceReference reference = EasyMock.createMock(ServiceReference.class);
+        ServiceReference<DataSource> reference = EasyMock.createMock(ServiceReference.class);
 
-        // Create options
         options = new HashMap<>();
         options.put(JDBCUtils.DATASOURCE, "osgi:" + DataSource.class.getName());
         options.put(BundleContext.class.getName(), context);
@@ -145,72 +133,68 @@ public class JdbcLoginModuleTest {
 
     @Test
     public void testEngine() throws Exception {
-        JDBCBackingEngine engine = new JDBCBackingEngine(dataSource);
+        UserPrincipal user = new UserPrincipal("abc");
+        GroupPrincipal group1 = new GroupPrincipal("group1");
+        RolePrincipal role1 = new RolePrincipal("role1");
+        RolePrincipal role2 = new RolePrincipal("role2");
+        RolePrincipal role3 = new RolePrincipal("role3");
 
+        JDBCBackingEngine engine = new JDBCBackingEngine(dataSource);
         assertTrue(engine.listUsers().isEmpty());
 
         engine.addUser("abc", "xyz");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).isEmpty());
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).isEmpty());
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).isEmpty());
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).isEmpty());
+        assertTrue(engine.listRoles(group1).isEmpty());
+        assertTrue(engine.listGroups(user).isEmpty());
 
         engine.addRole("abc", "role1");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).contains(new RolePrincipal("role1")));
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).isEmpty());
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).isEmpty());
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).contains(role1));
+        assertTrue(engine.listRoles(group1).isEmpty());
+        assertTrue(engine.listGroups(user).isEmpty());
 
         engine.addGroupRole("group1", "role2");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).contains(new RolePrincipal("role1")));
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).contains(new RolePrincipal("role2")));
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).isEmpty());
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).contains(role1));
+        assertTrue(engine.listRoles(group1).contains(role2));
+        assertTrue(engine.listGroups(user).isEmpty());
 
         engine.addGroup("abc", "group1");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).contains(new RolePrincipal("role1")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).contains(new RolePrincipal("role2")));
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).contains(new RolePrincipal("role2")));
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).contains(new GroupPrincipal("group1")));
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).contains(role1));
+        assertTrue(engine.listRoles(user).contains(role2));
+        assertTrue(engine.listRoles(group1).contains(role2));
+        assertTrue(engine.listGroups(user).contains(group1));
 
         engine.deleteRole("abc", "role1");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).contains(new RolePrincipal("role2")));
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).contains(new RolePrincipal("role2")));
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).contains(new GroupPrincipal("group1")));
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).contains(role2));
+        assertTrue(engine.listRoles(group1).contains(role2));
+        assertTrue(engine.listGroups(user).contains(group1));
 
         engine.deleteGroupRole("group1", "role2");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).isEmpty());
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).isEmpty());
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).contains(new GroupPrincipal("group1")));
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).isEmpty());
+        assertTrue(engine.listRoles(group1).isEmpty());
+        assertTrue(engine.listGroups(user).contains(group1));
 
         engine.addGroupRole("group1", "role3");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).contains(new RolePrincipal("role3")));
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).contains(new RolePrincipal("role3")));
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).contains(new GroupPrincipal("group1")));
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).contains(role3));
+        assertTrue(engine.listRoles(group1).contains(role3));
+        assertTrue(engine.listGroups(user).contains(group1));
 
         engine.deleteGroup("abc", "group1");
-
-        assertTrue(engine.listUsers().contains(new UserPrincipal("abc")));
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).isEmpty());
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).isEmpty());
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).isEmpty());
+        assertTrue(engine.listUsers().contains(user));
+        assertTrue(engine.listRoles(user).isEmpty());
+        assertTrue(engine.listRoles(group1).isEmpty());
+        assertTrue(engine.listGroups(user).isEmpty());
 
         engine.deleteUser("abc");
-
         assertTrue(engine.listUsers().isEmpty());
-        assertTrue(engine.listRoles(new UserPrincipal("abc")).isEmpty());
-        assertTrue(engine.listRoles(new GroupPrincipal("group1")).isEmpty());
-        assertTrue(engine.listGroups(new UserPrincipal("abc")).isEmpty());
+        assertTrue(engine.listRoles(user).isEmpty());
+        assertTrue(engine.listRoles(group1).isEmpty());
+        assertTrue(engine.listGroups(user).isEmpty());
     }
 }


[2/3] karaf git commit: Extract common code

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


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

Branch: refs/heads/master
Commit: db2bf32c780aadae38136e6ea6adeb8ed38950c4
Parents: c79e2ba
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 18:00:43 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 18:00:43 2017 +0200

----------------------------------------------------------------------
 .../apache/karaf/jaas/modules/syncope/SyncopeLoginModule.java  | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/db2bf32c/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModule.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModule.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModule.java
index 3d6eb66..1e194b6 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModule.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModule.java
@@ -101,10 +101,11 @@ public class SyncopeLoginModule extends AbstractKarafLoginModule {
             LOGGER.debug("Populating principals with user");
             principals.add(new UserPrincipal(user));
             LOGGER.debug("Retrieving user {} roles", user);
+            String responseSt = EntityUtils.toString(response.getEntity());
             if (version.equals("2.x") || version.equals("2")) {
-                roles = extractingRolesSyncope2(EntityUtils.toString(response.getEntity()));
+                roles = extractingRolesSyncope2(responseSt);
             } else {
-                roles = extractingRolesSyncope1(EntityUtils.toString(response.getEntity()));
+                roles = extractingRolesSyncope1(responseSt);
             }
         } catch (Exception e) {
             LOGGER.error("User {} authentication failed", user, e);
@@ -162,6 +163,7 @@ public class SyncopeLoginModule extends AbstractKarafLoginModule {
      * @return the list of user roles.
      * @throws Exception in case of extractiong failure.
      */
+    @SuppressWarnings("unchecked")
     protected List<String> extractingRolesSyncope2(String response) throws Exception {
         List<String> roles = new ArrayList<>();
         if (response != null && !response.isEmpty()) {


[3/3] karaf git commit: Extract response data. Improve assertions

Posted by cs...@apache.org.
Extract response data. Improve assertions


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

Branch: refs/heads/master
Commit: b57bceae1855e610e3941c73b1b1260bea264c0d
Parents: db2bf32
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Aug 16 18:01:20 2017 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Aug 16 18:01:20 2017 +0200

----------------------------------------------------------------------
 .../modules/syncope/SyncopeLoginModuleTest.java | 131 +++----------------
 .../jaas/modules/syncope/syncope1Response.xml   |  70 ++++++++++
 .../jaas/modules/syncope/syncope2Response.json  |  55 ++++++++
 3 files changed, 146 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/b57bceae/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModuleTest.java
index 560879a..1156585 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/syncope/SyncopeLoginModuleTest.java
@@ -16,131 +16,42 @@
  */
 package org.apache.karaf.jaas.modules.syncope;
 
-import org.junit.Test;
-import org.junit.Assert;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.junit.Assert.assertThat;
 
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import org.junit.Test;
 
 public class SyncopeLoginModuleTest {
 
     @Test
     public void testRolesExtractionSyncope1() throws Exception {
-        String syncopeResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
-                "<user>\n" +
-                "    <attributes>\n" +
-                "        <attribute>\n" +
-                "            <readonly>false</readonly>\n" +
-                "            <schema>cool</schema>\n" +
-                "            <value>false</value>\n" +
-                "        </attribute>\n" +
-                "        <attribute>\n" +
-                "            <readonly>false</readonly>\n" +
-                "            <schema>email</schema>\n" +
-                "            <value>karaf@example.net</value>\n" +
-                "        </attribute>\n" +
-                "        <attribute>\n" +
-                "            <readonly>false</readonly>\n" +
-                "            <schema>fullname</schema>\n" +
-                "            <value>karaf</value>\n" +
-                "        </attribute>\n" +
-                "        <attribute>\n" +
-                "            <readonly>false</readonly>\n" +
-                "            <schema>gender</schema>\n" +
-                "            <value>M</value>\n" +
-                "        </attribute>\n" +
-                "        <attribute>\n" +
-                "            <readonly>false</readonly>\n" +
-                "            <schema>surname</schema>\n" +
-                "            <value>karaf</value>\n" +
-                "        </attribute>\n" +
-                "        <attribute>\n" +
-                "            <readonly>false</readonly>\n" +
-                "            <schema>userId</schema>\n" +
-                "            <value>karaf@example.net</value>\n" +
-                "        </attribute>\n" +
-                "    </attributes>\n" +
-                "    <derivedAttributes/>\n" +
-                "    <id>100</id>\n" +
-                "    <propagationStatuses/>\n" +
-                "    <resources/>\n" +
-                "    <virtualAttributes/>\n" +
-                "    <creationDate>2014-08-12T18:37:09.202+02:00</creationDate>\n" +
-                "    <failedLogins>0</failedLogins>\n" +
-                "    <lastLoginDate>2014-08-13T09:38:02.204+02:00</lastLoginDate>\n" +
-                "    <memberships>\n" +
-                "        <membership>\n" +
-                "            <attributes/>\n" +
-                "            <derivedAttributes/>\n" +
-                "            <id>100</id>\n" +
-                "            <propagationStatuses/>\n" +
-                "            <resources/>\n" +
-                "            <virtualAttributes/>\n" +
-                "            <resources/>\n" +
-                "            <roleId>100</roleId>\n" +
-                "            <roleName>admin</roleName>\n" +
-                "        </membership>\n" +
-                "        <membership>\n" +
-                "            <attributes/>\n" +
-                "            <derivedAttributes/>\n" +
-                "            <id>101</id>\n" +
-                "            <propagationStatuses/>\n" +
-                "            <resources/>\n" +
-                "            <virtualAttributes/>\n" +
-                "            <resources/>\n" +
-                "            <roleId>101</roleId>\n" +
-                "            <roleName>another</roleName>\n" +
-                "        </membership>\n" +
-                "    </memberships>\n" +
-                "    <password>36460D3A3C1E27C0DB2AF23344475EE712DD3C9D</password>\n" +
-                "    <status>active</status>\n" +
-                "    <username>karaf</username>\n" +
-                "</user>\n";
+        String syncopeResponse = read("syncope1Response.xml");
         SyncopeLoginModule syncopeLoginModule = new SyncopeLoginModule();
         List<String> roles = syncopeLoginModule.extractingRolesSyncope1(syncopeResponse);
-        Assert.assertEquals(2, roles.size());
-        Assert.assertEquals("admin", roles.get(0));
-        Assert.assertEquals("another", roles.get(1));
+        assertThat(roles, containsInAnyOrder("admin", "another"));
     }
 
     @Test
     public void testRolesExtractionSyncope2() throws Exception {
-        String syncopeResponse = "{\n" + "\n"
-                + "   \"@class\":\"org.apache.syncope.common.lib.to.UserTO\",\n" + "\n"
-                + "   \"creator\":\"admin\",\n" + "\n"
-                + "   \"creationDate\":\"2017-07-31T08:36:41.000+0000\",\n" + "\n"
-                + "   \"lastModifier\":\"admin\",\n" + "\n"
-                + "   \"lastChangeDate\":\"2017-08-01T08:46:19.236+0000\",\n" + "\n"
-                + "   \"key\":\"e5a131b0-eb66-4115-a131-b0eb66511579\",\n" + "\n"
-                + "   \"type\":\"USER\",\n" + "\n" + "   \"realm\":\"/karaf\",\n" + "\n"
-                + "   \"status\":\"created\",\n" + "\n" + "   \"password\":null,\n" + "\n"
-                + "   \"token\":null,\n" + "\n" + "   \"tokenExpireTime\":null,\n" + "\n"
-                + "   \"username\":\"karaf\",\n" + "\n"
-                + "   \"lastLoginDate\":\"2017-08-01T08:46:19.224+0000\",\n" + "\n"
-                + "   \"changePwdDate\":null,\n" + "\n" + "   \"failedLogins\":0,\n" + "\n"
-                + "   \"securityQuestion\":null,\n" + "\n" + "   \"securityAnswer\":null,\n" + "\n"
-                + "   \"mustChangePassword\":false,\n" + "\n" + "   \"auxClasses\":[\n" + "\n"
-                + " \n" + "\n" + "   ],\n" + "\n" + "   \"plainAttrs\":[\n" + "\n" + " \n" + "\n"
-                + "   ],\n" + "\n" + "   \"derAttrs\":[\n" + "\n" + " \n" + "\n" + "   ],\n" + "\n"
-                + "   \"virAttrs\":[\n" + "\n" + " \n" + "\n" + "   ],\n" + "\n"
-                + "   \"resources\":[\n" + "\n" + " \n" + "\n" + "   ],\n" + "\n"
-                + "   \"roles\":[\n" + "\n" + "      \"admin\", \"another\"\n" + "\n" + "   ],\n" +
-                "\n"
-                + "   \"dynRoles\":[\n" + "\n" + "      \"admin\"\n" + "\n" + "   ],\n" + "\n"
-                + "   \"relationships\":[\n" + "\n" + " \n" + "\n" + "   ],\n" + "\n"
-                + "   \"memberships\":[\n" + "\n" + "      {\n" + "\n"
-                + "         \"type\":\"Membership\",\n" + "\n"
-                + "         \"rightType\":\"GROUP\",\n" + "\n"
-                + "         \"rightKey\":\"3847aa78-3202-4d8f-87aa-7832026d8fba\",\n" + "\n"
-                + "         \"groupName\":\"manager\",\n" + "\n" + "         \"plainAttrs\":[\n"
-                + "\n" + " \n" + "\n" + "         ],\n" + "\n" + "         \"derAttrs\":[\n" + "\n"
-                + " \n" + "\n" + "         ],\n" + "\n" + "         \"virAttrs\":[\n" + "\n" + " \n"
-                + "\n" + "         ]\n" + "\n" + "      }\n" + "\n" + "   ],\n" + "\n"
-                + "   \"dynGroups\":[\n" + "\n" + " \n" + "\n" + "   ]\n" + "\n" + "}";
+        String syncopeResponse = read("syncope2Response.json");
         SyncopeLoginModule syncopeLoginModule = new SyncopeLoginModule();
         List<String> roles = syncopeLoginModule.extractingRolesSyncope2(syncopeResponse);
-        Assert.assertEquals(2, roles.size());
-        Assert.assertEquals("admin", roles.get(0));
-        Assert.assertEquals("another", roles.get(1));
+        assertThat(roles, containsInAnyOrder("admin", "another"));
+    }
+
+    private String read(String resourceName) throws URISyntaxException, IOException {
+        URI response = this.getClass().getResource(resourceName).toURI();
+        return Files.lines(Paths.get(response), Charset.forName("UTF-8"))
+            .collect(Collectors.joining("\n"));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/b57bceae/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope1Response.xml
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope1Response.xml b/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope1Response.xml
new file mode 100644
index 0000000..105ec10
--- /dev/null
+++ b/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope1Response.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<user>
+    <attributes>
+        <attribute>
+            <readonly>false</readonly>
+            <schema>cool</schema>
+            <value>false</value>
+        </attribute>
+        <attribute>
+            <readonly>false</readonly>
+            <schema>email</schema>
+            <value>karaf@example.net</value>
+        </attribute>
+        <attribute>
+            <readonly>false</readonly>
+            <schema>fullname</schema>
+            <value>karaf</value>
+        </attribute>
+        <attribute>
+            <readonly>false</readonly>
+            <schema>gender</schema>
+            <value>M</value>
+        </attribute>
+        <attribute>
+            <readonly>false</readonly>
+            <schema>surname</schema>
+            <value>karaf</value>
+        </attribute>
+        <attribute>
+            <readonly>false</readonly>
+            <schema>userId</schema>
+            <value>karaf@example.net</value>
+        </attribute>
+    </attributes>
+    <derivedAttributes/>
+    <id>100</id>
+    <propagationStatuses/>
+    <resources/>
+    <virtualAttributes/>
+    <creationDate>2014-08-12T18:37:09.202+02:00</creationDate>
+    <failedLogins>0</failedLogins>
+    <lastLoginDate>2014-08-13T09:38:02.204+02:00</lastLoginDate>
+    <memberships>
+        <membership>
+            <attributes/>
+            <derivedAttributes/>
+            <id>100</id>
+            <propagationStatuses/>
+            <resources/>
+            <virtualAttributes/>
+            <resources/>
+            <roleId>100</roleId>
+            <roleName>admin</roleName>
+        </membership>
+        <membership>
+            <attributes/>
+            <derivedAttributes/>
+            <id>101</id>
+            <propagationStatuses/>
+            <resources/>
+            <virtualAttributes/>
+            <resources/>
+            <roleId>101</roleId>
+            <roleName>another</roleName>
+        </membership>
+    </memberships>
+    <password>36460D3A3C1E27C0DB2AF23344475EE712DD3C9D</password>
+    <status>active</status>
+    <username>karaf</username>
+</user>

http://git-wip-us.apache.org/repos/asf/karaf/blob/b57bceae/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope2Response.json
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope2Response.json b/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope2Response.json
new file mode 100644
index 0000000..8a803f2
--- /dev/null
+++ b/jaas/modules/src/test/resources/org/apache/karaf/jaas/modules/syncope/syncope2Response.json
@@ -0,0 +1,55 @@
+{
+   "@class":"org.apache.syncope.common.lib.to.UserTO",
+   "creator":"admin",
+   "creationDate":"2017-07-31T08:36:41.000+0000",
+   "lastModifier":"admin",
+   "lastChangeDate":"2017-08-01T08:46:19.236+0000",
+   "key":"e5a131b0-eb66-4115-a131-b0eb66511579",
+   "type":"USER",
+   "realm":"/karaf",
+   "status":"created",
+   "password":null,
+   "token":null,
+   "tokenExpireTime":null,
+   "username":"karaf",
+   "lastLoginDate":"2017-08-01T08:46:19.224+0000",
+   "changePwdDate":null,
+   "failedLogins":0,
+   "securityQuestion":null,
+   "securityAnswer":null,
+   "mustChangePassword":false,
+   "auxClasses":[
+   ],
+   "plainAttrs":[
+   ],
+   "derAttrs":[
+   ],
+   "virAttrs":[
+   ],
+   "resources":[
+   ],
+   "roles":[
+      "admin", "another"
+   ],
+   "dynRoles":[
+      "admin"
+   ],
+   "relationships":[
+   ],
+   "memberships":[
+      {
+         "type":"Membership",
+         "rightType":"GROUP",
+         "rightKey":"3847aa78-3202-4d8f-87aa-7832026d8fba",
+         "groupName":"manager",
+         "plainAttrs":[
+         ],
+         "derAttrs":[
+         ],
+         "virAttrs":[
+         ]
+      }
+   ],
+   "dynGroups":[
+   ]
+}