net-ldap 0.16.3 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
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