|
117 | 117 | context "instrumentation" do |
118 | 118 | before do |
119 | 119 | @tcp_socket = flexmock(:connection) |
| 120 | + # handle write |
120 | 121 | @tcp_socket.should_receive(:write) |
| 122 | + # return this mock |
121 | 123 | flexmock(TCPSocket).should_receive(:new).and_return(@tcp_socket) |
| 124 | + |
122 | 125 | @service = MockInstrumentationService.new |
123 | 126 | end |
124 | 127 |
|
|
130 | 133 | it "should publish a write.net_ldap_connection event" do |
131 | 134 | ber = Net::BER::BerIdentifiedArray.new([0, "", ""]) |
132 | 135 | 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) |
134 | 138 |
|
135 | 139 | events = @service.subscribe "write.net_ldap_connection" |
136 | 140 |
|
|
159 | 163 | payload.should have_key(:result) |
160 | 164 | result.should == read_result |
161 | 165 | 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 |
162 | 194 | end |
163 | 195 | end |
0 commit comments