net-ldap 0.9.0 → 0.10.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.

Potentially problematic release.


This version of net-ldap might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9fc3d7a463a0f673de926b440e144eae66937a4
4
- data.tar.gz: 2d921f1be37ff33c20100650642f1123fcd2c161
3
+ metadata.gz: 570b21d340b31538c59bb0082891227b4b048398
4
+ data.tar.gz: 3101e8927d74913355235198f91b2907b308b712
5
5
  SHA512:
6
- metadata.gz: 803d644ca0fe9b7314df587e68a0ecc7f01f34316d30fd4a926a09dfc4e3ab7e73b388854f9f4eecc78c9b07817d21a0b342e893422d21b8a682c35dcf4a8fb1
7
- data.tar.gz: e5143361c56f7c60cfe7272c054860403ec53812660730e141688be9fb56adf32b0121ae1d5e27c4a076a963b07b509db96e7a8cc43fa0eec7d5cf0b1e92dcdd
6
+ metadata.gz: c9f13490870b0aba267a7de18150eaf40aabf0fb1ace4f0476456b78305873ceb6417448685f3727e737759ae8c4e3db05743cf3b38ba5a64ddf4f6559b11302
7
+ data.tar.gz: ba4770abb3b87844dc138d21f94cc4c783d0addae63f525b119d99656b9b1ac32d36a6dc28ea017b74504828737b90b757d878337db1ada66edf9ccfe3d3d451
data/.gitignore CHANGED
@@ -5,3 +5,5 @@ pkg/
5
5
  doc/
6
6
  publish/
7
7
  Gemfile.lock
8
+ .bundle
9
+ bin/
@@ -55,8 +55,6 @@ us with a sample LDIF data file for importing into LDAP servers for testing.
55
55
  Net::LDAP uses several libraries during development, all of which can be
56
56
  installed using RubyGems.
57
57
 
58
- * *hoe*
59
- * *hoe-git*
60
58
  * *flexmock*
61
59
 
62
60
  == Participation
@@ -1,3 +1,15 @@
1
+ === Net::LDAP 0.10.0
2
+ * Major enhancements:
3
+ * Accept SimpleTLS/StartTLS encryption options (compatible with `OpenSSL::SSL::SSLContext#set_params`)
4
+ * Bug fixes:
5
+ * Parse filter strings with square and curly braces (`[]` and `{}`)
6
+ * Handle connection timeout errors (`Errno::ETIMEDOUT` raised as `Net::LDAP::LdapError`)
7
+ * Testing changes:
8
+ * Add integration tests for StartTLS connections to OpenLDAP
9
+ * Meta changes:
10
+ * Update Gem release tooling (remove Hoe, use Rake)
11
+ * Fix Gem release date
12
+
1
13
  === Net::LDAP 0.9.0
2
14
  * Major changes:
3
15
  * Dropped support for ruby 1.8.7, ruby >= 1.9.3 now required
@@ -1,4 +1,4 @@
1
- = Net::LDAP for Ruby {<img src="https://travis-ci.org/github/ruby-net-ldap.png" />}[https://travis-ci.org/github/ruby-net-ldap]
1
+ = Net::LDAP for Ruby {<img src="https://travis-ci.org/ruby-ldap/ruby-net-ldap.png" />}[https://travis-ci.org/github/ruby-net-ldap]
2
2
 
3
3
  == Description
4
4
 
@@ -41,8 +41,8 @@ Simply require either 'net-ldap' or 'net/ldap'.
41
41
 
42
42
  This section is for gem maintainers to cut a new version of the gem.
43
43
 
44
- * Update lib/html/pipeline/version.rb to next version number X.X.X following {semver}(http://semver.org/).
45
- * Update CHANGELOG.md. Get latest changes with `git log --oneline vLAST_RELEASE..HEAD | grep Merge`
44
+ * Update lib/net/ldap/version.rb to next version number X.X.X following {semver}(http://semver.org/).
45
+ * Update `History.rdoc`. Get latest changes with `git log --oneline vLAST_RELEASE..HEAD | grep Merge`
46
46
  * On the master branch, run `script/release`
47
47
 
48
48
  :include: Contributors.rdoc
data/Rakefile CHANGED
@@ -1,74 +1,13 @@
1
+ #!/usr/bin/env rake
1
2
  # -*- ruby encoding: utf-8 -*-
3
+ # vim: syntax=ruby
2
4
 
3
- require "rubygems"
4
- require 'hoe'
5
-
6
- Hoe.plugin :doofus
7
- Hoe.plugin :git
8
- Hoe.plugin :gemspec
9
-
10
- Hoe.spec 'net-ldap' do |spec|
11
- # spec.rubyforge_name = spec.name
12
-
13
- spec.developer("Francis Cianfrocca", "blackhedd@rubyforge.org")
14
- spec.developer("Emiel van de Laar", "gemiel@gmail.com")
15
- spec.developer("Rory O'Connell", "rory.ocon@gmail.com")
16
- spec.developer("Kaspar Schiess", "kaspar.schiess@absurd.li")
17
- spec.developer("Austin Ziegler", "austin@rubyforge.org")
18
- spec.developer("Michael Schaarschmidt", "michael@schaaryworks.com")
19
-
20
- spec.remote_rdoc_dir = ''
21
- spec.rsync_args << ' --exclude=statsvn/'
22
-
23
- spec.urls = %w(http://rubyldap.com/' 'https://github.com/ruby-ldap/ruby-net-ldap)
24
- spec.licenses = ['MIT']
25
-
26
- spec.history_file = 'History.rdoc'
27
- spec.readme_file = 'README.rdoc'
28
-
29
- spec.extra_rdoc_files = FileList["*.rdoc"].to_a
30
-
31
- spec.extra_dev_deps << [ "hoe-git", "~> 1" ]
32
- spec.extra_dev_deps << [ "hoe-gemspec", "~> 1" ]
33
- spec.extra_dev_deps << [ "flexmock", ">= 1.3.0" ]
34
-
35
- spec.clean_globs << "coverage"
36
-
37
- spec.spec_extras[:required_ruby_version] = ">= 1.8.7"
38
- spec.multiruby_skip << "1.8.6"
39
- spec.multiruby_skip << "1_8_6"
40
-
41
- spec.need_tar = true
42
- end
43
-
44
- # I'm not quite ready to get rid of this, but I think "rake git:manifest" is
45
- # sufficient.
46
- namespace :old do
47
- desc "Build the manifest file from the current set of files."
48
- task :build_manifest do |t|
49
- require 'find'
50
-
51
- paths = []
52
- Find.find(".") do |path|
53
- next if File.directory?(path)
54
- next if path =~ /\.svn/
55
- next if path =~ /\.git/
56
- next if path =~ /\.hoerc/
57
- next if path =~ /\.swp$/
58
- next if path =~ %r{coverage/}
59
- next if path =~ /~$/
60
- paths << path.sub(%r{^\./}, '')
61
- end
62
-
63
- File.open("Manifest.txt", "w") do |f|
64
- f.puts paths.sort.join("\n")
65
- end
5
+ require 'rake/testtask'
66
6
 
67
- puts paths.sort.join("\n")
68
- end
7
+ Rake::TestTask.new do |t|
8
+ t.libs << "test"
9
+ t.test_files = FileList['test/**/test_*.rb']
10
+ t.verbose = true
69
11
  end
70
12
 
71
- desc "Run a full set of integration and unit tests"
72
- task :cruise => [:test, :spec]
73
-
74
- # vim: syntax=ruby
13
+ task :default => :test
@@ -537,10 +537,6 @@ class Net::LDAP
537
537
  # additional capabilities are added, more configuration values will be
538
538
  # added here.
539
539
  #
540
- # Currently, the only supported argument is { :method => :simple_tls }.
541
- # (Equivalently, you may pass the symbol :simple_tls all by itself,
542
- # without enclosing it in a Hash.)
543
- #
544
540
  # The :simple_tls encryption method encrypts <i>all</i> communications
545
541
  # with the LDAP server. It completely establishes SSL/TLS encryption with
546
542
  # the LDAP server before any LDAP-protocol data is exchanged. There is no
@@ -563,10 +559,30 @@ class Net::LDAP
563
559
  # The :start_tls like the :simple_tls encryption method also encrypts all
564
560
  # communcations with the LDAP server. With the exception that it operates
565
561
  # over the standard TCP port.
562
+ #
563
+ # In order to verify certificates and enable other TLS options, the
564
+ # :tls_options hash can be passed alongside :simple_tls or :start_tls.
565
+ # This hash contains any options that can be passed to
566
+ # OpenSSL::SSL::SSLContext#set_params(). The most common options passed
567
+ # should be OpenSSL::SSL::SSLContext::DEFAULT_PARAMS, or the :ca_file option,
568
+ # which contains a path to a Certificate Authority file (PEM-encoded).
569
+ #
570
+ # Example for a default setup without custom settings:
571
+ # {
572
+ # :method => :simple_tls,
573
+ # :tls_options => OpenSSL::SSL::SSLContext::DEFAULT_PARAMS
574
+ # }
575
+ #
576
+ # Example for specifying a CA-File and only allowing TLSv1.1 connections:
577
+ #
578
+ # {
579
+ # :method => :start_tls,
580
+ # :tls_options => { :ca_file => "/etc/cafile.pem", :ssl_version => "TLSv1_1" }
581
+ # }
566
582
  def encryption(args)
567
583
  case args
568
584
  when :simple_tls, :start_tls
569
- args = { :method => args }
585
+ args = { :method => args, :tls_options => {} }
570
586
  end
571
587
  @encryption = args
572
588
  end
@@ -17,6 +17,8 @@ class Net::LDAP::Connection #:nodoc:
17
17
  raise Net::LDAP::LdapError, "Server #{server[:host]} refused connection on port #{server[:port]}."
18
18
  rescue Errno::EHOSTUNREACH => error
19
19
  raise Net::LDAP::LdapError, "Host #{server[:host]} was unreachable (#{error.message})"
20
+ rescue Errno::ETIMEDOUT
21
+ raise Net::LDAP::LdapError, "Connection to #{server[:host]} timed out."
20
22
  end
21
23
 
22
24
  if server[:encryption]
@@ -39,9 +41,15 @@ class Net::LDAP::Connection #:nodoc:
39
41
  end
40
42
  end
41
43
 
42
- def self.wrap_with_ssl(io)
44
+ def self.wrap_with_ssl(io, tls_options = {})
43
45
  raise Net::LDAP::LdapError, "OpenSSL is unavailable" unless Net::LDAP::HasOpenSSL
46
+
44
47
  ctx = OpenSSL::SSL::SSLContext.new
48
+
49
+ # By default, we do not verify certificates. For a 1.0 release, this should probably be changed at some point.
50
+ # See discussion in https://github.com/ruby-ldap/ruby-net-ldap/pull/161
51
+ ctx.set_params(tls_options) unless tls_options.empty?
52
+
45
53
  conn = OpenSSL::SSL::SSLSocket.new(io, ctx)
46
54
  conn.connect
47
55
 
@@ -83,7 +91,7 @@ class Net::LDAP::Connection #:nodoc:
83
91
  def setup_encryption(args)
84
92
  case args[:method]
85
93
  when :simple_tls
86
- @conn = self.class.wrap_with_ssl(@conn)
94
+ @conn = self.class.wrap_with_ssl(@conn, args[:tls_options])
87
95
  # additional branches requiring server validation and peer certs, etc.
88
96
  # go here.
89
97
  when :start_tls
@@ -100,7 +108,7 @@ class Net::LDAP::Connection #:nodoc:
100
108
  end
101
109
 
102
110
  if pdu.result_code.zero?
103
- @conn = self.class.wrap_with_ssl(@conn)
111
+ @conn = self.class.wrap_with_ssl(@conn, args[:tls_options])
104
112
  else
105
113
  raise Net::LDAP::LdapError, "start_tls failed: #{pdu.result_code}"
106
114
  end
@@ -753,7 +753,7 @@ class Net::LDAP::Filter
753
753
  scanner.scan(/\s*/)
754
754
  if op = scanner.scan(/<=|>=|!=|:=|=/)
755
755
  scanner.scan(/\s*/)
756
- if value = scanner.scan(/(?:[-\w*.+:@=,#\$%&!'\s\xC3\x80-\xCA\xAF]|[^\x00-\x7F]|\\[a-fA-F\d]{2})+/u)
756
+ if value = scanner.scan(/(?:[-\[\]{}\w*.+:@=,#\$%&!'^~\s\xC3\x80-\xCA\xAF]|[^\x00-\x7F]|\\[a-fA-F\d]{2})+/u)
757
757
  # 20100313 AZ: Assumes that "(uid=george*)" is the same as
758
758
  # "(uid=george* )". The standard doesn't specify, but I can find
759
759
  # no examples that suggest otherwise.
@@ -1,5 +1,5 @@
1
1
  module Net
2
2
  class LDAP
3
- VERSION = "0.9.0"
3
+ VERSION = "0.10.0"
4
4
  end
5
5
  end
@@ -8,7 +8,6 @@ Gem::Specification.new do |s|
8
8
  s.version = Net::LDAP::VERSION
9
9
  s.license = "MIT"
10
10
  s.authors = ["Francis Cianfrocca", "Emiel van de Laar", "Rory O'Connell", "Kaspar Schiess", "Austin Ziegler", "Michael Schaarschmidt"]
11
- s.date = %q{2012-02-28}
12
11
  s.description = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the
13
12
  Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
14
13
  accessing distributed directory services. Net::LDAP is written completely in
@@ -21,7 +20,7 @@ earlier versions of the IETF LDAP RFCs (2251-2256, 2829-2830, 3377, and 3771).
21
20
  Our roadmap for Net::LDAP 1.0 is to gain full <em>client</em> compliance with
22
21
  the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).}
23
22
  s.email = ["blackhedd@rubyforge.org", "gemiel@gmail.com", "rory.ocon@gmail.com", "kaspar.schiess@absurd.li", "austin@rubyforge.org"]
24
- s.extra_rdoc_files = ["Manifest.txt", "Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.rdoc"]
23
+ s.extra_rdoc_files = ["Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.rdoc"]
25
24
  s.files = `git ls-files`.split $/
26
25
  s.test_files = s.files.grep(%r{^test})
27
26
  s.homepage = %q{http://github.com/ruby-ldap/ruby-net-ldap}
@@ -30,8 +29,6 @@ the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).}
30
29
  s.required_ruby_version = ">= 1.9.3"
31
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}
32
31
 
33
- s.add_development_dependency("hoe-git", "~> 1.0")
34
- s.add_development_dependency("hoe-gemspec", "~> 1.0")
35
32
  s.add_development_dependency("flexmock", "~> 1.3")
36
- s.add_development_dependency("hoe", "~> 2.9")
33
+ s.add_development_dependency("rake", "~> 10.0")
37
34
  end
@@ -5,8 +5,8 @@ set -x
5
5
  BASE_PATH="$( cd `dirname $0`/../test/fixtures/openldap && pwd )"
6
6
  SEED_PATH="$( cd `dirname $0`/../test/fixtures && pwd )"
7
7
 
8
- dpkg -s slapd time ldap-utils ||\
9
- DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y --force-yes slapd time ldap-utils
8
+ dpkg -s slapd time ldap-utils gnutls-bin ssl-cert > /dev/null ||\
9
+ DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y --force-yes slapd time ldap-utils gnutls-bin ssl-cert
10
10
 
11
11
  sudo /etc/init.d/slapd stop
12
12
 
@@ -45,3 +45,67 @@ sudo /etc/init.d/slapd start
45
45
  -f $SEED_PATH/seed.ldif
46
46
 
47
47
  sudo rm -rf $TMPDIR
48
+
49
+ # SSL
50
+
51
+ sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
52
+
53
+ sudo sh -c "cat > /etc/ssl/ca.info <<EOF
54
+ cn = rubyldap
55
+ ca
56
+ cert_signing_key
57
+ EOF"
58
+
59
+ # Create the self-signed CA certificate:
60
+ sudo certtool --generate-self-signed \
61
+ --load-privkey /etc/ssl/private/cakey.pem \
62
+ --template /etc/ssl/ca.info \
63
+ --outfile /etc/ssl/certs/cacert.pem
64
+
65
+ # Make a private key for the server:
66
+ sudo certtool --generate-privkey \
67
+ --bits 1024 \
68
+ --outfile /etc/ssl/private/ldap01_slapd_key.pem
69
+
70
+ sudo sh -c "cat > /etc/ssl/ldap01.info <<EOF
71
+ organization = Example Company
72
+ cn = ldap01.example.com
73
+ tls_www_server
74
+ encryption_key
75
+ signing_key
76
+ expiration_days = 3650
77
+ EOF"
78
+
79
+ # Create the server certificate
80
+ sudo certtool --generate-certificate \
81
+ --load-privkey /etc/ssl/private/ldap01_slapd_key.pem \
82
+ --load-ca-certificate /etc/ssl/certs/cacert.pem \
83
+ --load-ca-privkey /etc/ssl/private/cakey.pem \
84
+ --template /etc/ssl/ldap01.info \
85
+ --outfile /etc/ssl/certs/ldap01_slapd_cert.pem
86
+
87
+ sudo ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF | true
88
+ dn: cn=config
89
+ add: olcTLSCACertificateFile
90
+ olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
91
+ -
92
+ add: olcTLSCertificateFile
93
+ olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem
94
+ -
95
+ add: olcTLSCertificateKeyFile
96
+ olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem
97
+ EOF
98
+
99
+ # LDAP over TLS/SSL (ldaps://) is deprecated in favour of StartTLS. The latter
100
+ # refers to an existing LDAP session (listening on TCP port 389) becoming
101
+ # protected by TLS/SSL whereas LDAPS, like HTTPS, is a distinct
102
+ # encrypted-from-the-start protocol that operates over TCP port 636. But we
103
+ # enable it for testing here.
104
+ sudo sed -i -e 's|^SLAPD_SERVICES="\(.*\)"|SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"|' /etc/default/slapd
105
+
106
+ sudo adduser openldap ssl-cert
107
+ sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
108
+ sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
109
+ sudo chmod o-r /etc/ssl/private/ldap01_slapd_key.pem
110
+
111
+ sudo service slapd restart
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDRzCCAf+gAwIBAgIEVHpbmjANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhy
3
+ dWJ5bGRhcDAeFw0xNDExMjkyMzQ5NDZaFw0xNTExMjkyMzQ5NDZaMBMxETAPBgNV
4
+ BAMTCHJ1YnlsZGFwMIIBUjANBgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEA4pKe
5
+ cDCNuL53fkpO/WSAS+gmMTsOs+oOK71kZlk2QT/MBz8TxC6m358qCADjnXcMVVxa
6
+ ySQbQlVKZMkIvLNciZbiLDgC5II0NbHACNa8rqenoKRjS4J9W3OhA8EmnXn/Me+8
7
+ uMCI9tfnKNRZYdkQZlra4I+Idn+xYfl/5q5b/7ZjPS2zY/585hFEYE+5vfOZVBSU
8
+ 3HMNSeuJvTehLv7dD7aQfXNM4cRgHXequkJQ/HLLFAO4AgJ+LJrFWpj7GWz3crgr
9
+ 9G5px4T78wJH3NQiOsG6UBXPw8c4T+Z6GAWX2l1zs1gZsaiCVbAraqK3404lL7yp
10
+ +ThbsW3ifzgNPhmjScXBLdbEDrrAKosW7kkTOGzxiMCBmNlj2SKhcztoduAtfF1f
11
+ Fs2Jk8MRTHwO8ThD7wIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB
12
+ /wQFAwMHBAAwHQYDVR0OBBYEFJDm67ekyFu4/Z7VcO6Vk/5pinGcMA0GCSqGSIb3
13
+ DQEBCwUAA4IBMQDHeEPzfYRtjynpUKyrtxx/6ZVOfCLuz4eHkBZggz/pJacDCv/a
14
+ I//W03XCk8RWq/fWVVUzvxXgPwnYcw992PLM7XW81zp6ruRUDWooYnjHZZz3bRhe
15
+ kC4QvM2mZhcsMVmhmWWKZn81qXgVdUY1XNRhk87cuXjF/UTpEieFvWAsCUkFZkqB
16
+ AmySCuI/FuPaauT1YAltkIlYAEIGNJGZDMf2BTVUQpXhTXeS9/AZWLNDBwiq+fwo
17
+ YYnsr9MnBXCEmg1gVSR/Ay2AZmbYfiYtb5kU8uq2lSWAUb4LX6HZl82wo3OilrJ2
18
+ WXl6Qf+Fcy4qqkRt4AKHjtzizpEDCOVYuuG0Zoy+QnxNXRsEzpb8ymnJFrcgYfk/
19
+ 6Lv2gWAFl5FqCZp7gBWg55eL2coT4C+mbNTF
20
+ -----END CERTIFICATE-----
@@ -19,4 +19,16 @@ class TestBindIntegration < LDAPIntegrationTestCase
19
19
  def test_bind_fail
20
20
  refute @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "not my password"), @ldap.get_operation_result.inspect
21
21
  end
22
+
23
+ def test_bind_tls_with_cafile
24
+ tls_options = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.merge(:ca_file => CA_FILE)
25
+ @ldap.encryption(method: :start_tls, tls_options: tls_options)
26
+ assert @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1"), @ldap.get_operation_result.inspect
27
+ end
28
+
29
+ def test_bind_tls_with_verify_none
30
+ tls_options = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.merge(:verify_mode => OpenSSL::SSL::VERIFY_NONE)
31
+ @ldap.encryption(method: :start_tls, tls_options: tls_options)
32
+ assert @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1"), @ldap.get_operation_result.inspect
33
+ end
22
34
  end
@@ -10,6 +10,10 @@ class TestFilterParser < Test::Unit::TestCase
10
10
  assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=名前)")
11
11
  end
12
12
 
13
+ def test_brackets
14
+ assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=[{something}])")
15
+ end
16
+
13
17
  def test_colons
14
18
  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)")
15
19
  end
@@ -6,6 +6,18 @@ require 'flexmock/test_unit'
6
6
  # Whether integration tests should be run.
7
7
  INTEGRATION = ENV.fetch("INTEGRATION", "skip") != "skip"
8
8
 
9
+ # The CA file to verify certs against for tests.
10
+ # Override with CA_FILE env variable; otherwise checks for the VM-specific path
11
+ # and falls back to the test/fixtures/cacert.pem for local testing.
12
+ CA_FILE =
13
+ ENV.fetch("CA_FILE") do
14
+ if File.exist?("/etc/ssl/certs/cacert.pem")
15
+ "/etc/ssl/certs/cacert.pem"
16
+ else
17
+ File.expand_path("fixtures/cacert.pem", File.dirname(__FILE__))
18
+ end
19
+ end
20
+
9
21
  if RUBY_VERSION < "2.0"
10
22
  class String
11
23
  def b
@@ -202,7 +202,7 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
202
202
  and_return(result2)
203
203
  mock.should_receive(:write)
204
204
  conn = Net::LDAP::Connection.new(:socket => mock)
205
- flexmock(Net::LDAP::Connection).should_receive(:wrap_with_ssl).with(mock).
205
+ flexmock(Net::LDAP::Connection).should_receive(:wrap_with_ssl).with(mock, nil).
206
206
  and_return(mock)
207
207
 
208
208
  conn.next_msgid # simulates ongoing query
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ldap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Cianfrocca
@@ -13,36 +13,8 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-02-28 00:00:00.000000000 Z
16
+ date: 2014-12-10 00:00:00.000000000 Z
17
17
  dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: hoe-git
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - "~>"
23
- - !ruby/object:Gem::Version
24
- version: '1.0'
25
- type: :development
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - "~>"
30
- - !ruby/object:Gem::Version
31
- version: '1.0'
32
- - !ruby/object:Gem::Dependency
33
- name: hoe-gemspec
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - "~>"
37
- - !ruby/object:Gem::Version
38
- version: '1.0'
39
- type: :development
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- requirements:
43
- - - "~>"
44
- - !ruby/object:Gem::Version
45
- version: '1.0'
46
18
  - !ruby/object:Gem::Dependency
47
19
  name: flexmock
48
20
  requirement: !ruby/object:Gem::Requirement
@@ -58,19 +30,19 @@ dependencies:
58
30
  - !ruby/object:Gem::Version
59
31
  version: '1.3'
60
32
  - !ruby/object:Gem::Dependency
61
- name: hoe
33
+ name: rake
62
34
  requirement: !ruby/object:Gem::Requirement
63
35
  requirements:
64
36
  - - "~>"
65
37
  - !ruby/object:Gem::Version
66
- version: '2.9'
38
+ version: '10.0'
67
39
  type: :development
68
40
  prerelease: false
69
41
  version_requirements: !ruby/object:Gem::Requirement
70
42
  requirements:
71
43
  - - "~>"
72
44
  - !ruby/object:Gem::Version
73
- version: '2.9'
45
+ version: '10.0'
74
46
  description: |-
75
47
  Net::LDAP for Ruby (also called net-ldap) implements client access for the
76
48
  Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
@@ -92,7 +64,6 @@ email:
92
64
  executables: []
93
65
  extensions: []
94
66
  extra_rdoc_files:
95
- - Manifest.txt
96
67
  - Contributors.rdoc
97
68
  - Hacking.rdoc
98
69
  - History.rdoc
@@ -107,7 +78,6 @@ files:
107
78
  - Hacking.rdoc
108
79
  - History.rdoc
109
80
  - License.rdoc
110
- - Manifest.txt
111
81
  - README.rdoc
112
82
  - Rakefile
113
83
  - lib/net-ldap.rb
@@ -138,6 +108,7 @@ files:
138
108
  - test/ber/core_ext/test_array.rb
139
109
  - test/ber/core_ext/test_string.rb
140
110
  - test/ber/test_ber.rb
111
+ - test/fixtures/cacert.pem
141
112
  - test/fixtures/openldap/memberof.ldif
142
113
  - test/fixtures/openldap/retcode.ldif
143
114
  - test/fixtures/openldap/slapd.conf.ldif
@@ -200,6 +171,7 @@ test_files:
200
171
  - test/ber/core_ext/test_array.rb
201
172
  - test/ber/core_ext/test_string.rb
202
173
  - test/ber/test_ber.rb
174
+ - test/fixtures/cacert.pem
203
175
  - test/fixtures/openldap/memberof.ldif
204
176
  - test/fixtures/openldap/retcode.ldif
205
177
  - test/fixtures/openldap/slapd.conf.ldif
@@ -1,52 +0,0 @@
1
- .travis.yml
2
- Contributors.rdoc
3
- Gemfile
4
- Hacking.rdoc
5
- History.rdoc
6
- License.rdoc
7
- Manifest.txt
8
- README.rdoc
9
- Rakefile
10
- lib/net-ldap.rb
11
- lib/net/ber.rb
12
- lib/net/ber/ber_parser.rb
13
- lib/net/ber/core_ext.rb
14
- lib/net/ber/core_ext/array.rb
15
- lib/net/ber/core_ext/bignum.rb
16
- lib/net/ber/core_ext/false_class.rb
17
- lib/net/ber/core_ext/fixnum.rb
18
- lib/net/ber/core_ext/string.rb
19
- lib/net/ber/core_ext/true_class.rb
20
- lib/net/ldap.rb
21
- lib/net/ldap/dataset.rb
22
- lib/net/ldap/dn.rb
23
- lib/net/ldap/entry.rb
24
- lib/net/ldap/filter.rb
25
- lib/net/ldap/instrumentation.rb
26
- lib/net/ldap/password.rb
27
- lib/net/ldap/pdu.rb
28
- lib/net/ldap/version.rb
29
- lib/net/snmp.rb
30
- net-ldap.gemspec
31
- spec/integration/ssl_ber_spec.rb
32
- spec/spec_helper.rb
33
- spec/unit/ber/ber_spec.rb
34
- spec/unit/ber/core_ext/array_spec.rb
35
- spec/unit/ber/core_ext/string_spec.rb
36
- spec/unit/ldap/dn_spec.rb
37
- spec/unit/ldap/entry_spec.rb
38
- spec/unit/ldap/filter_parser_spec.rb
39
- spec/unit/ldap/filter_spec.rb
40
- spec/unit/ldap/search_spec.rb
41
- spec/unit/ldap_spec.rb
42
- test/common.rb
43
- test/test_entry.rb
44
- test/test_filter.rb
45
- test/test_ldap_connection.rb
46
- test/test_ldif.rb
47
- test/test_password.rb
48
- test/test_rename.rb
49
- test/test_snmp.rb
50
- test/testdata.ldif
51
- testserver/ldapserver.rb
52
- testserver/testdata.ldif