Skip to content

Commit 12ae55b

Browse files
committed
Add service#subscribe to listen for specific events
1 parent b6eb872 commit 12ae55b

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

spec/spec_helper.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,19 @@ def raw_string(s)
1010
end
1111

1212
class MockInstrumentationService
13-
attr_reader :events
14-
1513
def initialize
16-
@events = []
14+
@events = {}
1715
end
1816

1917
def instrument(event, payload)
2018
result = yield(payload)
21-
@events << [event, payload, result]
19+
@events[event] ||= []
20+
@events[event] << [payload, result]
2221
result
2322
end
23+
24+
def subscribe(event)
25+
@events[event] ||= []
26+
@events[event]
27+
end
2428
end

spec/unit/ldap_spec.rb

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,25 @@
1414
ldap = Net::LDAP.new(:server => 'test.mocked.com', :port => 636,
1515
:instrumentation_service => @service)
1616

17-
@tcp_socket.should_receive(:write)
17+
@tcp_socket.should_receive(:write).and_return(bytes_written = 1)
18+
19+
write_events = @service.subscribe "write.net_ldap_connection"
20+
read_events = @service.subscribe "read.net_ldap_connection"
1821

1922
ber = Net::BER::BerIdentifiedArray.new([0, "", ""])
2023
ber.ber_identifier = 7
21-
result = [2, ber]
22-
@tcp_socket.should_receive(:read_ber).and_return(result)
24+
read_result = [2, ber]
25+
@tcp_socket.should_receive(:read_ber).and_return(read_result)
2326

2427
ldap.bind.should be_true
2528

26-
# a write event, then a read event
27-
@service.events.size.should == 2
29+
# a write event
30+
payload, result = write_events.pop
31+
result.should == bytes_written
32+
33+
# then a read event
34+
payload, result = read_events.pop
35+
result.should == read_result
2836
end
2937
end
3038
end
@@ -125,19 +133,19 @@
125133
read_result = [2, ber]
126134
@tcp_socket.should_receive(:read_ber).and_return(read_result)
127135

136+
write_events = @service.subscribe "write.net_ldap_connection"
137+
read_events = @service.subscribe "read.net_ldap_connection"
138+
128139
result = subject.modify(:dn => "1", :operations => [[:replace, "mail", "something@sothsdkf.com"]])
129140
result.should be_success
130141

131-
# a write event, then a read event
132-
@service.events.size.should == 2
133-
134-
event, payload, result = @service.events.shift
135-
event.should == "write.net_ldap_connection"
142+
# a write event
143+
payload, result = write_events.pop
136144
payload.should have_key(:result)
137145
payload.should have_key(:packet)
138146

139-
event, payload, result = @service.events.shift
140-
event.should == "read.net_ldap_connection"
147+
# then a read event
148+
payload, result = read_events.pop
141149
payload.should have_key(:result)
142150
result.should == read_result
143151
end

0 commit comments

Comments
 (0)