Introduce forced password for tests
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 15 Feb 2022 05:46:08 +0000 (06:46 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 15 Feb 2022 05:46:08 +0000 (06:46 +0100)
org.argeo.util/src/org/argeo/osgi/useradmin/AbstractUserDirectory.java
org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java
org.argeo.util/src/org/argeo/osgi/useradmin/UserAdminConf.java

index 095439093cfb6a77476b21ed12331a87ceaf2430..e028e384e1a8a7af1b5656124e0a66e6f50e9c00 100644 (file)
@@ -67,6 +67,8 @@ public abstract class AbstractUserDirectory implements UserAdmin, UserDirectory
        private WorkControl transactionControl;
        private WcXaResource xaResource = new WcXaResource(this);
 
+       private String forcedPassword;
+
        AbstractUserDirectory(URI uriArg, Dictionary<String, ?> props, boolean scoped) {
                this.scoped = scoped;
                properties = new Hashtable<String, Object>();
@@ -86,6 +88,8 @@ public abstract class AbstractUserDirectory implements UserAdmin, UserDirectory
                                uri = uriStr;
                }
 
+               forcedPassword = UserAdminConf.forcedPassword.getValue(properties);
+
                userObjectClass = UserAdminConf.userObjectClass.getValue(properties);
                userBase = UserAdminConf.userBase.getValue(properties);
                groupObjectClass = UserAdminConf.groupObjectClass.getValue(properties);
@@ -494,6 +498,10 @@ public abstract class AbstractUserDirectory implements UserAdmin, UserDirectory
 //             this.transactionManager = transactionManager;
 //     }
 
+       public String getForcedPassword() {
+               return forcedPassword;
+       }
+
        public void setTransactionControl(WorkControl transactionControl) {
                this.transactionControl = transactionControl;
        }
index 6e8ad27116de610b151b2faaa7e2ef42b61dba48..135645a1233a8e1940dfeb20015a81bfdb984057 100644 (file)
@@ -78,6 +78,10 @@ class LdifUser implements DirectoryUser {
                        // String pwd = new String((char[]) value);
                        // authPassword (RFC 312 https://tools.ietf.org/html/rfc3112)
                        char[] password = DigestUtils.bytesToChars(value);
+
+                       if (userAdmin.getForcedPassword() != null && userAdmin.getForcedPassword().equals(new String(password)))
+                               return true;
+
                        AuthPassword authPassword = AuthPassword.matchAuthValue(getAttributes(), password);
                        if (authPassword != null) {
                                if (authPassword.getAuthScheme().equals(SharedSecret.X_SHARED_SECRET)) {
index 8941f98b4f92763a67f297fa56b4d30d7ae36488..3631de40f45a9c26bed050b1f1f7445e73c7fc24 100644 (file)
@@ -41,7 +41,10 @@ public enum UserAdminConf {
        disabled(null),
 
        /** Authentication realm */
-       realm(null);
+       realm(null),
+
+       /** Override all passwords with this value (typically for testing purposes) */
+       forcedPassword(null);
 
        public final static String FACTORY_PID = "org.argeo.osgi.useradmin.config";