Add strong password check for users
[controller.git] / opendaylight / usermanager / api / src / test / java / org / opendaylight / controller / usermanager / AuthorizationUserConfigTest.java
index cccbe2473477e25ff2937216e0919f90207b97da..8c029a7488361b778b2749fe327a48a812d675c0 100644 (file)
@@ -27,7 +27,7 @@ import org.opendaylight.controller.usermanager.UserConfig;
 public class AuthorizationUserConfigTest {
 
     @Test
-    public void AuthorizationConfigTest() {
+    public void authorizationConfigTest() {
         AuthorizationConfig authConfig;
         List<String> roles = new ArrayList<String>();
 
@@ -42,7 +42,7 @@ public class AuthorizationUserConfigTest {
     }
 
     @Test
-    public void UserConfigTest() {
+    public void userConfigTest() {
         UserConfig userConfig;
         List<String> roles = new ArrayList<String>();
 
@@ -75,12 +75,12 @@ public class AuthorizationUserConfigTest {
                 .isSuccess());
 
         // New Password = null, No change in password
-        assertTrue(userConfig.getPassword().equals("ciscocisco"));
+        assertTrue(userConfig.getPassword().equals(UserConfig.hash("ciscocisco")));
 
         // Password changed successfully, no change in user role
         assertTrue(userConfig.update("ciscocisco", "cisco123", roles)
                 .isSuccess());
-        assertTrue(userConfig.getPassword().equals("cisco123"));
+        assertTrue(userConfig.getPassword().equals(UserConfig.hash("cisco123")));
         assertTrue(userConfig.getRoles().get(0).equals(
                 UserLevel.NETWORKOPERATOR.toString()));
 
@@ -89,14 +89,14 @@ public class AuthorizationUserConfigTest {
         roles.add(UserLevel.SYSTEMADMIN.toString());
         assertTrue(userConfig.update("cisco123", "cisco123", roles)
                 .isSuccess());
-        assertTrue(userConfig.getPassword().equals("cisco123"));
+        assertTrue(userConfig.getPassword().equals(UserConfig.hash("cisco123")));
         assertTrue(userConfig.getRoles().get(0)
                 .equals(UserLevel.SYSTEMADMIN.toString()));
 
         // Password and role changed successfully
         assertTrue(userConfig.update("cisco123", "ciscocisco", roles)
                 .isSuccess());
-        assertTrue(userConfig.getPassword().equals("ciscocisco"));
+        assertTrue(userConfig.getPassword().equals(UserConfig.hash("ciscocisco")));
         assertTrue(userConfig.getRoles().get(0)
                 .equals(UserLevel.SYSTEMADMIN.toString()));
 
@@ -117,4 +117,41 @@ public class AuthorizationUserConfigTest {
         UserConfig userConfig2 = new UserConfig("uname", "ciscocisco", roles);
         assertEquals(userConfig, userConfig2);
     }
+
+    @Test
+    public void userConfigPasswordTest() {
+
+        String regex = UserConfig.PASSWORD_REGEX;
+        String password = null;
+
+        // Good password
+        password = "aBc@eF#h9";
+        assertTrue(password.matches(regex));
+        password = "^aBc@eF#h9$88ad*o&";
+        assertTrue(password.matches(regex));
+        password = "_^aBc@\":eF#h;9$\\8|8ad*o&-(){}/,.><?+-";
+        assertTrue(password.matches(regex));
+        password = "culonE1)";
+        assertTrue(password.matches(regex));
+
+        // Too short
+        password = "aB3@eF#";
+        assertFalse(password.matches(regex));
+
+        // No number
+        password = "#BeCCC#CeDfDf";
+        assertFalse(password.matches(regex));
+
+        // No lower case
+        password = "AB8C#CC@C4";
+        assertFalse(password.matches(regex));
+
+        // No upper case
+        password = "ab8defg9!";
+        assertFalse(password.matches(regex));
+
+        // No special characters
+        password = "aBc4ef7H8";
+        assertFalse(password.matches(regex));
+    }
 }