scashin133-net-ldap 0.1.3 → 0.1.4

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.
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_DISABLE_SHARED_GEMS: "1"
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'hoe'
4
+ gem 'hoe-git'
5
+
6
+ group :development do
7
+ gem 'metaid'
8
+ gem 'rspec', '~> 2.0'
9
+ gem 'flexmock'
10
+ end
@@ -0,0 +1,29 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ flexmock (0.8.11)
6
+ hoe (2.8.0)
7
+ rake (>= 0.8.7)
8
+ hoe-git (1.3.0)
9
+ hoe (>= 2.2.0)
10
+ metaid (1.0)
11
+ rake (0.8.7)
12
+ rspec (2.3.0)
13
+ rspec-core (~> 2.3.0)
14
+ rspec-expectations (~> 2.3.0)
15
+ rspec-mocks (~> 2.3.0)
16
+ rspec-core (2.3.1)
17
+ rspec-expectations (2.3.0)
18
+ diff-lcs (~> 1.1.2)
19
+ rspec-mocks (2.3.0)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ flexmock
26
+ hoe
27
+ hoe-git
28
+ metaid
29
+ rspec (~> 2.0)
@@ -1,4 +1,7 @@
1
+ .bundle/config
1
2
  COPYING
3
+ Gemfile
4
+ Gemfile.lock
2
5
  Hacking.rdoc
3
6
  History.txt
4
7
  LICENSE
@@ -36,6 +39,7 @@ test/test_entry.rb
36
39
  test/test_filter.rb
37
40
  test/test_ldif.rb
38
41
  test/test_password.rb
42
+ test/test_rename.rb
39
43
  test/test_snmp.rb
40
44
  test/testdata.ldif
41
45
  testserver/ldapserver.rb
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  require "rubygems"
2
- require 'hanna/rdoctask'
2
+ # require 'hanna/rdoctask'
3
3
  require 'hoe'
4
4
 
5
5
  $LOAD_PATH.unshift('lib')
@@ -246,7 +246,7 @@ require 'net/ldap/entry'
246
246
  # and then keeps it open while it executes a user-supplied block.
247
247
  # Net::LDAP#open closes the connection on completion of the block.
248
248
  class Net::LDAP
249
- VERSION = "0.1.3"
249
+ VERSION = "0.1.4"
250
250
 
251
251
  class LdapError < StandardError; end
252
252
 
@@ -496,7 +496,7 @@ class Net::LDAP
496
496
  # ldap.modify(...)
497
497
  # end
498
498
  def self.open(args)
499
- ldap1 = LDAP.new(args)
499
+ ldap1 = new(args)
500
500
  ldap1.open { |ldap| yield ldap }
501
501
  end
502
502
 
@@ -532,7 +532,7 @@ class Net::LDAP
532
532
  else
533
533
  os.code = 0
534
534
  end
535
- os.message = LDAP.result2string(os.code)
535
+ os.message = Net::LDAP.result2string(os.code)
536
536
  os
537
537
  end
538
538
 
@@ -1170,12 +1170,12 @@ class Net::LDAP::Connection #:nodoc:
1170
1170
  # go here.
1171
1171
  when :start_tls
1172
1172
  msgid = next_msgid.to_ber
1173
- request = [StartTlsOid.to_ber].to_ber_appsequence(Net::LdapPdu::ExtendedRequest)
1173
+ request = [Net::LDAP::StartTlsOid.to_ber].to_ber_appsequence(Net::LDAP::PDU::ExtendedRequest)
1174
1174
  request_pkt = [msgid, request].to_ber_sequence
1175
1175
  @conn.write request_pkt
1176
1176
  be = @conn.read_ber(Net::LDAP::AsnSyntax)
1177
1177
  raise Net::LDAP::LdapError, "no start_tls result" if be.nil?
1178
- pdu = Net::LdapPdu.new(be)
1178
+ pdu = Net::LDAP::PDU.new(be)
1179
1179
  raise Net::LDAP::LdapError, "no start_tls result" if pdu.nil?
1180
1180
  if pdu.result_code.zero?
1181
1181
  @conn = self.class.wrap_with_ssl(@conn)
@@ -1234,7 +1234,7 @@ class Net::LDAP::Connection #:nodoc:
1234
1234
  request_pkt = [msgid, request].to_ber_sequence
1235
1235
  @conn.write request_pkt
1236
1236
 
1237
- (be = @conn.read_ber(Net::LDAP::AsnSyntax) and pdu = Net::LdapPdu.new(be)) or raise Net::LDAP::LdapError, "no bind result"
1237
+ (be = @conn.read_ber(Net::LDAP::AsnSyntax) and pdu = Net::LDAP::PDU.new(be)) or raise Net::LDAP::LdapError, "no bind result"
1238
1238
 
1239
1239
  pdu.result_code
1240
1240
  end
@@ -1273,7 +1273,7 @@ class Net::LDAP::Connection #:nodoc:
1273
1273
  request_pkt = [msgid, request].to_ber_sequence
1274
1274
  @conn.write request_pkt
1275
1275
 
1276
- (be = @conn.read_ber(Net::LDAP::AsnSyntax) and pdu = Net::LdapPdu.new(be)) or raise Net::LDAP::LdapError, "no bind result"
1276
+ (be = @conn.read_ber(Net::LDAP::AsnSyntax) and pdu = Net::LDAP::PDU.new(be)) or raise Net::LDAP::LdapError, "no bind result"
1277
1277
  return pdu.result_code unless pdu.result_code == 14 # saslBindInProgress
1278
1278
  raise Net::LDAP::LdapError, "sasl-challenge overflow" if ((n += 1) > MaxSaslChallenges)
1279
1279
 
@@ -1401,7 +1401,7 @@ class Net::LDAP::Connection #:nodoc:
1401
1401
  result_code = 0
1402
1402
  controls = []
1403
1403
 
1404
- while (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LdapPdu.new(be))
1404
+ while (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LDAP::PDU.new(be))
1405
1405
  case pdu.app_tag
1406
1406
  when 4 # search-data
1407
1407
  n_results += 1
@@ -1478,7 +1478,7 @@ class Net::LDAP::Connection #:nodoc:
1478
1478
  pkt = [next_msgid.to_ber, request].to_ber_sequence
1479
1479
  @conn.write pkt
1480
1480
 
1481
- (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LdapPdu.new(be)) && (pdu.app_tag == 7) or raise Net::LDAP::LdapError, "response missing or invalid"
1481
+ (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LDAP::PDU.new(be)) && (pdu.app_tag == 7) or raise Net::LDAP::LdapError, "response missing or invalid"
1482
1482
  pdu.result_code
1483
1483
  end
1484
1484
 
@@ -1500,23 +1500,26 @@ class Net::LDAP::Connection #:nodoc:
1500
1500
  pkt = [next_msgid.to_ber, request].to_ber_sequence
1501
1501
  @conn.write pkt
1502
1502
 
1503
- (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LdapPdu.new(be)) && (pdu.app_tag == 9) or raise Net::LDAP::LdapError, "response missing or invalid"
1503
+ (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LDAP::PDU.new(be)) && (pdu.app_tag == 9) or raise Net::LDAP::LdapError, "response missing or invalid"
1504
1504
  pdu.result_code
1505
1505
  end
1506
1506
 
1507
1507
  #--
1508
1508
  # TODO: need to support a time limit, in case the server fails to respond.
1509
1509
  #++
1510
- def rename(args)
1510
+ def rename args
1511
1511
  old_dn = args[:olddn] or raise "Unable to rename empty DN"
1512
1512
  new_rdn = args[:newrdn] or raise "Unable to rename to empty RDN"
1513
1513
  delete_attrs = args[:delete_attributes] ? true : false
1514
+ new_superior = args[:new_superior]
1514
1515
 
1515
- request = [old_dn.to_ber, new_rdn.to_ber, delete_attrs.to_ber].to_ber_appsequence(12)
1516
- pkt = [next_msgid.to_ber, request].to_ber_sequence
1516
+ request = [old_dn.to_ber, new_rdn.to_ber, delete_attrs.to_ber]
1517
+ request << new_superior.to_ber unless new_superior == nil
1518
+
1519
+ pkt = [next_msgid.to_ber, request.to_ber_appsequence(12)].to_ber_sequence
1517
1520
  @conn.write pkt
1518
1521
 
1519
- (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LdapPdu.new(be)) && (pdu.app_tag == 13) or raise Net::LDAP::LdapError, "response missing or invalid"
1522
+ (be = @conn.read_ber(AsnSyntax)) && (pdu = LdapPdu.new( be )) && (pdu.app_tag == 13) or raise LdapError.new( "response missing or invalid" )
1520
1523
  pdu.result_code
1521
1524
  end
1522
1525
 
@@ -1530,7 +1533,7 @@ class Net::LDAP::Connection #:nodoc:
1530
1533
  pkt = [next_msgid.to_ber, request].to_ber_sequence
1531
1534
  @conn.write pkt
1532
1535
 
1533
- (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LdapPdu.new(be)) && (pdu.app_tag == 11) or raise Net::LDAP::LdapError, "response missing or invalid"
1536
+ (be = @conn.read_ber(Net::LDAP::AsnSyntax)) && (pdu = Net::LDAP::PDU.new(be)) && (pdu.app_tag == 11) or raise Net::LDAP::LdapError, "response missing or invalid"
1534
1537
  pdu.result_code
1535
1538
  end
1536
1539
  end # class Connection
@@ -1,3 +1,4 @@
1
+ # Encoding: UTF-8
1
2
  # Copyright (C) 2006 by Francis Cianfrocca and other contributors. All
2
3
  # Rights Reserved.
3
4
  #
@@ -79,6 +80,8 @@ class Net::LDAP::Filter
79
80
  # <tt>mail</tt> value containing the substring "anderson":
80
81
  #
81
82
  # f = Net::LDAP::Filter.eq("mail", "*anderson*")
83
+ #
84
+ # This filter does not perform any escaping
82
85
  def eq(attribute, value)
83
86
  new(:eq, attribute, value)
84
87
  end
@@ -136,10 +139,44 @@ class Net::LDAP::Filter
136
139
  # Creates a Filter object indicating that a particular attribute value
137
140
  # is either not present or does not match a particular string; see
138
141
  # Filter::eq for more information.
142
+ #
143
+ # This filter does not perform any escaping
139
144
  def ne(attribute, value)
140
145
  new(:ne, attribute, value)
141
146
  end
142
147
 
148
+ ##
149
+ # Creates a Filter object indicating that the value of a particular
150
+ # attribute must match a particular string. The attribute value is
151
+ # escaped, so the "*" character is interpreted literally.
152
+ def equals(attribute, value)
153
+ new(:eq, attribute, escape(value))
154
+ end
155
+
156
+ ##
157
+ # Creates a Filter object indicating that the value of a particular
158
+ # attribute must begin with a particular string. The attribute value is
159
+ # escaped, so the "*" character is interpreted literally.
160
+ def begins(attribute, value)
161
+ new(:eq, attribute, escape(value) + "*")
162
+ end
163
+
164
+ ##
165
+ # Creates a Filter object indicating that the value of a particular
166
+ # attribute must end with a particular string. The attribute value is
167
+ # escaped, so the "*" character is interpreted literally.
168
+ def ends(attribute, value)
169
+ new(:eq, attribute, "*" + escape(value))
170
+ end
171
+
172
+ ##
173
+ # Creates a Filter object indicating that the value of a particular
174
+ # attribute must contain a particular string. The attribute value is
175
+ # escaped, so the "*" character is interpreted literally.
176
+ def contains(attribute, value)
177
+ new(:eq, attribute, "*" + escape(value) + "*")
178
+ end
179
+
143
180
  ##
144
181
  # Creates a Filter object indicating that a particular attribute value
145
182
  # is greater than or equal to the specified value.
@@ -207,6 +244,30 @@ class Net::LDAP::Filter
207
244
  alias_method :present, :present?
208
245
  alias_method :pres, :present?
209
246
 
247
+ # http://tools.ietf.org/html/rfc4515 lists these exceptions from UTF1
248
+ # charset for filters. All of the following must be escaped in any normal
249
+ # string using a single backslash ('\') as escape.
250
+ #
251
+ ESCAPES = {
252
+ '!' => '21', # EXCLAMATION = %x21 ; exclamation mark ("!")
253
+ '&' => '26', # AMPERSAND = %x26 ; ampersand (or AND symbol) ("&")
254
+ '*' => '2A', # ASTERISK = %x2A ; asterisk ("*")
255
+ ':' => '3A', # COLON = %x3A ; colon (":")
256
+ '|' => '7C', # VERTBAR = %x7C ; vertical bar (or pipe) ("|")
257
+ '~' => '7E', # TILDE = %x7E ; tilde ("~")
258
+ }
259
+ # Compiled character class regexp using the keys from the above hash.
260
+ ESCAPE_RE = Regexp.new(
261
+ "[" +
262
+ ESCAPES.keys.map { |e| Regexp.escape(e) }.join +
263
+ "]")
264
+
265
+ ##
266
+ # Escape a string for use in an LDAP filter
267
+ def escape(string)
268
+ string.gsub(ESCAPE_RE) { |char| "\\" + ESCAPES[char] }
269
+ end
270
+
210
271
  ##
211
272
  # Converts an LDAP search filter in BER format to an Net::LDAP::Filter
212
273
  # object. The incoming BER object most likely came to us by parsing an
@@ -270,6 +270,7 @@ module Net
270
270
  when "LdapPduError"
271
271
  warn "Net::#{name} has been deprecated. Use Net::LDAP::PDU::Error instead."
272
272
  Net::LDAP::PDU::Error
273
+ when 'LDAP'
273
274
  else
274
275
  super
275
276
  end
@@ -1,6 +1,5 @@
1
1
  require 'net/ldap'
2
- require 'rubygems'
3
2
 
4
- Spec::Runner.configure do |config|
3
+ RSpec.configure do |config|
5
4
  config.mock_with :flexmock
6
5
  end
@@ -4,12 +4,13 @@ require 'net/ber'
4
4
  require 'net/ldap'
5
5
 
6
6
  describe "BER encoding of" do
7
- def properly_encode_and_decode
8
- simple_matcher('properly encode and decode') do |given|
7
+
8
+ RSpec::Matchers.define :properly_encode_and_decode do
9
+ match do |given|
9
10
  given.to_ber.read_ber.should == given
10
11
  end
11
12
  end
12
-
13
+
13
14
  context "arrays" do
14
15
  it "should properly encode/decode []" do
15
16
  [].should properly_encode_and_decode
@@ -44,5 +44,40 @@ describe Net::LDAP::Filter do
44
44
  end
45
45
  end
46
46
  end
47
-
47
+ describe "<- .construct" do
48
+ it "should accept apostrophes in filters (regression)" do
49
+ Net::LDAP::Filter.construct("uid=O'Keefe").to_rfc2254.should == "(uid=O'Keefe)"
50
+ end
51
+ end
52
+
53
+ describe "convenience filter constructors" do
54
+ def eq(attribute, value)
55
+ described_class.eq(attribute, value)
56
+ end
57
+ describe "<- .equals(attr, val)" do
58
+ it "should delegate to .eq with escaping" do
59
+ described_class.equals('dn', 'f*oo').should == eq('dn', 'f\2Aoo')
60
+ end
61
+ end
62
+ describe "<- .begins(attr, val)" do
63
+ it "should delegate to .eq with escaping" do
64
+ described_class.begins('dn', 'f*oo').should == eq('dn', 'f\2Aoo*')
65
+ end
66
+ end
67
+ describe "<- .ends(attr, val)" do
68
+ it "should delegate to .eq with escaping" do
69
+ described_class.ends('dn', 'f*oo').should == eq('dn', '*f\2Aoo')
70
+ end
71
+ end
72
+ describe "<- .contains(attr, val)" do
73
+ it "should delegate to .eq with escaping" do
74
+ described_class.contains('dn', 'f*oo').should == eq('dn', '*f\2Aoo*')
75
+ end
76
+ end
77
+ end
78
+ describe "<- .escape(str)" do
79
+ it "should escape !, &, *, :, | and ~" do
80
+ Net::LDAP::Filter.escape('!&*:|~').should == "\\21\\26\\2A\\3A\\7C\\7E"
81
+ end
82
+ end
48
83
  end
@@ -0,0 +1,79 @@
1
+ require 'common'
2
+
3
+ class TestRename < Test::Unit::TestCase
4
+ def test_the_truth
5
+ assert true
6
+ end
7
+ # Commented out since it assumes you have a live LDAP server somewhere. This
8
+ # will be migrated to the integration specs, as soon as they are ready.
9
+
10
+ # HOST= '10.10.10.71'
11
+ # PORT = 389
12
+ # BASE = "o=test"
13
+ # AUTH = { :method => :simple, :username => "cn=testadmin,#{BASE}", :password => 'password' }
14
+ # BASIC_USER = "cn=jsmith,ou=sales,#{BASE}"
15
+ # RENAMED_USER = "cn=jbrown,ou=sales,#{BASE}"
16
+ # MOVED_USER = "cn=jsmith,ou=marketing,#{BASE}"
17
+ # RENAMED_MOVED_USER = "cn=jjones,ou=marketing,#{BASE}"
18
+ #
19
+ # def setup
20
+ # # create the entries we're going to manipulate
21
+ # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap|
22
+ # if ldap.add(:dn => "ou=sales,#{BASE}", :attributes => { :ou => "sales", :objectclass => "organizationalUnit" })
23
+ # puts "Add failed: #{ldap.get_operation_result.message} - code: #{ldap.get_operation_result.code}"
24
+ # end
25
+ # ldap.add(:dn => "ou=marketing,#{BASE}", :attributes => { :ou => "marketing", :objectclass => "organizationalUnit" })
26
+ # ldap.add(:dn => BASIC_USER, :attributes => { :cn => "jsmith", :objectclass => "inetOrgPerson", :sn => "Smith" })
27
+ # end
28
+ # end
29
+ #
30
+ # def test_rename_entry
31
+ # dn = nil
32
+ # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap|
33
+ # ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jbrown")
34
+ #
35
+ # ldap.search(:base => RENAMED_USER) do |entry|
36
+ # dn = entry.dn
37
+ # end
38
+ # end
39
+ # assert_equal(RENAMED_USER, dn)
40
+ # end
41
+ #
42
+ # def test_move_entry
43
+ # dn = nil
44
+ # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap|
45
+ # ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jsmith", :new_superior => "ou=marketing,#{BASE}")
46
+ #
47
+ # ldap.search(:base => MOVED_USER) do |entry|
48
+ # dn = entry.dn
49
+ # end
50
+ # end
51
+ # assert_equal(MOVED_USER, dn)
52
+ # end
53
+ #
54
+ # def test_move_and_rename_entry
55
+ # dn = nil
56
+ # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap|
57
+ # ldap.rename(:olddn => BASIC_USER, :newrdn => "cn=jjones", :new_superior => "ou=marketing,#{BASE}")
58
+ #
59
+ # ldap.search(:base => RENAMED_MOVED_USER) do |entry|
60
+ # dn = entry.dn
61
+ # end
62
+ # end
63
+ # assert_equal(RENAMED_MOVED_USER, dn)
64
+ # end
65
+ #
66
+ # def teardown
67
+ # # delete the entries
68
+ # # note: this doesn't always completely clear up on eDirectory as objects get locked while
69
+ # # the rename/move is being completed on the server and this prevents the delete from happening
70
+ # Net::LDAP::open(:host => HOST, :port => PORT, :auth => AUTH) do |ldap|
71
+ # ldap.delete(:dn => BASIC_USER)
72
+ # ldap.delete(:dn => RENAMED_USER)
73
+ # ldap.delete(:dn => MOVED_USER)
74
+ # ldap.delete(:dn => RENAMED_MOVED_USER)
75
+ # ldap.delete(:dn => "ou=sales,#{BASE}")
76
+ # ldap.delete(:dn => "ou=marketing,#{BASE}")
77
+ # end
78
+ # end
79
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scashin133-net-ldap
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Francis Cianfrocca
@@ -19,29 +19,13 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2010-07-01 00:00:00 -07:00
22
+ date: 2011-01-18 00:00:00 -08:00
23
23
  default_executable:
24
24
  dependencies:
25
- - !ruby/object:Gem::Dependency
26
- name: rubyforge
27
- prerelease: false
28
- requirement: &id001 !ruby/object:Gem::Requirement
29
- none: false
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- hash: 7
34
- segments:
35
- - 2
36
- - 0
37
- - 4
38
- version: 2.0.4
39
- type: :development
40
- version_requirements: *id001
41
25
  - !ruby/object:Gem::Dependency
42
26
  name: archive-tar-minitar
43
27
  prerelease: false
44
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &id001 !ruby/object:Gem::Requirement
45
29
  none: false
46
30
  requirements:
47
31
  - - ~>
@@ -53,11 +37,11 @@ dependencies:
53
37
  - 1
54
38
  version: 0.5.1
55
39
  type: :development
56
- version_requirements: *id002
40
+ version_requirements: *id001
57
41
  - !ruby/object:Gem::Dependency
58
42
  name: hanna
59
43
  prerelease: false
60
- requirement: &id003 !ruby/object:Gem::Requirement
44
+ requirement: &id002 !ruby/object:Gem::Requirement
61
45
  none: false
62
46
  requirements:
63
47
  - - ~>
@@ -69,11 +53,11 @@ dependencies:
69
53
  - 2
70
54
  version: 0.1.2
71
55
  type: :development
72
- version_requirements: *id003
56
+ version_requirements: *id002
73
57
  - !ruby/object:Gem::Dependency
74
58
  name: hoe-git
75
59
  prerelease: false
76
- requirement: &id004 !ruby/object:Gem::Requirement
60
+ requirement: &id003 !ruby/object:Gem::Requirement
77
61
  none: false
78
62
  requirements:
79
63
  - - ~>
@@ -83,11 +67,11 @@ dependencies:
83
67
  - 1
84
68
  version: "1"
85
69
  type: :development
86
- version_requirements: *id004
70
+ version_requirements: *id003
87
71
  - !ruby/object:Gem::Dependency
88
72
  name: metaid
89
73
  prerelease: false
90
- requirement: &id005 !ruby/object:Gem::Requirement
74
+ requirement: &id004 !ruby/object:Gem::Requirement
91
75
  none: false
92
76
  requirements:
93
77
  - - ~>
@@ -97,23 +81,23 @@ dependencies:
97
81
  - 1
98
82
  version: "1"
99
83
  type: :development
100
- version_requirements: *id005
84
+ version_requirements: *id004
101
85
  - !ruby/object:Gem::Dependency
102
86
  name: hoe
103
87
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ requirement: &id005 !ruby/object:Gem::Requirement
105
89
  none: false
106
90
  requirements:
107
91
  - - ">="
108
92
  - !ruby/object:Gem::Version
109
- hash: 21
93
+ hash: 47
110
94
  segments:
111
95
  - 2
112
- - 6
113
- - 1
114
- version: 2.6.1
96
+ - 8
97
+ - 0
98
+ version: 2.8.0
115
99
  type: :development
116
- version_requirements: *id006
100
+ version_requirements: *id005
117
101
  description: Pure Ruby LDAP library.
118
102
  email:
119
103
  - blackhedd@rubyforge.org
@@ -131,7 +115,10 @@ extra_rdoc_files:
131
115
  - README.txt
132
116
  - Hacking.rdoc
133
117
  files:
118
+ - .bundle/config
134
119
  - COPYING
120
+ - Gemfile
121
+ - Gemfile.lock
135
122
  - Hacking.rdoc
136
123
  - History.txt
137
124
  - LICENSE
@@ -169,6 +156,7 @@ files:
169
156
  - test/test_filter.rb
170
157
  - test/test_ldif.rb
171
158
  - test/test_password.rb
159
+ - test/test_rename.rb
172
160
  - test/test_snmp.rb
173
161
  - test/testdata.ldif
174
162
  - testserver/ldapserver.rb
@@ -215,4 +203,5 @@ test_files:
215
203
  - test/test_filter.rb
216
204
  - test/test_ldif.rb
217
205
  - test/test_password.rb
206
+ - test/test_rename.rb
218
207
  - test/test_snmp.rb