File: test_password_modify.rb

package info (click to toggle)
ruby-net-ldap 0.19.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 640 kB
  • sloc: ruby: 4,583; sh: 53; makefile: 4
file content (93 lines) | stat: -rw-r--r-- 3,219 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require_relative '../test_helper'

class TestPasswordModifyIntegration < LDAPIntegrationTestCase
  def setup
    super
    @admin_account = { dn: 'cn=admin,dc=example,dc=org', password: 'admin', method: :simple }
    @ldap.authenticate @admin_account[:dn], @admin_account[:password]

    @dn = 'uid=modify-password-user1,ou=People,dc=example,dc=org'

    attrs = {
      objectclass: %w(top inetOrgPerson organizationalPerson person),
      uid: 'modify-password-user1',
      cn: 'modify-password-user1',
      sn: 'modify-password-user1',
      mail: 'modify-password-user1@rubyldap.com',
      userPassword: 'admin',
    }
    unless @ldap.search(base: @dn, scope: Net::LDAP::SearchScope_BaseObject)
      assert @ldap.add(dn: @dn, attributes: attrs), @ldap.get_operation_result.inspect
    end
    assert @ldap.search(base: @dn, scope: Net::LDAP::SearchScope_BaseObject)

    @auth = {
      method: :simple,
      username: @dn,
      password: 'admin',
    }
  end

  def test_password_modify
    assert @ldap.password_modify(dn: @dn,
                                 auth: @auth,
                                 old_password: 'admin',
                                 new_password: 'passworD2')

    assert @ldap.get_operation_result.extended_response.nil?,
           'Should not have generated a new password'

    refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
           'Old password should no longer be valid'

    assert @ldap.bind(username: @dn, password: 'passworD2', method: :simple),
           'New password should be valid'
  end

  def test_password_modify_generate
    assert @ldap.password_modify(dn: @dn,
                                 auth: @auth,
                                 old_password: 'admin')

    generated_password = @ldap.get_operation_result.extended_response[0][0]

    assert generated_password, 'Should have generated a password'

    refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
           'Old password should no longer be valid'

    assert @ldap.bind(username: @dn, password: generated_password, method: :simple),
           'New password should be valid'
  end

  def test_password_modify_generate_no_old_password
    assert @ldap.password_modify(dn: @dn,
                                 auth: @auth)

    generated_password = @ldap.get_operation_result.extended_response[0][0]

    assert generated_password, 'Should have generated a password'

    refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
           'Old password should no longer be valid'

    assert @ldap.bind(username: @dn, password: generated_password, method: :simple),
           'New password should be valid'
  end

  def test_password_modify_overwrite_old_password
    assert @ldap.password_modify(dn: @dn,
                                 auth: @admin_account,
                                 new_password: 'passworD3')

    refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
           'Old password should no longer be valid'

    assert @ldap.bind(username: @dn, password: 'passworD3', method: :simple),
           'New password should be valid'
  end

  def teardown
    @ldap.delete dn: @dn
  end
end