net-ldap 0.16.3 → 0.17.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +36 -0
  3. data/README.rdoc +9 -2
  4. data/lib/net/ldap.rb +25 -2
  5. data/lib/net/ldap/connection.rb +1 -1
  6. data/lib/net/ldap/dataset.rb +2 -2
  7. data/lib/net/ldap/entry.rb +13 -2
  8. data/lib/net/ldap/error.rb +1 -26
  9. data/lib/net/ldap/password.rb +4 -0
  10. data/lib/net/ldap/version.rb +1 -1
  11. metadata +12 -88
  12. data/.gitignore +0 -10
  13. data/.rubocop.yml +0 -20
  14. data/.rubocop_todo.yml +0 -723
  15. data/.travis.yml +0 -57
  16. data/CONTRIBUTING.md +0 -54
  17. data/Gemfile +0 -2
  18. data/Rakefile +0 -23
  19. data/net-ldap.gemspec +0 -37
  20. data/script/changelog +0 -47
  21. data/script/ldap-docker +0 -12
  22. data/script/package +0 -7
  23. data/script/release +0 -16
  24. data/test/ber/core_ext/test_array.rb +0 -22
  25. data/test/ber/core_ext/test_string.rb +0 -25
  26. data/test/ber/test_ber.rb +0 -153
  27. data/test/fixtures/ca/docker-ca.pem +0 -18
  28. data/test/fixtures/ldif/06-retcode.ldif +0 -75
  29. data/test/fixtures/ldif/50-seed.ldif +0 -374
  30. data/test/integration/test_add.rb +0 -26
  31. data/test/integration/test_ber.rb +0 -30
  32. data/test/integration/test_bind.rb +0 -221
  33. data/test/integration/test_delete.rb +0 -29
  34. data/test/integration/test_open.rb +0 -87
  35. data/test/integration/test_password_modify.rb +0 -93
  36. data/test/integration/test_return_codes.rb +0 -46
  37. data/test/integration/test_search.rb +0 -77
  38. data/test/support/vm/openldap/.gitignore +0 -1
  39. data/test/test_auth_adapter.rb +0 -15
  40. data/test/test_dn.rb +0 -43
  41. data/test/test_entry.rb +0 -66
  42. data/test/test_filter.rb +0 -223
  43. data/test/test_filter_parser.rb +0 -29
  44. data/test/test_helper.rb +0 -73
  45. data/test/test_ldap.rb +0 -114
  46. data/test/test_ldap_connection.rb +0 -505
  47. data/test/test_ldif.rb +0 -104
  48. data/test/test_password.rb +0 -10
  49. data/test/test_rename.rb +0 -77
  50. data/test/test_search.rb +0 -39
  51. data/test/test_snmp.rb +0 -118
  52. data/test/test_ssl_ber.rb +0 -44
  53. data/test/testdata.ldif +0 -101
  54. data/testserver/ldapserver.rb +0 -200
  55. data/testserver/testdata.ldif +0 -101
@@ -1,57 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0
4
- - 2.1
5
- - 2.2
6
- - 2.3
7
- - 2.4
8
- - 2.5
9
- - 2.6
10
- - 2.7
11
- - jruby-9.2
12
- # optional
13
- - ruby-head
14
- - jruby-19mode
15
- - jruby-9.2
16
- - jruby-head
17
-
18
- addons:
19
- hosts:
20
- - ldap.example.org # needed for TLS verification
21
-
22
- services:
23
- - docker
24
-
25
- env:
26
- - INTEGRATION=openldap
27
-
28
- before_install:
29
- - gem update bundler
30
-
31
- install:
32
- - >
33
- docker run \
34
- --hostname ldap.example.org \
35
- --env LDAP_TLS_VERIFY_CLIENT=try \
36
- -p 389:389 \
37
- -p 636:636 \
38
- -v "$(pwd)"/test/fixtures/ldif:/container/service/slapd/assets/config/bootstrap/ldif/custom \
39
- --name openldap \
40
- --detach \
41
- osixia/openldap:1.3.0 \
42
- --copy-service \
43
- --loglevel debug \
44
- - bundle install
45
-
46
- script: bundle exec rake ci
47
-
48
- matrix:
49
- allow_failures:
50
- - rvm: ruby-head
51
- - rvm: jruby-19mode
52
- - rvm: jruby-9.2
53
- - rvm: jruby-head
54
- fast_finish: true
55
-
56
- notifications:
57
- email: false
@@ -1,54 +0,0 @@
1
- # Contribution guide
2
-
3
- Thank you for using net-ldap. If you'd like to help, keep these guidelines in
4
- mind.
5
-
6
- ## Submitting a New Issue
7
-
8
- If you find a bug, or would like to propose an idea, file a [new issue][issues].
9
- Include as many details as possible:
10
-
11
- - Version of net-ldap gem
12
- - LDAP server version
13
- - Queries, connection information, any other input
14
- - output or error messages
15
-
16
- ## Sending a Pull Request
17
-
18
- [Pull requests][pr] are always welcome!
19
-
20
- Check out [the project's issues list][issues] for ideas on what could be improved.
21
-
22
- Before sending, please add tests and ensure the test suite passes.
23
-
24
- To run the full suite:
25
-
26
- `bundle exec rake`
27
-
28
- To run a specific test file:
29
-
30
- `bundle exec ruby test/test_ldap.rb`
31
-
32
- To run a specific test:
33
-
34
- `bundle exec ruby test/test_ldap.rb -n test_instrument_bind`
35
-
36
- Pull requests will trigger automatic continuous integration builds on
37
- [TravisCI][travis]. To run integration tests locally, see the `test/support`
38
- folder.
39
-
40
- ## Styleguide
41
-
42
- ```ruby
43
- # 1.9+ style hashes
44
- {key: "value"}
45
-
46
- # Multi-line arguments with `\`
47
- MyClass.new \
48
- foo: 'bar',
49
- baz: 'garply'
50
- ```
51
-
52
- [issues]: https://github.com/ruby-ldap/ruby-net-ldap/issues
53
- [pr]: https://help.github.com/articles/using-pull-requests
54
- [travis]: https://travis-ci.org/ruby-ldap/ruby-net-ldap
data/Gemfile DELETED
@@ -1,2 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
data/Rakefile DELETED
@@ -1,23 +0,0 @@
1
- # -*- ruby encoding: utf-8 -*-
2
- # vim: syntax=ruby
3
-
4
- require 'rake/testtask'
5
- require 'rubocop/rake_task'
6
- require 'bundler'
7
-
8
- RuboCop::RakeTask.new
9
-
10
- Rake::TestTask.new do |t|
11
- t.libs << 'test'
12
- t.test_files = FileList['test/**/test_*.rb']
13
- t.verbose = true
14
- t.description = 'Run tests, set INTEGRATION=openldap to run integration tests, INTEGRATION_HOST and INTEGRATION_PORT are also supported'
15
- end
16
-
17
- desc 'Run tests and RuboCop (RuboCop runs on mri only)'
18
- task ci: Bundler.current_ruby.mri? ? [:test, :rubocop] : [:test]
19
-
20
- desc 'Run tests and RuboCop'
21
- task rubotest: [:test, :rubocop]
22
-
23
- task default: Bundler.current_ruby.mri? ? [:test, :rubocop] : [:test]
@@ -1,37 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require_relative 'lib/net/ldap/version'
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{net-ldap}
8
- s.version = Net::LDAP::VERSION
9
- s.license = "MIT"
10
- s.authors = ["Francis Cianfrocca", "Emiel van de Laar", "Rory O'Connell", "Kaspar Schiess", "Austin Ziegler", "Michael Schaarschmidt"]
11
- s.description = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the
12
- Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
13
- accessing distributed directory services. Net::LDAP is written completely in
14
- Ruby with no external dependencies. It supports most LDAP client features and a
15
- subset of server features as well.
16
-
17
- Net::LDAP has been tested against modern popular LDAP servers including
18
- OpenLDAP and Active Directory. The current release is mostly compliant with
19
- earlier versions of the IETF LDAP RFCs (2251-2256, 2829-2830, 3377, and 3771).
20
- Our roadmap for Net::LDAP 1.0 is to gain full <em>client</em> compliance with
21
- the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).}
22
- s.email = ["blackhedd@rubyforge.org", "gemiel@gmail.com", "rory.ocon@gmail.com", "kaspar.schiess@absurd.li", "austin@rubyforge.org"]
23
- s.extra_rdoc_files = ["Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.rdoc"]
24
- s.files = `git ls-files`.split $/
25
- s.test_files = s.files.grep(%r{^test})
26
- s.homepage = %q{http://github.com/ruby-ldap/ruby-net-ldap}
27
- s.rdoc_options = ["--main", "README.rdoc"]
28
- s.require_paths = ["lib"]
29
- s.required_ruby_version = ">= 2.0.0"
30
- s.summary = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing distributed directory services}
31
-
32
- s.add_development_dependency("flexmock", "~> 1.3")
33
- s.add_development_dependency("rake", "~> 12.3.3")
34
- s.add_development_dependency("rubocop", "~> 0.49.0")
35
- s.add_development_dependency("test-unit")
36
- s.add_development_dependency("byebug") unless RUBY_PLATFORM == "java"
37
- end
@@ -1,47 +0,0 @@
1
- #!/bin/bash
2
- # Usage: script/changelog [-r <repo>] [-b <base>] [-h <head>]
3
- #
4
- # repo: BASE string of GitHub REPOsitory url. e.g. "user_or_org/REPOsitory". Defaults to git remote url.
5
- # base: git ref to compare from. e.g. "v1.3.1". Defaults to latest git tag.
6
- # head: git ref to compare to. Defaults to "HEAD".
7
- #
8
- # Generate a changelog preview from pull requests merged between `base` and
9
- # `head`.
10
- #
11
- # https://github.com/jch/release-scripts/blob/master/changelog
12
- set -e
13
-
14
- [ $# -eq 0 ] && set -- --help
15
- while [[ $# > 1 ]]
16
- do
17
- key="$1"
18
- case $key in
19
- -r|--repo)
20
- repo="$2"
21
- shift
22
- ;;
23
- -b|--base)
24
- base="$2"
25
- shift
26
- ;;
27
- -h|--head)
28
- head="$2"
29
- shift
30
- ;;
31
- *)
32
- ;;
33
- esac
34
- shift
35
- done
36
-
37
- repo="${repo:-$(git remote -v | grep push | awk '{print $2}' | cut -d'/' -f4- | sed 's/\.git//')}"
38
- base="${base:-$(git tag -l | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -n 1)}"
39
- head="${head:-HEAD}"
40
- api_url="https://api.github.com"
41
-
42
- # get merged PR's. Better way is to query the API for these, but this is easier
43
- for pr in $(git log --oneline $base..$head | grep "Merge pull request" | awk '{gsub("#",""); print $5}')
44
- do
45
- # frustrated with trying to pull out the right values, fell back to ruby
46
- curl -s "$api_url/repos/$repo/pulls/$pr" | ruby -rjson -e 'pr=JSON.parse(STDIN.read); puts "* #{pr[%q(title)]} {##{pr[%q(number)]}}[#{pr[%q(html_url)]}]"'
47
- done
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Usage: script/ldap-docker
3
- #
4
- # Starts a openldap docker container ready for integration tests
5
-
6
- docker run --rm -ti \
7
- --hostname ldap.example.org \
8
- --env LDAP_TLS_VERIFY_CLIENT=try \
9
- -p 389:389 -p 636:636 \
10
- -v "$(pwd)"/test/fixtures/ldif:/container/service/slapd/assets/config/bootstrap/ldif/custom \
11
- --name my-openldap-container \
12
- osixia/openldap:1.3.0 --copy-service --loglevel debug
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Usage: script/package
3
- # Updates the gemspec and builds a new gem in the pkg directory.
4
-
5
- mkdir -p pkg
6
- gem build *.gemspec
7
- mv *.gem pkg
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Usage: script/release
3
- # Build the package, tag a commit, push it to origin, and then release the
4
- # package publicly.
5
-
6
- set -e
7
-
8
- version="$(script/package | grep Version: | awk '{print $2}')"
9
- [ -n "$version" ] || exit 1
10
-
11
- echo $version
12
- git commit --allow-empty -a -m "Release $version"
13
- git tag "v$version"
14
- git push origin
15
- git push origin "v$version"
16
- gem push pkg/*-${version}.gem
@@ -1,22 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TestBERArrayExtension < Test::Unit::TestCase
4
- def test_control_code_array
5
- control_codes = []
6
- control_codes << ['1.2.3'.to_ber, true.to_ber].to_ber_sequence
7
- control_codes << ['1.7.9'.to_ber, false.to_ber].to_ber_sequence
8
- control_codes = control_codes.to_ber_sequence
9
- res = [['1.2.3', true], ['1.7.9', false]].to_ber_control
10
- assert_equal control_codes, res
11
- end
12
-
13
- def test_wrap_array_if_not_nested
14
- result1 = ['1.2.3', true].to_ber_control
15
- result2 = [['1.2.3', true]].to_ber_control
16
- assert_equal result2, result1
17
- end
18
-
19
- def test_empty_string_if_empty_array
20
- assert_equal "", [].to_ber_control
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TestBERStringExtension < Test::Unit::TestCase
4
- def setup
5
- @bind_request = "0$\002\001\001`\037\002\001\003\004\rAdministrator\200\vad_is_bogus UNCONSUMED".b
6
- @result = @bind_request.read_ber!(Net::LDAP::AsnSyntax)
7
- end
8
-
9
- def test_parse_ber
10
- assert_equal [1, [3, "Administrator", "ad_is_bogus"]], @result
11
- end
12
-
13
- def test_unconsumed_message
14
- assert_equal " UNCONSUMED", @bind_request
15
- end
16
-
17
- def test_exception_does_not_modify_string
18
- original = "0$\002\001\001`\037\002\001\003\004\rAdministrator\200\vad_is_bogus".b
19
- duplicate = original.dup
20
- flexmock(StringIO).new_instances.should_receive(:read_ber).and_raise(Net::BER::BerError)
21
- duplicate.read_ber!(Net::LDAP::AsnSyntax) rescue Net::BER::BerError
22
-
23
- assert_equal original, duplicate
24
- end
25
- end
@@ -1,153 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- class TestBEREncoding < Test::Unit::TestCase
4
- def test_empty_array
5
- assert_equal [], [].to_ber.read_ber
6
- end
7
-
8
- def test_array
9
- ary = [1, 2, 3]
10
- encoded_ary = ary.map(&:to_ber).to_ber
11
-
12
- assert_equal ary, encoded_ary.read_ber
13
- end
14
-
15
- # http://tools.ietf.org/html/rfc4511#section-5.1
16
- def test_true
17
- assert_equal "\x01\x01\xFF".b, true.to_ber
18
- end
19
-
20
- def test_false
21
- assert_equal "\x01\x01\x00", false.to_ber
22
- end
23
-
24
- # Sample based
25
- {
26
- 0 => "\x02\x01\x00",
27
- 1 => "\x02\x01\x01",
28
- 127 => "\x02\x01\x7F",
29
- 128 => "\x02\x02\x00\x80",
30
- 255 => "\x02\x02\x00\xFF",
31
- 256 => "\x02\x02\x01\x00",
32
- 65535 => "\x02\x03\x00\xFF\xFF",
33
- 65536 => "\x02\x03\x01\x00\x00",
34
- 8388607 => "\x02\x03\x7F\xFF\xFF",
35
- 8388608 => "\x02\x04\x00\x80\x00\x00",
36
- 16_777_215 => "\x02\x04\x00\xFF\xFF\xFF",
37
- 0x01000000 => "\x02\x04\x01\x00\x00\x00",
38
- 0x3FFFFFFF => "\x02\x04\x3F\xFF\xFF\xFF",
39
- 0x4FFFFFFF => "\x02\x04\x4F\xFF\xFF\xFF",
40
-
41
- # Some odd samples...
42
- 5 => "\x02\x01\x05",
43
- 500 => "\x02\x02\x01\xf4",
44
- 50_000 => "\x02\x03\x00\xC3\x50",
45
- 5_000_000_000 => "\x02\x05\x01\x2a\x05\xF2\x00",
46
-
47
- # negatives
48
- -1 => "\x02\x01\xFF",
49
- -127 => "\x02\x01\x81",
50
- -128 => "\x02\x01\x80",
51
- -255 => "\x02\x02\xFF\x01",
52
- -256 => "\x02\x02\xFF\x00",
53
- -65535 => "\x02\x03\xFF\x00\x01",
54
- -65536 => "\x02\x03\xFF\x00\x00",
55
- -65537 => "\x02\x03\xFE\xFF\xFF",
56
- -8388607 => "\x02\x03\x80\x00\x01",
57
- -8388608 => "\x02\x03\x80\x00\x00",
58
- -16_777_215 => "\x02\x04\xFF\x00\x00\x01",
59
- }.each do |number, expected_encoding|
60
- define_method "test_encode_#{number}" do
61
- assert_equal expected_encoding.b, number.to_ber
62
- end
63
-
64
- define_method "test_decode_encoded_#{number}" do
65
- assert_equal number, expected_encoding.b.read_ber
66
- end
67
- end
68
-
69
- # Round-trip encoding: This is mostly to be sure to cover Bignums well.
70
- def test_powers_of_two
71
- 100.times do |p|
72
- n = 2 << p
73
-
74
- assert_equal n, n.to_ber.read_ber
75
- end
76
- end
77
-
78
- def test_powers_of_ten
79
- 100.times do |p|
80
- n = 5 * 10**p
81
-
82
- assert_equal n, n.to_ber.read_ber
83
- end
84
- end
85
-
86
- if "Ruby 1.9".respond_to?(:encoding)
87
- def test_encode_utf8_strings
88
- assert_equal "\x04\x02\xC3\xA5".b, "\u00e5".force_encoding("UTF-8").to_ber
89
- end
90
-
91
- def test_utf8_encodable_strings
92
- assert_equal "\x04\nteststring", "teststring".encode("US-ASCII").to_ber
93
- end
94
-
95
- def test_encode_binary_data
96
- # This is used for searching for GUIDs in Active Directory
97
- assert_equal "\x04\x10" + "j1\xB4\xA1*\xA2zA\xAC\xA9`?'\xDDQ\x16".b,
98
- ["6a31b4a12aa27a41aca9603f27dd5116"].pack("H*").to_ber_bin
99
- end
100
-
101
- def test_non_utf8_encodable_strings
102
- assert_equal "\x04\x01\x81".b, "\x81".to_ber
103
- end
104
- end
105
- end
106
-
107
- class TestBERDecoding < Test::Unit::TestCase
108
- def test_decode_number
109
- assert_equal 6, "\002\001\006".read_ber(Net::LDAP::AsnSyntax)
110
- end
111
-
112
- def test_decode_string
113
- assert_equal "testing", "\004\007testing".read_ber(Net::LDAP::AsnSyntax)
114
- end
115
-
116
- def test_decode_ldap_bind_request
117
- assert_equal [1, [3, "Administrator", "ad_is_bogus"]], "0$\002\001\001`\037\002\001\003\004\rAdministrator\200\vad_is_bogus".read_ber(Net::LDAP::AsnSyntax)
118
- end
119
- end
120
-
121
- class TestBERIdentifiedString < Test::Unit::TestCase
122
- def test_binary_data
123
- data = ["6a31b4a12aa27a41aca9603f27dd5116"].pack("H*").force_encoding("ASCII-8BIT")
124
- bis = Net::BER::BerIdentifiedString.new(data)
125
-
126
- assert bis.valid_encoding?, "should be a valid encoding"
127
- assert_equal "ASCII-8BIT", bis.encoding.name
128
- end
129
-
130
- def test_ascii_data_in_utf8
131
- data = "some text".force_encoding("UTF-8")
132
- bis = Net::BER::BerIdentifiedString.new(data)
133
-
134
- assert bis.valid_encoding?, "should be a valid encoding"
135
- assert_equal "UTF-8", bis.encoding.name
136
- end
137
-
138
- def test_umlaut_data_in_utf8
139
- data = "Müller".force_encoding("UTF-8")
140
- bis = Net::BER::BerIdentifiedString.new(data)
141
-
142
- assert bis.valid_encoding?, "should be a valid encoding"
143
- assert_equal "UTF-8", bis.encoding.name
144
- end
145
-
146
- def test_utf8_data_in_utf8
147
- data = ["e4b8ad"].pack("H*").force_encoding("UTF-8")
148
- bis = Net::BER::BerIdentifiedString.new(data)
149
-
150
- assert bis.valid_encoding?, "should be a valid encoding"
151
- assert_equal "UTF-8", bis.encoding.name
152
- end
153
- end