Enable multiple roles per user (backend)
[controller.git] / opendaylight / usermanager / src / test / java / org / opendaylight / controller / usermanager / internal / UserManagerImplTest.java
index ec7b13603943cd348b3393a94a66749fdc608cba..626011bd695fc0288f9a064ac682df75cea17e8b 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
  *
@@ -13,7 +12,8 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import java.util.Date;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.junit.Assert;
@@ -31,218 +31,229 @@ import org.opendaylight.controller.usermanager.IUserManager;
  */
 public class UserManagerImplTest {
 
-       private static UserManagerImpl um;
-
-       /**
-        * @throws java.lang.Exception
-        */
-       @BeforeClass
-       public static void setUpBeforeClass() throws Exception {
-
-               IUserManager userManager = (IUserManager) ServiceHelper
-                               .getGlobalInstance(IUserManager.class, new Object());
-               if (userManager instanceof UserManagerImpl) {
-                       um = (UserManagerImpl) userManager;
-               } else {
-                       um = new UserManagerImpl();
-                       um.setAuthProviders(new ConcurrentHashMap<String, IAAAProvider>());
-
-                       // mock up a remote server list with a dummy server
-                       um.setRemoteServerConfigList(new ConcurrentHashMap<String, ServerConfig>() {
-                               static final long serialVersionUID = 1L;
-                               {
-                                       put("dummyServerConfig", new ServerConfig() { // Server config can't be empty
-                                                               static final long serialVersionUID = 8645L;
-
-                                                               public String getAddress() {
-                                                                       return "1.1.1.1";
-                                                               }
-
-                                                               public String getSecret() {
-                                                                       return "secret";
-                                                               }
-
-                                                               public String getProtocol() {
-                                                                       return "IPv4";
-                                                               }
-                                                       });
-                               }
-                       });
-
-                       // mock up a localUserConfigList with an admin user
-                       um.setLocalUserConfigList(new ConcurrentHashMap<String, UserConfig>() {
-                               static final long serialVersionUID = 2L;
-                               {
-                                       put("admin", new UserConfig("admin", "7029,7455,8165,7029,7881",
-                                                                       UserLevel.SYSTEMADMIN.toString()));
-                               }
-                       });
-                       // instantiate an empty activeUser collection
-                       um.setActiveUsers(new ConcurrentHashMap<String, AuthenticatedUser>());
-
-               }
-
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#addAAAProvider(org.opendaylight.controller.usermanager.IAAAProvider)}
-        * .
-        */
-       @Test
-       public void testAddAAAProvider() {
-               // instantiate an anonymous AAAProvider
-               IAAAProvider a3p = new IAAAProvider() {
-
-                       public AuthResponse authService(String userName, String password,
-                                       String server, String secretKey) {
-                               return new AuthResponse();
-                       };
-
-                       public String getName() {
-                               return "dummyAAAProvider";
-                       }
-               };
-
-               um.addAAAProvider(a3p);
-               assertEquals(a3p, um.getAAAProvider("dummyAAAProvider"));
-
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#removeAAAProvider(org.opendaylight.controller.usermanager.IAAAProvider)}
-        * and for for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#getAAAProvider(java.lang.String)}
-        * .
-        */
-       @Test
-       public void testRemoveAAAProvider() {
-               um.removeAAAProvider(um.getAAAProvider("dummyAAAProvider"));
-               assertTrue(um.getAAAProviderNames().isEmpty());
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#authenticate(java.lang.String, java.lang.String)}
-        * .
-        */
-       @Test
-       public void testAuthenticateStringString() {
-               UserConfig uc = new UserConfig("administrator", "admin",
-                               UserLevel.SYSTEMADMIN.toString());
-               um.addLocalUser(uc);
-               AuthResultEnum authResult = um.authenticate("administrator", "admin");
-               assertEquals(authResult, AuthResultEnum.AUTH_ACCEPT_LOC);
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#addRemoveLocalUser(org.opendaylight.controller.usermanager.internal.UserConfig, boolean)}
-        * .
-        */
-       @Test
-       public void testAddRemoveLocalUser() {
-               UserConfig uc = new UserConfig("sysadmin", "7029,7455,8165,7029,7881",
-                               UserLevel.SYSTEMADMIN.toString());
-               um.addLocalUser(uc);
-               assertTrue(um.getLocalUserList().contains(uc));
-               um.removeLocalUser(uc);
-               assertFalse(um.getLocalUserList().contains(uc));
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#changeLocalUserPassword(java.lang.String, java.lang.String, java.lang.String)}
-        * .
-        */
-       @Test
-       public void testChangeLocalUserPassword() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#userLogout(java.lang.String)}
-        * .
-        */
-       @Test
-       public void testUserLogout() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#userTimedOut(java.lang.String)}
-        * .
-        */
-       @Test
-       public void testUserTimedOut() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#authenticate(org.springframework.security.core.Authentication)}
-        * .
-        */
-       @Test
-       public void testAuthenticateAuthentication() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveLocalUserList()}
-        * .
-        */
-       @Test
-       public void testSaveLocalUserList() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveAAAServerList()}
-        * .
-        */
-       @Test
-       public void testSaveAAAServerList() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveAuthorizationList()}
-        * .
-        */
-       @Test
-       public void testSaveAuthorizationList() {
-               // fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for
-        * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#readObject(java.io.ObjectInputStream)}
-        * .
-        */
-       @Test
-       public void testReadObject() {
-               // fail("Not yet implemented");
-       }
-       
-       @Test
-       public void testGetUserLevel() {
-               um.addLocalUser(new UserConfig("Jack", "password",
-                               UserLevel.SYSTEMADMIN.toString()));
-               um.authenticate("Jack", "password");
-               
-               um.addLocalUser(new UserConfig("John", "password",
-                               UserLevel.NETWORKOPERATOR.toString()));
-               // Run the check on authenticated user
-               Assert.assertTrue(um.getUserLevel("Jack") == UserLevel.SYSTEMADMIN);
-               // Run the check on configured users
-               Assert.assertTrue(um.getUserLevel("John") == UserLevel.NETWORKOPERATOR);
-               Assert.assertTrue(um.getUserLevel("Andrew") == UserLevel.NOUSER);
-       }
+    private static UserManagerImpl um;
+
+    /**
+     * @throws java.lang.Exception
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+
+        IUserManager userManager = (IUserManager) ServiceHelper
+                .getGlobalInstance(IUserManager.class, new Object());
+        if (userManager instanceof UserManagerImpl) {
+            um = (UserManagerImpl) userManager;
+        } else {
+            um = new UserManagerImpl();
+            um.setAuthProviders(new ConcurrentHashMap<String, IAAAProvider>());
+
+            // mock up a remote server list with a dummy server
+            um.setRemoteServerConfigList(new ConcurrentHashMap<String, ServerConfig>() {
+                static final long serialVersionUID = 1L;
+                {
+                    put("dummyServerConfig", new ServerConfig() {
+                        // Server config can't be empty
+                        static final long serialVersionUID = 8645L;
+
+                        public String getAddress() {
+                            return "1.1.1.1";
+                        }
+
+                        public String getSecret() {
+                            return "secret";
+                        }
+
+                        public String getProtocol() {
+                            return "IPv4";
+                        }
+                    });
+                }
+            });
+
+            // mock up a localUserConfigList with an admin user
+            um.setLocalUserConfigList(new ConcurrentHashMap<String, UserConfig>() {
+                static final long serialVersionUID = 2L;
+                {
+                    List<String> roles = new ArrayList<String>(1);
+                    roles.add(UserLevel.SYSTEMADMIN.toString());
+                    put("admin", new UserConfig("admin",
+                            "7029,7455,8165,7029,7881", roles));
+                }
+            });
+            // instantiate an empty activeUser collection
+            um.setActiveUsers(new ConcurrentHashMap<String, AuthenticatedUser>());
+
+        }
+
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#addAAAProvider(org.opendaylight.controller.usermanager.IAAAProvider)}
+     * .
+     */
+    @Test
+    public void testAddAAAProvider() {
+        // instantiate an anonymous AAAProvider
+        IAAAProvider a3p = new IAAAProvider() {
+
+            public AuthResponse authService(String userName, String password,
+                    String server, String secretKey) {
+                return new AuthResponse();
+            };
+
+            public String getName() {
+                return "dummyAAAProvider";
+            }
+        };
+
+        um.addAAAProvider(a3p);
+        assertEquals(a3p, um.getAAAProvider("dummyAAAProvider"));
+
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#removeAAAProvider(org.opendaylight.controller.usermanager.IAAAProvider)}
+     * and for for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#getAAAProvider(java.lang.String)}
+     * .
+     */
+    @Test
+    public void testRemoveAAAProvider() {
+        um.removeAAAProvider(um.getAAAProvider("dummyAAAProvider"));
+        assertTrue(um.getAAAProviderNames().isEmpty());
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#authenticate(java.lang.String, java.lang.String)}
+     * .
+     */
+    @Test
+    public void testAuthenticateStringString() {
+        List<String> roles = new ArrayList<String>(1);
+        roles.add(UserLevel.SYSTEMADMIN.toString());
+        UserConfig uc = new UserConfig("administrator", "admin", roles);
+        um.addLocalUser(uc);
+        AuthResultEnum authResult = um.authenticate("administrator", "admin");
+        assertEquals(authResult, AuthResultEnum.AUTH_ACCEPT_LOC);
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#addRemoveLocalUser(org.opendaylight.controller.usermanager.internal.UserConfig, boolean)}
+     * .
+     */
+    @Test
+    public void testAddRemoveLocalUser() {
+        List<String> roles = new ArrayList<String>(1);
+        roles.add(UserLevel.SYSTEMADMIN.toString());
+        UserConfig uc = new UserConfig("sysadmin", "7029,7455,8165,7029,7881",
+                roles);
+        um.addLocalUser(uc);
+        assertTrue(um.getLocalUserList().contains(uc));
+        um.removeLocalUser(uc);
+        assertFalse(um.getLocalUserList().contains(uc));
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#changeLocalUserPassword(java.lang.String, java.lang.String, java.lang.String)}
+     * .
+     */
+    @Test
+    public void testChangeLocalUserPassword() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#userLogout(java.lang.String)}
+     * .
+     */
+    @Test
+    public void testUserLogout() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#userTimedOut(java.lang.String)}
+     * .
+     */
+    @Test
+    public void testUserTimedOut() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#authenticate(org.springframework.security.core.Authentication)}
+     * .
+     */
+    @Test
+    public void testAuthenticateAuthentication() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveLocalUserList()}
+     * .
+     */
+    @Test
+    public void testSaveLocalUserList() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveAAAServerList()}
+     * .
+     */
+    @Test
+    public void testSaveAAAServerList() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveAuthorizationList()}
+     * .
+     */
+    @Test
+    public void testSaveAuthorizationList() {
+        // fail("Not yet implemented");
+    }
+
+    /**
+     * Test method for
+     * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#readObject(java.io.ObjectInputStream)}
+     * .
+     */
+    @Test
+    public void testReadObject() {
+        // fail("Not yet implemented");
+    }
+
+    @Test
+    public void testGetUserLevel() {
+        List<String> roles = new ArrayList<String>(2);
+        roles.add(UserLevel.SYSTEMADMIN.toString());
+        roles.add("App1_supervisor");
+        um.addLocalUser(new UserConfig("Jack", "password", roles));
+        um.authenticate("Jack", "password");
+
+        roles.clear();
+        roles.add("App2Admin");
+        roles.add(UserLevel.NETWORKOPERATOR.toString());
+        um.addLocalUser(new UserConfig("John", "password", roles));
+
+        // Run the check on authenticated user
+        Assert.assertTrue(um.getUserLevel("Jack") == UserLevel.SYSTEMADMIN);
+        // Run the check on configured users
+        Assert.assertTrue(um.getUserLevel("John") == UserLevel.NETWORKOPERATOR);
+        Assert.assertTrue(um.getUserLevel("Andrew") == UserLevel.NOUSER);
+    }
 }