net-ldap 0.16.3 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/History.rdoc +59 -0
 - data/README.rdoc +10 -3
 - data/lib/net/ldap/connection.rb +18 -10
 - data/lib/net/ldap/dataset.rb +0 -2
 - data/lib/net/ldap/dn.rb +9 -17
 - data/lib/net/ldap/entry.rb +11 -2
 - data/lib/net/ldap/error.rb +1 -26
 - data/lib/net/ldap/password.rb +4 -0
 - data/lib/net/ldap/version.rb +1 -1
 - data/lib/net/ldap.rb +28 -3
 - metadata +17 -93
 - data/.gitignore +0 -10
 - data/.rubocop.yml +0 -20
 - data/.rubocop_todo.yml +0 -723
 - data/.travis.yml +0 -57
 - data/CONTRIBUTING.md +0 -54
 - data/Gemfile +0 -2
 - data/Rakefile +0 -23
 - data/net-ldap.gemspec +0 -37
 - data/script/changelog +0 -47
 - data/script/ldap-docker +0 -12
 - data/script/package +0 -7
 - data/script/release +0 -16
 - data/test/ber/core_ext/test_array.rb +0 -22
 - data/test/ber/core_ext/test_string.rb +0 -25
 - data/test/ber/test_ber.rb +0 -153
 - data/test/fixtures/ca/docker-ca.pem +0 -18
 - data/test/fixtures/ldif/06-retcode.ldif +0 -75
 - data/test/fixtures/ldif/50-seed.ldif +0 -374
 - data/test/integration/test_add.rb +0 -26
 - data/test/integration/test_ber.rb +0 -30
 - data/test/integration/test_bind.rb +0 -221
 - data/test/integration/test_delete.rb +0 -29
 - data/test/integration/test_open.rb +0 -87
 - data/test/integration/test_password_modify.rb +0 -93
 - data/test/integration/test_return_codes.rb +0 -46
 - data/test/integration/test_search.rb +0 -77
 - data/test/support/vm/openldap/.gitignore +0 -1
 - data/test/test_auth_adapter.rb +0 -15
 - data/test/test_dn.rb +0 -43
 - data/test/test_entry.rb +0 -66
 - data/test/test_filter.rb +0 -223
 - data/test/test_filter_parser.rb +0 -29
 - data/test/test_helper.rb +0 -73
 - data/test/test_ldap.rb +0 -114
 - data/test/test_ldap_connection.rb +0 -505
 - data/test/test_ldif.rb +0 -104
 - data/test/test_password.rb +0 -10
 - data/test/test_rename.rb +0 -77
 - data/test/test_search.rb +0 -39
 - data/test/test_snmp.rb +0 -118
 - data/test/test_ssl_ber.rb +0 -44
 - data/test/testdata.ldif +0 -101
 - data/testserver/ldapserver.rb +0 -200
 - data/testserver/testdata.ldif +0 -101
 
| 
         @@ -1,87 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestBindIntegration < LDAPIntegrationTestCase
         
     | 
| 
       4 
     | 
    
         
            -
              def test_binds_without_open
         
     | 
| 
       5 
     | 
    
         
            -
                events = @service.subscribe "bind.net_ldap_connection"
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                @ldap.search(filter: "uid=user1", base: "ou=People,dc=example,dc=org", ignore_server_caps: true)
         
     | 
| 
       8 
     | 
    
         
            -
                @ldap.search(filter: "uid=user1", base: "ou=People,dc=example,dc=org", ignore_server_caps: true)
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                assert_equal 2, events.size
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              def test_binds_with_open
         
     | 
| 
       14 
     | 
    
         
            -
                events = @service.subscribe "bind.net_ldap_connection"
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                @ldap.open do
         
     | 
| 
       17 
     | 
    
         
            -
                  @ldap.search(filter: "uid=user1", base: "ou=People,dc=example,dc=org", ignore_server_caps: true)
         
     | 
| 
       18 
     | 
    
         
            -
                  @ldap.search(filter: "uid=user1", base: "ou=People,dc=example,dc=org", ignore_server_caps: true)
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                assert_equal 1, events.size
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              # NOTE: query for two or more entries so that the socket must be read
         
     | 
| 
       25 
     | 
    
         
            -
              # multiple times.
         
     | 
| 
       26 
     | 
    
         
            -
              # See The Problem: https://github.com/ruby-ldap/ruby-net-ldap/issues/136
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              def test_nested_search_without_open
         
     | 
| 
       29 
     | 
    
         
            -
                entries = []
         
     | 
| 
       30 
     | 
    
         
            -
                nested_entry = nil
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                @ldap.search(filter: "(|(uid=user1)(uid=user2))", base: "ou=People,dc=example,dc=org") do |entry|
         
     | 
| 
       33 
     | 
    
         
            -
                  entries << entry.uid.first
         
     | 
| 
       34 
     | 
    
         
            -
                  nested_entry ||= @ldap.search(filter: "uid=user3", base: "ou=People,dc=example,dc=org").first
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                assert_equal "user3", nested_entry.uid.first
         
     | 
| 
       38 
     | 
    
         
            -
                assert_equal %w(user1 user2), entries
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              def test_nested_search_with_open
         
     | 
| 
       42 
     | 
    
         
            -
                entries = []
         
     | 
| 
       43 
     | 
    
         
            -
                nested_entry = nil
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                @ldap.open do
         
     | 
| 
       46 
     | 
    
         
            -
                  @ldap.search(filter: "(|(uid=user1)(uid=user2))", base: "ou=People,dc=example,dc=org") do |entry|
         
     | 
| 
       47 
     | 
    
         
            -
                    entries << entry.uid.first
         
     | 
| 
       48 
     | 
    
         
            -
                    nested_entry ||= @ldap.search(filter: "uid=user3", base: "ou=People,dc=example,dc=org").first
         
     | 
| 
       49 
     | 
    
         
            -
                  end
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                assert_equal "user3", nested_entry.uid.first
         
     | 
| 
       53 
     | 
    
         
            -
                assert_equal %w(user1 user2), entries
         
     | 
| 
       54 
     | 
    
         
            -
              end
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
              def test_nested_add_with_open
         
     | 
| 
       57 
     | 
    
         
            -
                entries = []
         
     | 
| 
       58 
     | 
    
         
            -
                nested_entry = nil
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                dn = "uid=nested-open-added-user1,ou=People,dc=example,dc=org"
         
     | 
| 
       61 
     | 
    
         
            -
                attrs = {
         
     | 
| 
       62 
     | 
    
         
            -
                  objectclass: %w(top inetOrgPerson organizationalPerson person),
         
     | 
| 
       63 
     | 
    
         
            -
                  uid:  "nested-open-added-user1",
         
     | 
| 
       64 
     | 
    
         
            -
                  cn:   "nested-open-added-user1",
         
     | 
| 
       65 
     | 
    
         
            -
                  sn:   "nested-open-added-user1",
         
     | 
| 
       66 
     | 
    
         
            -
                  mail: "nested-open-added-user1@rubyldap.com",
         
     | 
| 
       67 
     | 
    
         
            -
                }
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                @ldap.delete dn: dn
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                @ldap.open do
         
     | 
| 
       72 
     | 
    
         
            -
                  @ldap.search(filter: "(|(uid=user1)(uid=user2))", base: "ou=People,dc=example,dc=org") do |entry|
         
     | 
| 
       73 
     | 
    
         
            -
                    entries << entry.uid.first
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                    nested_entry ||= begin
         
     | 
| 
       76 
     | 
    
         
            -
                      assert @ldap.add(dn: dn, attributes: attrs), @ldap.get_operation_result.inspect
         
     | 
| 
       77 
     | 
    
         
            -
                      @ldap.search(base: dn, scope: Net::LDAP::SearchScope_BaseObject).first
         
     | 
| 
       78 
     | 
    
         
            -
                    end
         
     | 
| 
       79 
     | 
    
         
            -
                  end
         
     | 
| 
       80 
     | 
    
         
            -
                end
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                assert_equal %w(user1 user2), entries
         
     | 
| 
       83 
     | 
    
         
            -
                assert_equal "nested-open-added-user1", nested_entry.uid.first
         
     | 
| 
       84 
     | 
    
         
            -
              ensure
         
     | 
| 
       85 
     | 
    
         
            -
                @ldap.delete dn: dn
         
     | 
| 
       86 
     | 
    
         
            -
              end
         
     | 
| 
       87 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,93 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestPasswordModifyIntegration < LDAPIntegrationTestCase
         
     | 
| 
       4 
     | 
    
         
            -
              def setup
         
     | 
| 
       5 
     | 
    
         
            -
                super
         
     | 
| 
       6 
     | 
    
         
            -
                @admin_account = { dn: 'cn=admin,dc=example,dc=org', password: 'admin', method: :simple }
         
     | 
| 
       7 
     | 
    
         
            -
                @ldap.authenticate @admin_account[:dn], @admin_account[:password]
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                @dn = 'uid=modify-password-user1,ou=People,dc=example,dc=org'
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                attrs = {
         
     | 
| 
       12 
     | 
    
         
            -
                  objectclass: %w(top inetOrgPerson organizationalPerson person),
         
     | 
| 
       13 
     | 
    
         
            -
                  uid: 'modify-password-user1',
         
     | 
| 
       14 
     | 
    
         
            -
                  cn: 'modify-password-user1',
         
     | 
| 
       15 
     | 
    
         
            -
                  sn: 'modify-password-user1',
         
     | 
| 
       16 
     | 
    
         
            -
                  mail: 'modify-password-user1@rubyldap.com',
         
     | 
| 
       17 
     | 
    
         
            -
                  userPassword: 'admin',
         
     | 
| 
       18 
     | 
    
         
            -
                }
         
     | 
| 
       19 
     | 
    
         
            -
                unless @ldap.search(base: @dn, scope: Net::LDAP::SearchScope_BaseObject)
         
     | 
| 
       20 
     | 
    
         
            -
                  assert @ldap.add(dn: @dn, attributes: attrs), @ldap.get_operation_result.inspect
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
                assert @ldap.search(base: @dn, scope: Net::LDAP::SearchScope_BaseObject)
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                @auth = {
         
     | 
| 
       25 
     | 
    
         
            -
                  method: :simple,
         
     | 
| 
       26 
     | 
    
         
            -
                  username: @dn,
         
     | 
| 
       27 
     | 
    
         
            -
                  password: 'admin',
         
     | 
| 
       28 
     | 
    
         
            -
                }
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              def test_password_modify
         
     | 
| 
       32 
     | 
    
         
            -
                assert @ldap.password_modify(dn: @dn,
         
     | 
| 
       33 
     | 
    
         
            -
                                             auth: @auth,
         
     | 
| 
       34 
     | 
    
         
            -
                                             old_password: 'admin',
         
     | 
| 
       35 
     | 
    
         
            -
                                             new_password: 'passworD2')
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                assert @ldap.get_operation_result.extended_response.nil?,
         
     | 
| 
       38 
     | 
    
         
            -
                       'Should not have generated a new password'
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
         
     | 
| 
       41 
     | 
    
         
            -
                       'Old password should no longer be valid'
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                assert @ldap.bind(username: @dn, password: 'passworD2', method: :simple),
         
     | 
| 
       44 
     | 
    
         
            -
                       'New password should be valid'
         
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
              def test_password_modify_generate
         
     | 
| 
       48 
     | 
    
         
            -
                assert @ldap.password_modify(dn: @dn,
         
     | 
| 
       49 
     | 
    
         
            -
                                             auth: @auth,
         
     | 
| 
       50 
     | 
    
         
            -
                                             old_password: 'admin')
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                generated_password = @ldap.get_operation_result.extended_response[0][0]
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                assert generated_password, 'Should have generated a password'
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
         
     | 
| 
       57 
     | 
    
         
            -
                       'Old password should no longer be valid'
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                assert @ldap.bind(username: @dn, password: generated_password, method: :simple),
         
     | 
| 
       60 
     | 
    
         
            -
                       'New password should be valid'
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
              def test_password_modify_generate_no_old_password
         
     | 
| 
       64 
     | 
    
         
            -
                assert @ldap.password_modify(dn: @dn,
         
     | 
| 
       65 
     | 
    
         
            -
                                             auth: @auth)
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                generated_password = @ldap.get_operation_result.extended_response[0][0]
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                assert generated_password, 'Should have generated a password'
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
         
     | 
| 
       72 
     | 
    
         
            -
                       'Old password should no longer be valid'
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                assert @ldap.bind(username: @dn, password: generated_password, method: :simple),
         
     | 
| 
       75 
     | 
    
         
            -
                       'New password should be valid'
         
     | 
| 
       76 
     | 
    
         
            -
              end
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
              def test_password_modify_overwrite_old_password
         
     | 
| 
       79 
     | 
    
         
            -
                assert @ldap.password_modify(dn: @dn,
         
     | 
| 
       80 
     | 
    
         
            -
                                             auth: @admin_account,
         
     | 
| 
       81 
     | 
    
         
            -
                                             new_password: 'passworD3')
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                refute @ldap.bind(username: @dn, password: 'admin', method: :simple),
         
     | 
| 
       84 
     | 
    
         
            -
                       'Old password should no longer be valid'
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
                assert @ldap.bind(username: @dn, password: 'passworD3', method: :simple),
         
     | 
| 
       87 
     | 
    
         
            -
                       'New password should be valid'
         
     | 
| 
       88 
     | 
    
         
            -
              end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
              def teardown
         
     | 
| 
       91 
     | 
    
         
            -
                @ldap.delete dn: @dn
         
     | 
| 
       92 
     | 
    
         
            -
              end
         
     | 
| 
       93 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,46 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            # NOTE: These tests depend on the OpenLDAP retcode overlay.
         
     | 
| 
       4 
     | 
    
         
            -
            # See: section 12.12 http://www.openldap.org/doc/admin24/overlays.html
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            class TestReturnCodeIntegration < LDAPIntegrationTestCase
         
     | 
| 
       7 
     | 
    
         
            -
              def test_open_error
         
     | 
| 
       8 
     | 
    
         
            -
                @ldap.authenticate "cn=fake", "creds"
         
     | 
| 
       9 
     | 
    
         
            -
                @ldap.open do
         
     | 
| 
       10 
     | 
    
         
            -
                  result = @ldap.get_operation_result
         
     | 
| 
       11 
     | 
    
         
            -
                  assert_equal Net::LDAP::ResultCodeInvalidCredentials, result.code
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def test_operations_error
         
     | 
| 
       16 
     | 
    
         
            -
                refute @ldap.search(filter: "cn=operationsError", base: "ou=Retcodes,dc=example,dc=org")
         
     | 
| 
       17 
     | 
    
         
            -
                assert result = @ldap.get_operation_result
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultCodeOperationsError, result.code
         
     | 
| 
       20 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultStrings[Net::LDAP::ResultCodeOperationsError], result.message
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def test_protocol_error
         
     | 
| 
       24 
     | 
    
         
            -
                refute @ldap.search(filter: "cn=protocolError", base: "ou=Retcodes,dc=example,dc=org")
         
     | 
| 
       25 
     | 
    
         
            -
                assert result = @ldap.get_operation_result
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultCodeProtocolError, result.code
         
     | 
| 
       28 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultStrings[Net::LDAP::ResultCodeProtocolError], result.message
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              def test_time_limit_exceeded
         
     | 
| 
       32 
     | 
    
         
            -
                assert @ldap.search(filter: "cn=timeLimitExceeded", base: "ou=Retcodes,dc=example,dc=org")
         
     | 
| 
       33 
     | 
    
         
            -
                assert result = @ldap.get_operation_result
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultCodeTimeLimitExceeded, result.code
         
     | 
| 
       36 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultStrings[Net::LDAP::ResultCodeTimeLimitExceeded], result.message
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
              def test_size_limit_exceeded
         
     | 
| 
       40 
     | 
    
         
            -
                assert @ldap.search(filter: "cn=sizeLimitExceeded", base: "ou=Retcodes,dc=example,dc=org")
         
     | 
| 
       41 
     | 
    
         
            -
                assert result = @ldap.get_operation_result
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultCodeSizeLimitExceeded, result.code
         
     | 
| 
       44 
     | 
    
         
            -
                assert_equal Net::LDAP::ResultStrings[Net::LDAP::ResultCodeSizeLimitExceeded], result.message
         
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,77 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestSearchIntegration < LDAPIntegrationTestCase
         
     | 
| 
       4 
     | 
    
         
            -
              def test_search
         
     | 
| 
       5 
     | 
    
         
            -
                entries = []
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                result = @ldap.search(base: "dc=example,dc=org") do |entry|
         
     | 
| 
       8 
     | 
    
         
            -
                  assert_kind_of Net::LDAP::Entry, entry
         
     | 
| 
       9 
     | 
    
         
            -
                  entries << entry
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                refute entries.empty?
         
     | 
| 
       13 
     | 
    
         
            -
                assert_equal entries, result
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              def test_search_without_result
         
     | 
| 
       17 
     | 
    
         
            -
                entries = []
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                result = @ldap.search(base: "dc=example,dc=org", return_result: false) do |entry|
         
     | 
| 
       20 
     | 
    
         
            -
                  assert_kind_of Net::LDAP::Entry, entry
         
     | 
| 
       21 
     | 
    
         
            -
                  entries << entry
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                assert result
         
     | 
| 
       25 
     | 
    
         
            -
                refute_equal entries, result
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              def test_search_filter_string
         
     | 
| 
       29 
     | 
    
         
            -
                entries = @ldap.search(base: "dc=example,dc=org", filter: "(uid=user1)")
         
     | 
| 
       30 
     | 
    
         
            -
                assert_equal 1, entries.size
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              def test_search_filter_object
         
     | 
| 
       34 
     | 
    
         
            -
                filter = Net::LDAP::Filter.eq("uid", "user1") | Net::LDAP::Filter.eq("uid", "user2")
         
     | 
| 
       35 
     | 
    
         
            -
                entries = @ldap.search(base: "dc=example,dc=org", filter: filter)
         
     | 
| 
       36 
     | 
    
         
            -
                assert_equal 2, entries.size
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
              def test_search_constrained_attributes
         
     | 
| 
       40 
     | 
    
         
            -
                entry = @ldap.search(base: "uid=user1,ou=People,dc=example,dc=org", attributes: ["cn", "sn"]).first
         
     | 
| 
       41 
     | 
    
         
            -
                assert_equal [:cn, :dn, :sn], entry.attribute_names.sort  # :dn is always included
         
     | 
| 
       42 
     | 
    
         
            -
                assert_empty entry[:mail]
         
     | 
| 
       43 
     | 
    
         
            -
              end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              def test_search_attributes_only
         
     | 
| 
       46 
     | 
    
         
            -
                entry = @ldap.search(base: "uid=user1,ou=People,dc=example,dc=org", attributes_only: true).first
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                assert_empty entry[:cn], "unexpected attribute value: #{entry[:cn]}"
         
     | 
| 
       49 
     | 
    
         
            -
              end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              def test_search_timeout
         
     | 
| 
       52 
     | 
    
         
            -
                entries = []
         
     | 
| 
       53 
     | 
    
         
            -
                events = @service.subscribe "search.net_ldap_connection"
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                result = @ldap.search(base: "dc=example,dc=org", time: 5) do |entry|
         
     | 
| 
       56 
     | 
    
         
            -
                  assert_kind_of Net::LDAP::Entry, entry
         
     | 
| 
       57 
     | 
    
         
            -
                  entries << entry
         
     | 
| 
       58 
     | 
    
         
            -
                end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                payload, = events.pop
         
     | 
| 
       61 
     | 
    
         
            -
                assert_equal 5, payload[:time]
         
     | 
| 
       62 
     | 
    
         
            -
                assert_equal entries, result
         
     | 
| 
       63 
     | 
    
         
            -
              end
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
              # http://tools.ietf.org/html/rfc4511#section-4.5.1.4
         
     | 
| 
       66 
     | 
    
         
            -
              def test_search_with_size
         
     | 
| 
       67 
     | 
    
         
            -
                entries = []
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                result = @ldap.search(base: "dc=example,dc=org", size: 1) do |entry|
         
     | 
| 
       70 
     | 
    
         
            -
                  assert_kind_of Net::LDAP::Entry, entry
         
     | 
| 
       71 
     | 
    
         
            -
                  entries << entry
         
     | 
| 
       72 
     | 
    
         
            -
                end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                assert_equal 1, result.size
         
     | 
| 
       75 
     | 
    
         
            -
                assert_equal entries, result
         
     | 
| 
       76 
     | 
    
         
            -
              end
         
     | 
| 
       77 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /.vagrant
         
     | 
    
        data/test/test_auth_adapter.rb
    DELETED
    
    | 
         @@ -1,15 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestAuthAdapter < Test::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
              class FakeSocket
         
     | 
| 
       5 
     | 
    
         
            -
                def initialize(*args)
         
     | 
| 
       6 
     | 
    
         
            -
                end
         
     | 
| 
       7 
     | 
    
         
            -
              end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_undefined_auth_adapter
         
     | 
| 
       10 
     | 
    
         
            -
                conn = Net::LDAP::Connection.new(host: 'ldap.example.com', port: 379, :socket_class => FakeSocket)
         
     | 
| 
       11 
     | 
    
         
            -
                assert_raise Net::LDAP::AuthMethodUnsupportedError, "Unsupported auth method (foo)" do
         
     | 
| 
       12 
     | 
    
         
            -
                  conn.bind(method: :foo)
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
            end
         
     | 
    
        data/test/test_dn.rb
    DELETED
    
    | 
         @@ -1,43 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative '../lib/net/ldap/dn'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestDN < Test::Unit::TestCase
         
     | 
| 
       5 
     | 
    
         
            -
              def test_escape
         
     | 
| 
       6 
     | 
    
         
            -
                assert_equal '\\,\\+\\"\\\\\\<\\>\\;', Net::LDAP::DN.escape(',+"\\<>;')
         
     | 
| 
       7 
     | 
    
         
            -
              end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def test_escape_on_initialize
         
     | 
| 
       10 
     | 
    
         
            -
                dn = Net::LDAP::DN.new('cn', ',+"\\<>;', 'ou=company')
         
     | 
| 
       11 
     | 
    
         
            -
                assert_equal 'cn=\\,\\+\\"\\\\\\<\\>\\;,ou=company', dn.to_s
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              def test_to_a
         
     | 
| 
       15 
     | 
    
         
            -
                dn = Net::LDAP::DN.new('cn=James, ou=Company\\,\\20LLC')
         
     | 
| 
       16 
     | 
    
         
            -
                assert_equal ['cn', 'James', 'ou', 'Company, LLC'], dn.to_a
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              def test_to_a_parenthesis
         
     | 
| 
       20 
     | 
    
         
            -
                dn = Net::LDAP::DN.new('cn =  \ James , ou  =  "Comp\28ny"  ')
         
     | 
| 
       21 
     | 
    
         
            -
                assert_equal ['cn', ' James', 'ou', 'Comp(ny'], dn.to_a
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              def test_to_a_hash_symbol
         
     | 
| 
       25 
     | 
    
         
            -
                dn = Net::LDAP::DN.new('1.23.4=  #A3B4D5  ,ou=Company')
         
     | 
| 
       26 
     | 
    
         
            -
                assert_equal ['1.23.4', '#A3B4D5', 'ou', 'Company'], dn.to_a
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              def test_bad_input_raises_error
         
     | 
| 
       30 
     | 
    
         
            -
                [
         
     | 
| 
       31 
     | 
    
         
            -
                  'cn=James,',
         
     | 
| 
       32 
     | 
    
         
            -
                  'cn=#aa aa',
         
     | 
| 
       33 
     | 
    
         
            -
                  'cn="James',
         
     | 
| 
       34 
     | 
    
         
            -
                  'cn=J\ames',
         
     | 
| 
       35 
     | 
    
         
            -
                  'cn=\\',
         
     | 
| 
       36 
     | 
    
         
            -
                  '1.2.d=Value',
         
     | 
| 
       37 
     | 
    
         
            -
                  'd1.2=Value',
         
     | 
| 
       38 
     | 
    
         
            -
                ].each do |input|
         
     | 
| 
       39 
     | 
    
         
            -
                  dn = Net::LDAP::DN.new(input)
         
     | 
| 
       40 
     | 
    
         
            -
                  assert_raises(Net::LDAP::InvalidDNError) { dn.to_a }
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
            end
         
     | 
    
        data/test/test_entry.rb
    DELETED
    
    | 
         @@ -1,66 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestEntry < Test::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
              def setup
         
     | 
| 
       5 
     | 
    
         
            -
                @entry = Net::LDAP::Entry.new 'cn=Barbara,o=corp'
         
     | 
| 
       6 
     | 
    
         
            -
              end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              def test_dn
         
     | 
| 
       9 
     | 
    
         
            -
                assert_equal 'cn=Barbara,o=corp', @entry.dn
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              def test_empty_array_when_accessing_nonexistent_attribute
         
     | 
| 
       13 
     | 
    
         
            -
                assert_equal [], @entry['sn']
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              def test_attribute_assignment
         
     | 
| 
       17 
     | 
    
         
            -
                @entry['sn'] = 'Jensen'
         
     | 
| 
       18 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry['sn']
         
     | 
| 
       19 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry.sn
         
     | 
| 
       20 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry[:sn]
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                @entry[:sn] = 'Jensen'
         
     | 
| 
       23 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry['sn']
         
     | 
| 
       24 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry.sn
         
     | 
| 
       25 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry[:sn]
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                @entry.sn = 'Jensen'
         
     | 
| 
       28 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry['sn']
         
     | 
| 
       29 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry.sn
         
     | 
| 
       30 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry[:sn]
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              def test_case_insensitive_attribute_names
         
     | 
| 
       34 
     | 
    
         
            -
                @entry['sn'] = 'Jensen'
         
     | 
| 
       35 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry.sn
         
     | 
| 
       36 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry.Sn
         
     | 
| 
       37 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry.SN
         
     | 
| 
       38 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry['sn']
         
     | 
| 
       39 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry['Sn']
         
     | 
| 
       40 
     | 
    
         
            -
                assert_equal ['Jensen'], @entry['SN']
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            class TestEntryLDIF < Test::Unit::TestCase
         
     | 
| 
       45 
     | 
    
         
            -
              def setup
         
     | 
| 
       46 
     | 
    
         
            -
                @entry = Net::LDAP::Entry.from_single_ldif_string(
         
     | 
| 
       47 
     | 
    
         
            -
                  %Q{dn: something
         
     | 
| 
       48 
     | 
    
         
            -
            foo: foo
         
     | 
| 
       49 
     | 
    
         
            -
            barAttribute: bar
         
     | 
| 
       50 
     | 
    
         
            -
                  },
         
     | 
| 
       51 
     | 
    
         
            -
                )
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
              def test_attribute
         
     | 
| 
       55 
     | 
    
         
            -
                assert_equal ['foo'], @entry.foo
         
     | 
| 
       56 
     | 
    
         
            -
                assert_equal ['foo'], @entry.Foo
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
              def test_modify_attribute
         
     | 
| 
       60 
     | 
    
         
            -
                @entry.foo = 'bar'
         
     | 
| 
       61 
     | 
    
         
            -
                assert_equal ['bar'], @entry.foo
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                @entry.fOo = 'baz'
         
     | 
| 
       64 
     | 
    
         
            -
                assert_equal ['baz'], @entry.foo
         
     | 
| 
       65 
     | 
    
         
            -
              end
         
     | 
| 
       66 
     | 
    
         
            -
            end
         
     | 
    
        data/test/test_filter.rb
    DELETED
    
    | 
         @@ -1,223 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestFilter < Test::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
              Filter = Net::LDAP::Filter
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              def test_bug_7534_rfc2254
         
     | 
| 
       7 
     | 
    
         
            -
                assert_equal("(cn=Tim Wizard)",
         
     | 
| 
       8 
     | 
    
         
            -
                             Filter.from_rfc2254("(cn=Tim Wizard)").to_rfc2254)
         
     | 
| 
       9 
     | 
    
         
            -
              end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              def test_invalid_filter_string
         
     | 
| 
       12 
     | 
    
         
            -
                assert_raises(Net::LDAP::FilterSyntaxInvalidError) { Filter.from_rfc2254("") }
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def test_invalid_filter
         
     | 
| 
       16 
     | 
    
         
            -
                assert_raises(Net::LDAP::OperatorError) do
         
     | 
| 
       17 
     | 
    
         
            -
                  # This test exists to prove that our constructor blocks unknown filter
         
     | 
| 
       18 
     | 
    
         
            -
                  # types. All filters must be constructed using helpers.
         
     | 
| 
       19 
     | 
    
         
            -
                  Filter.__send__(:new, :xx, nil, nil)
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def test_to_s
         
     | 
| 
       24 
     | 
    
         
            -
                assert_equal("(uid=george *)", Filter.eq("uid", "george *").to_s)
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              def test_convenience_filters
         
     | 
| 
       28 
     | 
    
         
            -
                assert_equal("(uid=\\2A)", Filter.equals("uid", "*").to_s)
         
     | 
| 
       29 
     | 
    
         
            -
                assert_equal("(uid=\\28*)", Filter.begins("uid", "(").to_s)
         
     | 
| 
       30 
     | 
    
         
            -
                assert_equal("(uid=*\\29)", Filter.ends("uid", ")").to_s)
         
     | 
| 
       31 
     | 
    
         
            -
                assert_equal("(uid=*\\5C*)", Filter.contains("uid", "\\").to_s)
         
     | 
| 
       32 
     | 
    
         
            -
              end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
              def test_c2
         
     | 
| 
       35 
     | 
    
         
            -
                assert_equal("(uid=george *)",
         
     | 
| 
       36 
     | 
    
         
            -
                             Filter.from_rfc2254("uid=george *").to_rfc2254)
         
     | 
| 
       37 
     | 
    
         
            -
                assert_equal("(uid:=george *)",
         
     | 
| 
       38 
     | 
    
         
            -
                             Filter.from_rfc2254("uid:=george *").to_rfc2254)
         
     | 
| 
       39 
     | 
    
         
            -
                assert_equal("(uid=george*)",
         
     | 
| 
       40 
     | 
    
         
            -
                             Filter.from_rfc2254(" ( uid =  george*   ) ").to_rfc2254)
         
     | 
| 
       41 
     | 
    
         
            -
                assert_equal("(!(uid=george*))",
         
     | 
| 
       42 
     | 
    
         
            -
                             Filter.from_rfc2254("uid!=george*").to_rfc2254)
         
     | 
| 
       43 
     | 
    
         
            -
                assert_equal("(uid<=george*)",
         
     | 
| 
       44 
     | 
    
         
            -
                             Filter.from_rfc2254("uid <= george*").to_rfc2254)
         
     | 
| 
       45 
     | 
    
         
            -
                assert_equal("(uid>=george*)",
         
     | 
| 
       46 
     | 
    
         
            -
                             Filter.from_rfc2254("uid>=george*").to_rfc2254)
         
     | 
| 
       47 
     | 
    
         
            -
                assert_equal("(&(uid=george*)(mail=*))",
         
     | 
| 
       48 
     | 
    
         
            -
                             Filter.from_rfc2254("(& (uid=george* ) (mail=*))").to_rfc2254)
         
     | 
| 
       49 
     | 
    
         
            -
                assert_equal("(|(uid=george*)(mail=*))",
         
     | 
| 
       50 
     | 
    
         
            -
                             Filter.from_rfc2254("(| (uid=george* ) (mail=*))").to_rfc2254)
         
     | 
| 
       51 
     | 
    
         
            -
                assert_equal("(!(mail=*))",
         
     | 
| 
       52 
     | 
    
         
            -
                             Filter.from_rfc2254("(! (mail=*))").to_rfc2254)
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              def test_filter_with_single_clause
         
     | 
| 
       56 
     | 
    
         
            -
                assert_equal("(cn=name)", Net::LDAP::Filter.construct("(&(cn=name))").to_s)
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
              def test_filters_from_ber
         
     | 
| 
       60 
     | 
    
         
            -
                [
         
     | 
| 
       61 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*"),
         
     | 
| 
       62 
     | 
    
         
            -
                  Net::LDAP::Filter.pres("objectclass"),
         
     | 
| 
       63 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "ou"),
         
     | 
| 
       64 
     | 
    
         
            -
                  Net::LDAP::Filter.ge("uid", "500"),
         
     | 
| 
       65 
     | 
    
         
            -
                  Net::LDAP::Filter.le("uid", "500"),
         
     | 
| 
       66 
     | 
    
         
            -
                  (~ Net::LDAP::Filter.pres("objectclass")),
         
     | 
| 
       67 
     | 
    
         
            -
                  (Net::LDAP::Filter.pres("objectclass") & Net::LDAP::Filter.pres("ou")),
         
     | 
| 
       68 
     | 
    
         
            -
                  (Net::LDAP::Filter.pres("objectclass") & Net::LDAP::Filter.pres("ou") & Net::LDAP::Filter.pres("sn")),
         
     | 
| 
       69 
     | 
    
         
            -
                  (Net::LDAP::Filter.pres("objectclass") | Net::LDAP::Filter.pres("ou") | Net::LDAP::Filter.pres("sn")),
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*aaa"),
         
     | 
| 
       72 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*aaa*bbb"),
         
     | 
| 
       73 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*aaa*bbb*ccc"),
         
     | 
| 
       74 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "aaa*bbb"),
         
     | 
| 
       75 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "aaa*bbb*ccc"),
         
     | 
| 
       76 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "abc*def*1111*22*g"),
         
     | 
| 
       77 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*aaa*"),
         
     | 
| 
       78 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*aaa*bbb*"),
         
     | 
| 
       79 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "*aaa*bbb*ccc*"),
         
     | 
| 
       80 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "aaa*"),
         
     | 
| 
       81 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "aaa*bbb*"),
         
     | 
| 
       82 
     | 
    
         
            -
                  Net::LDAP::Filter.eq("objectclass", "aaa*bbb*ccc*"),
         
     | 
| 
       83 
     | 
    
         
            -
                ].each do |ber|
         
     | 
| 
       84 
     | 
    
         
            -
                  f = Net::LDAP::Filter.parse_ber(ber.to_ber.read_ber(Net::LDAP::AsnSyntax))
         
     | 
| 
       85 
     | 
    
         
            -
                  assert(f == ber)
         
     | 
| 
       86 
     | 
    
         
            -
                  assert_equal(f.to_ber, ber.to_ber)
         
     | 
| 
       87 
     | 
    
         
            -
                end
         
     | 
| 
       88 
     | 
    
         
            -
              end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
              def test_ber_from_rfc2254_filter
         
     | 
| 
       91 
     | 
    
         
            -
                [
         
     | 
| 
       92 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*"),
         
     | 
| 
       93 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=ou"),
         
     | 
| 
       94 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("uid >= 500"),
         
     | 
| 
       95 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("uid <= 500"),
         
     | 
| 
       96 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("(!(uid=*))"),
         
     | 
| 
       97 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("(&(uid=*)(objectclass=*))"),
         
     | 
| 
       98 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("(&(uid=*)(objectclass=*)(sn=*))"),
         
     | 
| 
       99 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("(|(uid=*)(objectclass=*))"),
         
     | 
| 
       100 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("(|(uid=*)(objectclass=*)(sn=*))"),
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa"),
         
     | 
| 
       103 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa*bbb"),
         
     | 
| 
       104 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa bbb"),
         
     | 
| 
       105 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa  bbb"),
         
     | 
| 
       106 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa*bbb*ccc"),
         
     | 
| 
       107 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=aaa*bbb"),
         
     | 
| 
       108 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=aaa*bbb*ccc"),
         
     | 
| 
       109 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=abc*def*1111*22*g"),
         
     | 
| 
       110 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa*"),
         
     | 
| 
       111 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa*bbb*"),
         
     | 
| 
       112 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=*aaa*bbb*ccc*"),
         
     | 
| 
       113 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=aaa*"),
         
     | 
| 
       114 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=aaa*bbb*"),
         
     | 
| 
       115 
     | 
    
         
            -
                  Net::LDAP::Filter.construct("objectclass=aaa*bbb*ccc*"),
         
     | 
| 
       116 
     | 
    
         
            -
                ].each do |ber|
         
     | 
| 
       117 
     | 
    
         
            -
                  f = Net::LDAP::Filter.parse_ber(ber.to_ber.read_ber(Net::LDAP::AsnSyntax))
         
     | 
| 
       118 
     | 
    
         
            -
                  assert(f == ber)
         
     | 
| 
       119 
     | 
    
         
            -
                  assert_equal(f.to_ber, ber.to_ber)
         
     | 
| 
       120 
     | 
    
         
            -
                end
         
     | 
| 
       121 
     | 
    
         
            -
              end
         
     | 
| 
       122 
     | 
    
         
            -
            end
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
            # tests ported over from rspec. Not sure if these overlap with the above
         
     | 
| 
       125 
     | 
    
         
            -
            # https://github.com/ruby-ldap/ruby-net-ldap/pull/121
         
     | 
| 
       126 
     | 
    
         
            -
            class TestFilterRSpec < Test::Unit::TestCase
         
     | 
| 
       127 
     | 
    
         
            -
              def test_ex_convert
         
     | 
| 
       128 
     | 
    
         
            -
                assert_equal '(foo:=bar)', Net::LDAP::Filter.ex('foo', 'bar').to_s
         
     | 
| 
       129 
     | 
    
         
            -
              end
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
              def test_ex_rfc2254_roundtrip
         
     | 
| 
       132 
     | 
    
         
            -
                filter = Net::LDAP::Filter.ex('foo', 'bar')
         
     | 
| 
       133 
     | 
    
         
            -
                assert_equal filter, Net::LDAP::Filter.from_rfc2254(filter.to_s)
         
     | 
| 
       134 
     | 
    
         
            -
              end
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
              def test_ber_conversion
         
     | 
| 
       137 
     | 
    
         
            -
                filter = Net::LDAP::Filter.ex('foo', 'bar')
         
     | 
| 
       138 
     | 
    
         
            -
                ber = filter.to_ber
         
     | 
| 
       139 
     | 
    
         
            -
                assert_equal filter, Net::LDAP::Filter.parse_ber(ber.read_ber(Net::LDAP::AsnSyntax))
         
     | 
| 
       140 
     | 
    
         
            -
              end
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
              [
         
     | 
| 
       143 
     | 
    
         
            -
                '(o:dn:=Ace Industry)',
         
     | 
| 
       144 
     | 
    
         
            -
                '(:dn:2.4.8.10:=Dino)',
         
     | 
| 
       145 
     | 
    
         
            -
                '(cn:dn:1.2.3.4.5:=John Smith)',
         
     | 
| 
       146 
     | 
    
         
            -
                '(sn:dn:2.4.6.8.10:=Barbara Jones)',
         
     | 
| 
       147 
     | 
    
         
            -
                '(&(sn:dn:2.4.6.8.10:=Barbara Jones))',
         
     | 
| 
       148 
     | 
    
         
            -
              ].each_with_index do |filter_str, index|
         
     | 
| 
       149 
     | 
    
         
            -
                define_method "test_decode_filter_#{index}" do
         
     | 
| 
       150 
     | 
    
         
            -
                  filter = Net::LDAP::Filter.from_rfc2254(filter_str)
         
     | 
| 
       151 
     | 
    
         
            -
                  assert_kind_of Net::LDAP::Filter, filter
         
     | 
| 
       152 
     | 
    
         
            -
                end
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                define_method "test_ber_conversion_#{index}" do
         
     | 
| 
       155 
     | 
    
         
            -
                  filter = Net::LDAP::Filter.from_rfc2254(filter_str)
         
     | 
| 
       156 
     | 
    
         
            -
                  ber = Net::LDAP::Filter.from_rfc2254(filter_str).to_ber
         
     | 
| 
       157 
     | 
    
         
            -
                  assert_equal filter, Net::LDAP::Filter.parse_ber(ber.read_ber(Net::LDAP::AsnSyntax))
         
     | 
| 
       158 
     | 
    
         
            -
                end
         
     | 
| 
       159 
     | 
    
         
            -
              end
         
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
              def test_apostrophes
         
     | 
| 
       162 
     | 
    
         
            -
                assert_equal "(uid=O'Keefe)", Net::LDAP::Filter.construct("uid=O'Keefe").to_rfc2254
         
     | 
| 
       163 
     | 
    
         
            -
              end
         
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
              def test_equals
         
     | 
| 
       166 
     | 
    
         
            -
                assert_equal Net::LDAP::Filter.eq('dn', 'f\2Aoo'), Net::LDAP::Filter.equals('dn', 'f*oo')
         
     | 
| 
       167 
     | 
    
         
            -
              end
         
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
              def test_begins
         
     | 
| 
       170 
     | 
    
         
            -
                assert_equal Net::LDAP::Filter.eq('dn', 'f\2Aoo*'), Net::LDAP::Filter.begins('dn', 'f*oo')
         
     | 
| 
       171 
     | 
    
         
            -
              end
         
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
              def test_ends
         
     | 
| 
       174 
     | 
    
         
            -
                assert_equal Net::LDAP::Filter.eq('dn', '*f\2Aoo'), Net::LDAP::Filter.ends('dn', 'f*oo')
         
     | 
| 
       175 
     | 
    
         
            -
              end
         
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
       177 
     | 
    
         
            -
              def test_contains
         
     | 
| 
       178 
     | 
    
         
            -
                assert_equal Net::LDAP::Filter.eq('dn', '*f\2Aoo*'), Net::LDAP::Filter.contains('dn', 'f*oo')
         
     | 
| 
       179 
     | 
    
         
            -
              end
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
              def test_escape
         
     | 
| 
       182 
     | 
    
         
            -
                # escapes nul, *, (, ) and \\
         
     | 
| 
       183 
     | 
    
         
            -
                assert_equal "\\00\\2A\\28\\29\\5C", Net::LDAP::Filter.escape("\0*()\\")
         
     | 
| 
       184 
     | 
    
         
            -
              end
         
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
              def test_well_known_ber_string
         
     | 
| 
       187 
     | 
    
         
            -
                ber = "\xa4\x2d" \
         
     | 
| 
       188 
     | 
    
         
            -
                  "\x04\x0b" "objectclass" \
         
     | 
| 
       189 
     | 
    
         
            -
                  "\x30\x1e" \
         
     | 
| 
       190 
     | 
    
         
            -
                  "\x80\x08" "foo" "*\\" "bar" \
         
     | 
| 
       191 
     | 
    
         
            -
                  "\x81\x08" "foo" "*\\" "bar" \
         
     | 
| 
       192 
     | 
    
         
            -
                  "\x82\x08" "foo" "*\\" "bar".b
         
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
                [
         
     | 
| 
       195 
     | 
    
         
            -
                  "foo" "\\2A\\5C" "bar",
         
     | 
| 
       196 
     | 
    
         
            -
                  "foo" "\\2a\\5c" "bar",
         
     | 
| 
       197 
     | 
    
         
            -
                  "foo" "\\2A\\5c" "bar",
         
     | 
| 
       198 
     | 
    
         
            -
                  "foo" "\\2a\\5C" "bar",
         
     | 
| 
       199 
     | 
    
         
            -
                ].each do |escaped|
         
     | 
| 
       200 
     | 
    
         
            -
                  # unescapes escaped characters
         
     | 
| 
       201 
     | 
    
         
            -
                  filter = Net::LDAP::Filter.eq("objectclass", "#{escaped}*#{escaped}*#{escaped}")
         
     | 
| 
       202 
     | 
    
         
            -
                  assert_equal ber, filter.to_ber
         
     | 
| 
       203 
     | 
    
         
            -
                end
         
     | 
| 
       204 
     | 
    
         
            -
              end
         
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
       206 
     | 
    
         
            -
              def test_parse_ber_escapes_characters
         
     | 
| 
       207 
     | 
    
         
            -
                ber = "\xa4\x2d" \
         
     | 
| 
       208 
     | 
    
         
            -
                  "\x04\x0b" "objectclass" \
         
     | 
| 
       209 
     | 
    
         
            -
                  "\x30\x1e" \
         
     | 
| 
       210 
     | 
    
         
            -
                  "\x80\x08" "foo" "*\\" "bar" \
         
     | 
| 
       211 
     | 
    
         
            -
                  "\x81\x08" "foo" "*\\" "bar" \
         
     | 
| 
       212 
     | 
    
         
            -
                  "\x82\x08" "foo" "*\\" "bar".b
         
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
       214 
     | 
    
         
            -
                escaped = Net::LDAP::Filter.escape("foo" "*\\" "bar")
         
     | 
| 
       215 
     | 
    
         
            -
                filter = Net::LDAP::Filter.parse_ber(ber.read_ber(Net::LDAP::AsnSyntax))
         
     | 
| 
       216 
     | 
    
         
            -
                assert_equal "(objectclass=#{escaped}*#{escaped}*#{escaped})", filter.to_s
         
     | 
| 
       217 
     | 
    
         
            -
              end
         
     | 
| 
       218 
     | 
    
         
            -
             
     | 
| 
       219 
     | 
    
         
            -
              def test_unescape_fixnums
         
     | 
| 
       220 
     | 
    
         
            -
                filter = Net::LDAP::Filter.eq("objectclass", 3)
         
     | 
| 
       221 
     | 
    
         
            -
                assert_equal "\xA3\x10\x04\vobjectclass\x04\x013".b, filter.to_ber
         
     | 
| 
       222 
     | 
    
         
            -
              end
         
     | 
| 
       223 
     | 
    
         
            -
            end
         
     | 
    
        data/test/test_filter_parser.rb
    DELETED
    
    | 
         @@ -1,29 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require_relative 'test_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class TestFilterParser < Test::Unit::TestCase
         
     | 
| 
       6 
     | 
    
         
            -
              def test_ascii
         
     | 
| 
       7 
     | 
    
         
            -
                assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=name)")
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              def test_multibyte_characters
         
     | 
| 
       11 
     | 
    
         
            -
                assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=名前)")
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              def test_brackets
         
     | 
| 
       15 
     | 
    
         
            -
                assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=[{something}])")
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              def test_slash
         
     | 
| 
       19 
     | 
    
         
            -
                assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(departmentNumber=FOO//BAR/FOO)")
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              def test_colons
         
     | 
| 
       23 
     | 
    
         
            -
                assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(ismemberof=cn=edu:berkeley:app:calmessages:deans,ou=campus groups,dc=berkeley,dc=edu)")
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              def test_attr_tag
         
     | 
| 
       27 
     | 
    
         
            -
                assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(mail;primary=jane@example.org)")
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
            end
         
     |