| | |
| | | import java.util.List; |
| | | |
| | | import org.forgerock.opendj.ldap.ByteString; |
| | | import org.forgerock.opendj.ldap.DereferenceAliasesPolicy; |
| | | import org.forgerock.opendj.ldap.ModificationType; |
| | | import org.forgerock.opendj.ldap.SearchScope; |
| | | import org.opends.server.TestCaseUtils; |
| | | import org.opends.server.protocols.ldap.*; |
| | | import org.opends.server.types.Control; |
| | | import org.forgerock.opendj.ldap.DereferenceAliasesPolicy; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.RawAttribute; |
| | | import org.opends.server.types.RawModification; |
| | | import org.opends.server.util.StaticUtils; |
| | |
| | | import org.testng.annotations.DataProvider; |
| | | import org.testng.annotations.Test; |
| | | |
| | | import static org.opends.server.TestCaseUtils.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.testng.Assert.*; |
| | | |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for (Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | |
| | | |
| | | ArrayList<RawAttribute> rawAttrs = new ArrayList<RawAttribute>(); |
| | |
| | | |
| | | message = r.readMessage(); |
| | | AddResponseProtocolOp addResponse = message.getAddResponseProtocolOp(); |
| | | assertFalse(addResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(addResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | found = false; |
| | | for (Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | |
| | | message = r.readMessage(); |
| | | AddResponseProtocolOp addResponse = message.getAddResponseProtocolOp(); |
| | | assertFalse(addResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(addResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.INSUFFICIENT_PASSWORD_QUALITY); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.INSUFFICIENT_PASSWORD_QUALITY)); |
| | | } |
| | | finally |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | private boolean passwordPolicyControlExists(List<Control> controls, PasswordPolicyErrorType expectedErrorType) |
| | | throws DirectoryException |
| | | { |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl) c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), expectedErrorType); |
| | | found = true; |
| | | } |
| | | } |
| | | return found; |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--add", "password-validator:Length-Based Password Validator"); |
| | | setPasswordPolicyProp("--add", "password-validator:Length-Based Password Validator"); |
| | | |
| | | Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort()); |
| | | org.opends.server.tools.LDAPReader r = new org.opends.server.tools.LDAPReader(s); |
| | |
| | | |
| | | message = r.readMessage(); |
| | | AddResponseProtocolOp addResponse = message.getAddResponseProtocolOp(); |
| | | assertFalse(addResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(addResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.INSUFFICIENT_PASSWORD_QUALITY); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.INSUFFICIENT_PASSWORD_QUALITY)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--remove", "password-validator:Length-Based Password Validator"); |
| | | setPasswordPolicyProp("--remove", "password-validator:Length-Based Password Validator"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "lockout-failure-count:3"); |
| | | setPasswordPolicyProp("--set", "lockout-failure-count:3"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | |
| | | message = r.readMessage(); |
| | | BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp(); |
| | | assertFalse(bindResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(bindResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | } |
| | | |
| | | bindRequest = new BindRequestProtocolOp( |
| | |
| | | |
| | | message = r.readMessage(); |
| | | BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp(); |
| | | assertFalse(bindResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(bindResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.ACCOUNT_LOCKED); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.ACCOUNT_LOCKED)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "lockout-failure-count:0"); |
| | | setPasswordPolicyProp("--set", "lockout-failure-count:0"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Tests that an appropriate password policy response control is returned for |
| | | * a compare operation when the user's password is in a "must change" state. |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | CompareResponseProtocolOp compareResponse = |
| | | message.getCompareResponseProtocolOp(); |
| | | assertFalse(compareResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(compareResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntries( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | DeleteResponseProtocolOp deleteResponse = |
| | | message.getDeleteResponseProtocolOp(); |
| | | assertFalse(deleteResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(deleteResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | "userPassword: password", |
| | | "ds-privilege-name: bypass-acl"); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | "userPassword: password", |
| | | "ds-privilege-name: bypass-acl"); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=authz.user,o=test", |
| | |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "allow-user-password-changes:false"); |
| | | setPasswordPolicyProp("--set", "allow-user-password-changes:false"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | ModifyResponseProtocolOp modifyResponse = |
| | | message.getModifyResponseProtocolOp(); |
| | | assertFalse(modifyResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(modifyResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.PASSWORD_MOD_NOT_ALLOWED); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.PASSWORD_MOD_NOT_ALLOWED)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "allow-user-password-changes:true"); |
| | | setPasswordPolicyProp("--set", "allow-user-password-changes:true"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Tests that an appropriate password policy response control is returned for |
| | | * a modify operation when the proposed password is in the user's password |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "password-history-count:5"); |
| | | setPasswordPolicyProp("--set", "password-history-count:5"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | ModifyResponseProtocolOp modifyResponse = |
| | | message.getModifyResponseProtocolOp(); |
| | | assertFalse(modifyResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(modifyResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.PASSWORD_IN_HISTORY); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.PASSWORD_IN_HISTORY)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "password-history-count:0"); |
| | | setPasswordPolicyProp("--set", "password-history-count:0"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "password-change-requires-current-password:true"); |
| | | setPasswordPolicyProp("--set", "password-change-requires-current-password:true"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | ModifyResponseProtocolOp modifyResponse = |
| | | message.getModifyResponseProtocolOp(); |
| | | assertFalse(modifyResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(modifyResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.MUST_SUPPLY_OLD_PASSWORD); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.MUST_SUPPLY_OLD_PASSWORD)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "password-change-requires-current-password:false"); |
| | | setPasswordPolicyProp("--set", "password-change-requires-current-password:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "min-password-age:24 hours"); |
| | | setPasswordPolicyProp("--set", "min-password-age:24 hours"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | ModifyResponseProtocolOp modifyResponse = |
| | | message.getModifyResponseProtocolOp(); |
| | | assertFalse(modifyResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(modifyResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.PASSWORD_TOO_YOUNG); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.PASSWORD_TOO_YOUNG)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "min-password-age:0 seconds"); |
| | | setPasswordPolicyProp("--set", "min-password-age:0 seconds"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntries( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | ModifyDNResponseProtocolOp modifyDNResponse = |
| | | message.getModifyDNResponseProtocolOp(); |
| | | assertFalse(modifyDNResponse.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(modifyDNResponse.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Tests that an appropriate password policy response control is returned for |
| | | * a search operation when the user's password is in a "must change" state. |
| | |
| | | { |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:true"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:true"); |
| | | |
| | | TestCaseUtils.addEntry( |
| | | "dn: uid=test.user,o=test", |
| | |
| | | message = r.readMessage(); |
| | | SearchResultDoneProtocolOp searchDone = |
| | | message.getSearchResultDoneProtocolOp(); |
| | | assertFalse(searchDone.getResultCode() == LDAPResultCode.SUCCESS); |
| | | assertNotEquals(searchDone.getResultCode(), LDAPResultCode.SUCCESS); |
| | | |
| | | controls = message.getControls(); |
| | | assertNotNull(controls); |
| | | assertFalse(controls.isEmpty()); |
| | | |
| | | boolean found = false; |
| | | for(Control c : controls) |
| | | { |
| | | if (c.getOID().equals(OID_PASSWORD_POLICY_CONTROL)) |
| | | { |
| | | PasswordPolicyResponseControl pwpControl; |
| | | if(c instanceof LDAPControl) |
| | | { |
| | | pwpControl = |
| | | PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), ((LDAPControl)c).getValue()); |
| | | } |
| | | else |
| | | { |
| | | pwpControl = (PasswordPolicyResponseControl)c; |
| | | } |
| | | assertEquals(pwpControl.getErrorType(), |
| | | PasswordPolicyErrorType.CHANGE_AFTER_RESET); |
| | | found = true; |
| | | } |
| | | } |
| | | assertTrue(found); |
| | | assertTrue(passwordPolicyControlExists(controls, PasswordPolicyErrorType.CHANGE_AFTER_RESET)); |
| | | } |
| | | finally |
| | | { |
| | | TestCaseUtils.dsconfig( |
| | | "set-password-policy-prop", |
| | | "--policy-name", "Default Password Policy", |
| | | "--set", "force-change-on-add:false"); |
| | | setPasswordPolicyProp("--set", "force-change-on-add:false"); |
| | | |
| | | StaticUtils.close(s); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void setPasswordPolicyProp(String arg, String value) |
| | | { |
| | | TestCaseUtils.dsconfig("set-password-policy-prop", "--policy-name", "Default Password Policy", arg, value); |
| | | } |
| | | } |