socialcast-net-ldap 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +10 -10
- data/Manifest.txt +0 -1
- data/lib/net/ldap.rb +7 -6
- data/spec/spec.opts +1 -1
- data/spec/unit/ldap_spec.rb +28 -7
- metadata +3 -5
- data/spec/integration/ssl_ber_spec.rb +0 -33
data/Gemfile.lock
CHANGED
@@ -2,22 +2,22 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
archive-tar-minitar (0.5.2)
|
5
|
-
diff-lcs (1.
|
6
|
-
flexmock (
|
5
|
+
diff-lcs (1.2.4)
|
6
|
+
flexmock (1.3.2)
|
7
7
|
hoe (2.8.0)
|
8
8
|
rake (>= 0.8.7)
|
9
9
|
hoe-git (1.3.0)
|
10
10
|
hoe (>= 2.2.0)
|
11
11
|
metaid (1.0)
|
12
12
|
rake (0.8.7)
|
13
|
-
rspec (2.
|
14
|
-
rspec-core (~> 2.
|
15
|
-
rspec-expectations (~> 2.
|
16
|
-
rspec-mocks (~> 2.
|
17
|
-
rspec-core (2.
|
18
|
-
rspec-expectations (2.3
|
19
|
-
diff-lcs (
|
20
|
-
rspec-mocks (2.
|
13
|
+
rspec (2.14.1)
|
14
|
+
rspec-core (~> 2.14.0)
|
15
|
+
rspec-expectations (~> 2.14.0)
|
16
|
+
rspec-mocks (~> 2.14.0)
|
17
|
+
rspec-core (2.14.6)
|
18
|
+
rspec-expectations (2.14.3)
|
19
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
20
|
+
rspec-mocks (2.14.4)
|
21
21
|
|
22
22
|
PLATFORMS
|
23
23
|
ruby
|
data/Manifest.txt
CHANGED
data/lib/net/ldap.rb
CHANGED
@@ -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.
|
249
|
+
VERSION = "0.1.8"
|
250
250
|
|
251
251
|
class LdapError < StandardError; end
|
252
252
|
|
@@ -1124,9 +1124,10 @@ class Net::LDAP::Connection #:nodoc:
|
|
1124
1124
|
end
|
1125
1125
|
end
|
1126
1126
|
|
1127
|
-
def self.wrap_with_ssl(io)
|
1127
|
+
def self.wrap_with_ssl(io, options = {})
|
1128
1128
|
raise Net::LDAP::LdapError, "OpenSSL is unavailable" unless Net::LDAP::HasOpenSSL
|
1129
1129
|
ctx = OpenSSL::SSL::SSLContext.new
|
1130
|
+
ctx.ssl_version = options[:ssl_version] if options.has_key?(:ssl_version)
|
1130
1131
|
conn = OpenSSL::SSL::SSLSocket.new(io, ctx)
|
1131
1132
|
conn.connect
|
1132
1133
|
conn.sync_close = true
|
@@ -1165,7 +1166,7 @@ class Net::LDAP::Connection #:nodoc:
|
|
1165
1166
|
def setup_encryption(args)
|
1166
1167
|
case args[:method]
|
1167
1168
|
when :simple_tls
|
1168
|
-
@conn = self.class.wrap_with_ssl(@conn)
|
1169
|
+
@conn = self.class.wrap_with_ssl(@conn, args)
|
1169
1170
|
# additional branches requiring server validation and peer certs, etc.
|
1170
1171
|
# go here.
|
1171
1172
|
when :start_tls
|
@@ -1178,7 +1179,7 @@ class Net::LDAP::Connection #:nodoc:
|
|
1178
1179
|
pdu = Net::LDAP::PDU.new(be)
|
1179
1180
|
raise Net::LDAP::LdapError, "no start_tls result" if pdu.nil?
|
1180
1181
|
if pdu.result_code.zero?
|
1181
|
-
@conn = self.class.wrap_with_ssl(@conn)
|
1182
|
+
@conn = self.class.wrap_with_ssl(@conn, args)
|
1182
1183
|
else
|
1183
1184
|
raise Net::LDAP::LdapError, "start_tls failed: #{pdu.result_code}"
|
1184
1185
|
end
|
@@ -1328,7 +1329,7 @@ class Net::LDAP::Connection #:nodoc:
|
|
1328
1329
|
# in the protocol.
|
1329
1330
|
#++
|
1330
1331
|
def search(args = {})
|
1331
|
-
search_filter = (args && args[:filter]) ||
|
1332
|
+
search_filter = (args && args[:filter]) ||
|
1332
1333
|
Net::LDAP::Filter.eq("objectclass", "*")
|
1333
1334
|
search_filter = Net::LDAP::Filter.construct(search_filter) if search_filter.is_a?(String)
|
1334
1335
|
search_base = (args && args[:base]) || "dc=example, dc=com"
|
@@ -1518,7 +1519,7 @@ class Net::LDAP::Connection #:nodoc:
|
|
1518
1519
|
|
1519
1520
|
request = [old_dn.to_ber, new_rdn.to_ber, delete_attrs.to_ber]
|
1520
1521
|
request << new_superior.to_ber unless new_superior == nil
|
1521
|
-
|
1522
|
+
|
1522
1523
|
pkt = [next_msgid.to_ber, request.to_ber_appsequence(12)].to_ber_sequence
|
1523
1524
|
@conn.write pkt
|
1524
1525
|
|
data/spec/spec.opts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
--format specdoc
|
2
|
-
--colour
|
2
|
+
--colour
|
data/spec/unit/ldap_spec.rb
CHANGED
@@ -7,11 +7,11 @@ describe Net::LDAP::Connection do
|
|
7
7
|
flexmock(TCPSocket).
|
8
8
|
should_receive(:new).and_raise(Errno::ECONNREFUSED)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
it "should raise LdapError" do
|
12
12
|
lambda {
|
13
13
|
Net::LDAP::Connection.new(
|
14
|
-
:server => 'test.mocked.com',
|
14
|
+
:server => 'test.mocked.com',
|
15
15
|
:port => 636)
|
16
16
|
}.should raise_error(Net::LDAP::LdapError)
|
17
17
|
end
|
@@ -21,11 +21,11 @@ describe Net::LDAP::Connection do
|
|
21
21
|
flexmock(TCPSocket).
|
22
22
|
should_receive(:new).and_raise(SocketError)
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "should raise LdapError" do
|
26
26
|
lambda {
|
27
27
|
Net::LDAP::Connection.new(
|
28
|
-
:server => 'test.mocked.com',
|
28
|
+
:server => 'test.mocked.com',
|
29
29
|
:port => 636)
|
30
30
|
}.should raise_error(Net::LDAP::LdapError)
|
31
31
|
end
|
@@ -35,14 +35,35 @@ describe Net::LDAP::Connection do
|
|
35
35
|
flexmock(TCPSocket).
|
36
36
|
should_receive(:new).and_raise(NameError)
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
it "should rethrow the exception" do
|
40
40
|
lambda {
|
41
41
|
Net::LDAP::Connection.new(
|
42
|
-
:server => 'test.mocked.com',
|
42
|
+
:server => 'test.mocked.com',
|
43
43
|
:port => 636)
|
44
44
|
}.should raise_error(NameError)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
describe "wrap_with_ssl" do
|
49
|
+
before(:each) do
|
50
|
+
@conn = flexmock(TCPSocket).should_receive(:new).and_return(flexmock('tcpsocket'))
|
51
|
+
@ssl_con = flexmock('sslsocket')
|
52
|
+
@ssl_con.should_receive(:connect)
|
53
|
+
@ssl_con.should_receive(:sync_close=)
|
54
|
+
flexmock(OpenSSL::SSL::SSLSocket).should_receive(:new).and_return(@ssl_con)
|
55
|
+
end
|
56
|
+
it "allows no options to be passed" do
|
57
|
+
flexmock(OpenSSL::SSL::SSLContext).new_instances.should_receive(:ssl_version=).never
|
58
|
+
Net::LDAP::Connection.wrap_with_ssl(@conn).should eql(@ssl_con)
|
59
|
+
end
|
60
|
+
it "allows options to be passed" do
|
61
|
+
flexmock(OpenSSL::SSL::SSLContext).new_instances.should_receive(:ssl_version=).never
|
62
|
+
Net::LDAP::Connection.wrap_with_ssl(@conn, {}).should eql(@ssl_con)
|
63
|
+
end
|
64
|
+
it "communicates over the ssl_version configured" do
|
65
|
+
flexmock(OpenSSL::SSL::SSLContext).new_instances.should_receive(:ssl_version=).with(:SSLv3)
|
66
|
+
Net::LDAP::Connection.wrap_with_ssl(@conn, {:ssl_version => :SSLv3}).should eql(@ssl_con)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: socialcast-net-ldap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2013-
|
16
|
+
date: 2013-10-17 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: archive-tar-minitar
|
@@ -168,8 +168,6 @@ files:
|
|
168
168
|
bGliL25ldC9sZGlmLnJi
|
169
169
|
- !binary |-
|
170
170
|
bGliL25ldC9zbm1wLnJi
|
171
|
-
- !binary |-
|
172
|
-
c3BlYy9pbnRlZ3JhdGlvbi9zc2xfYmVyX3NwZWMucmI=
|
173
171
|
- !binary |-
|
174
172
|
c3BlYy9zcGVjLm9wdHM=
|
175
173
|
- !binary |-
|
@@ -226,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
224
|
version: '0'
|
227
225
|
requirements: []
|
228
226
|
rubyforge_project: socialcast-net-ldap
|
229
|
-
rubygems_version: 1.8.
|
227
|
+
rubygems_version: 1.8.27
|
230
228
|
signing_key:
|
231
229
|
specification_version: 3
|
232
230
|
summary: Pure Ruby LDAP support library with most client features and some server
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require 'net/ldap'
|
4
|
-
|
5
|
-
describe "BER serialisation (SSL)" do
|
6
|
-
# Transmits str to #to and reads it back from #from.
|
7
|
-
#
|
8
|
-
def transmit(str)
|
9
|
-
to.write(str)
|
10
|
-
to.close
|
11
|
-
|
12
|
-
from.read
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader :to, :from
|
16
|
-
before(:each) do
|
17
|
-
@from, @to = IO.pipe
|
18
|
-
|
19
|
-
flexmock(OpenSSL::SSL::SSLSocket).
|
20
|
-
new_instances.should_receive(:connect => nil)
|
21
|
-
|
22
|
-
@to = Net::LDAP::Connection.wrap_with_ssl(to)
|
23
|
-
@from = Net::LDAP::Connection.wrap_with_ssl(from)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should transmit strings" do
|
27
|
-
transmit('foo').should == 'foo'
|
28
|
-
end
|
29
|
-
it "should correctly transmit numbers" do
|
30
|
-
to.write 1234.to_ber
|
31
|
-
from.read_ber.should == 1234
|
32
|
-
end
|
33
|
-
end
|