Skip to content

Commit 67e17a2

Browse files
committed
Spec out search.net_ldap_connection event
1 parent 2101304 commit 67e17a2

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

spec/unit/ldap_spec.rb

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,11 @@
117117
context "instrumentation" do
118118
before do
119119
@tcp_socket = flexmock(:connection)
120+
# handle write
120121
@tcp_socket.should_receive(:write)
122+
# return this mock
121123
flexmock(TCPSocket).should_receive(:new).and_return(@tcp_socket)
124+
122125
@service = MockInstrumentationService.new
123126
end
124127

@@ -130,7 +133,8 @@
130133
it "should publish a write.net_ldap_connection event" do
131134
ber = Net::BER::BerIdentifiedArray.new([0, "", ""])
132135
ber.ber_identifier = 7
133-
@tcp_socket.should_receive(:read_ber).and_return([2, ber])
136+
read_result = [2, ber]
137+
@tcp_socket.should_receive(:read_ber).and_return(read_result)
134138

135139
events = @service.subscribe "write.net_ldap_connection"
136140

@@ -159,5 +163,33 @@
159163
payload.should have_key(:result)
160164
result.should == read_result
161165
end
166+
167+
it "should publish a search.net_ldap_connection event" do
168+
# search data
169+
search_data_ber = Net::BER::BerIdentifiedArray.new([2, [
170+
"uid=user1,ou=OrgUnit2,ou=OrgUnitTop,dc=openldap,dc=ghe,dc=local",
171+
[ ["uid", ["user1"]] ]
172+
]])
173+
search_data_ber.ber_identifier = Net::LDAP::PDU::SearchReturnedData
174+
search_data = [2, search_data_ber]
175+
# search result (end of results)
176+
search_result_ber = Net::BER::BerIdentifiedArray.new([0, "", ""])
177+
search_result_ber.ber_identifier = Net::LDAP::PDU::SearchResult
178+
search_result = [2, search_result_ber]
179+
@tcp_socket.should_receive(:read_ber).and_return(search_data).
180+
and_return(search_result)
181+
182+
events = @service.subscribe "search.net_ldap_connection"
183+
184+
result = subject.search(filter: "(uid=user1)")
185+
result.should be_success
186+
187+
# a search event
188+
payload, result = events.pop
189+
payload.should have_key(:result)
190+
payload.should have_key(:filter)
191+
payload[:filter].to_s.should == "(uid=user1)"
192+
result.should be_truthy
193+
end
162194
end
163195
end

0 commit comments

Comments
 (0)