Skip to content

Commit d318ff4

Browse files
author
Jerry Cheung
committed
add Connection#write_request
higher level abstraction to make testing easier and to DRY up existing socket IO
1 parent d8f9f37 commit d318ff4

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

lib/net/ldap/connection.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ def write(packet)
141141
end
142142
private :write
143143

144+
# Internal: Convert `request` and `controls` to a BER data packet with the
145+
# next message id and call `#write` on it.
146+
def write_request(request, controls = nil)
147+
write([next_msgid, request, controls].compact.to_ber_sequence)
148+
end
149+
144150
def next_msgid
145151
@msgid ||= 0
146152
@msgid += 1

test/test_ldap_connection.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,27 @@ def test_modify_ops_replace
2121
expected = [ "0#\n\x01\x020\x1E\x04\x04mail1\x16\x04\x14[email protected]" ]
2222
assert_equal(expected, result)
2323
end
24+
25+
def test_write_request
26+
mock = Minitest::Mock.new
27+
mock.expect(:write, true, [[1, "request"].to_ber_sequence])
28+
conn = Net::LDAP::Connection.new(:socket => mock)
29+
conn.write_request("request")
30+
end
31+
32+
def test_write_request_with_controls
33+
mock = Minitest::Mock.new
34+
mock.expect(:write, true, [[1, "request", "controls"].to_ber_sequence])
35+
conn = Net::LDAP::Connection.new(:socket => mock)
36+
conn.write_request("request", "controls")
37+
end
38+
39+
def test_write_request_increments_msgid
40+
mock = Minitest::Mock.new
41+
mock.expect(:write, true, [[1, "request1"].to_ber_sequence])
42+
mock.expect(:write, true, [[2, "request2"].to_ber_sequence])
43+
conn = Net::LDAP::Connection.new(:socket => mock)
44+
conn.write_request("request1")
45+
conn.write_request("request2")
46+
end
2447
end

0 commit comments

Comments
 (0)