diff --git a/lib/net/ldap.rb b/lib/net/ldap.rb index ae63ce5..27bc5e9 100644 --- a/lib/net/ldap.rb +++ b/lib/net/ldap.rb @@ -619,7 +619,7 @@ class Net::LDAP end args[:base] ||= @base - result_set = (args and args[:return_result] == false) ? nil : [] + result_set = args[:return_result] == false ? nil : [] if @open_connection @result = @open_connection.search(args) { |entry| @@ -642,7 +642,11 @@ class Net::LDAP end end - result_set || @result == 0 + if args[:return_result] + @result == 0 ? result_set : nil + else + @result == 0 + end end # #bind connects to an LDAP server and requests authentication based on diff --git a/spec/unit/ldap/search_spec.rb b/spec/unit/ldap/search_spec.rb new file mode 100644 index 0000000..3bf2187 --- /dev/null +++ b/spec/unit/ldap/search_spec.rb @@ -0,0 +1,29 @@ +# -*- ruby encoding: utf-8 -*- + +describe Net::LDAP, "search method" do + class FakeConnection + def search(args) + error_code = 1 + return error_code + end + end + + before(:each) do + @connection = Net::LDAP.new + @connection.instance_variable_set(:@open_connection, FakeConnection.new) + end + + context "when returning result set" do + it "should return nil upon error" do + result_set = @connection.search(:return_result => true) + result_set.should be_nil + end + end + + context "when returning boolean" do + it "should return false upon error" do + success = @connection.search(:return_result => false) + success.should == false + end + end +end