diff options
author | Daniel White <[email protected]> | 2014-10-20 08:43:40 +1100 |
---|---|---|
committer | Daniel White <[email protected]> | 2014-10-20 12:10:29 +1100 |
commit | 4130dc841ca68e16f5d97e89653fa49b16f4e793 (patch) | |
tree | 3d2adf834a58266f6a86eb9904463566ff0dbde5 /lib/eldap/test | |
parent | 7c4237e6d34b23020fca983731a3c7f07a10a8b5 (diff) | |
download | otp-4130dc841ca68e16f5d97e89653fa49b16f4e793.tar.gz otp-4130dc841ca68e16f5d97e89653fa49b16f4e793.tar.bz2 otp-4130dc841ca68e16f5d97e89653fa49b16f4e793.zip |
eldap: Add support for modifying passwords
This implements the LDAP Password Modify Extended Operation (RFC 3062)
with two new functions modify_password/3 and modify_password/4. The
former is for directly setting passwords, and the latter is for users to
change their own passwords.
Since all three parameters are optional, I've opted to support this with
the empty string rather than a property list. This seems consistent with
other functions in the module (i.e. modify_dn/5).
Diffstat (limited to 'lib/eldap/test')
-rw-r--r-- | lib/eldap/test/eldap_basic_SUITE.erl | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/eldap/test/eldap_basic_SUITE.erl b/lib/eldap/test/eldap_basic_SUITE.erl index 6c3d303da0..68a7b0c811 100644 --- a/lib/eldap/test/eldap_basic_SUITE.erl +++ b/lib/eldap/test/eldap_basic_SUITE.erl @@ -198,6 +198,7 @@ do_api_checks(H, Config) -> chk_add(H, BasePath), {ok,FB} = chk_search(H, BasePath), chk_modify(H, FB), + chk_modify_password(H, FB), chk_delete(H, BasePath), chk_modify_dn(H, FB). @@ -242,6 +243,23 @@ chk_modify(H, FB) -> %% DELETE ATTR ok = eldap:modify(H, FB, [eldap:mod_delete("telephoneNumber", [])]). +chk_modify_password(H, FB) -> + %% Change password, and ensure we can bind with it. + ok = eldap:simple_bind(H, "cn=Manager,dc=ericsson,dc=se", "hejsan"), + ok = eldap:modify_password(H, FB, "example"), + ok = eldap:simple_bind(H, FB, "example"), + %% Change password to a server generated value. + ok = eldap:simple_bind(H, "cn=Manager,dc=ericsson,dc=se", "hejsan"), + {ok, Passwd} = eldap:modify_password(H, FB, []), + ok = eldap:simple_bind(H, FB, Passwd), + %% Change own password to server generated value. + {ok, NewPasswd} = eldap:modify_password(H, [], [], Passwd), + ok = eldap:simple_bind(H, FB, NewPasswd), + %% Change own password to explicit value. + ok = eldap:modify_password(H, [], "example", NewPasswd), + ok = eldap:simple_bind(H, FB, "example"), + %% Restore original binding. + ok = eldap:simple_bind(H, "cn=Manager,dc=ericsson,dc=se", "hejsan"). chk_delete(H, BasePath) -> {error, entryAlreadyExists} = eldap:add(H, "cn=Jonas Jonsson," ++ BasePath, |