From 42bdeb93d8597fbbb9ae42e6090325f604f14d8c Mon Sep 17 00:00:00 2001 From: Daniel Abrahamsson Date: Thu, 22 Sep 2011 15:55:13 +0200 Subject: [PATCH 1/3] Add test case showing incorrect behaviour for failed searches --- spec/unit/ldap/search_spec.rb | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 spec/unit/ldap/search_spec.rb diff --git a/spec/unit/ldap/search_spec.rb b/spec/unit/ldap/search_spec.rb new file mode 100644 index 0000000..b00ae98 --- /dev/null +++ b/spec/unit/ldap/search_spec.rb @@ -0,0 +1,30 @@ +# -*- 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) do + end + 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 From a4819e525f29d83357a298065df06acf5903b1af Mon Sep 17 00:00:00 2001 From: Daniel Abrahamsson Date: Thu, 22 Sep 2011 15:55:40 +0200 Subject: [PATCH 2/3] Fix incorrect return value from search when :return_result => true and and search fails --- lib/net/ldap.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/net/ldap.rb b/lib/net/ldap.rb index b0105fc..4d9f047 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 From 2336188503a95428bafa3fc971fd2dca2cb24f95 Mon Sep 17 00:00:00 2001 From: Daniel Abrahamsson Date: Thu, 22 Sep 2011 16:19:12 +0200 Subject: [PATCH 3/3] No need to pass empty block to search --- spec/unit/ldap/search_spec.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/unit/ldap/search_spec.rb b/spec/unit/ldap/search_spec.rb index b00ae98..3bf2187 100644 --- a/spec/unit/ldap/search_spec.rb +++ b/spec/unit/ldap/search_spec.rb @@ -15,8 +15,7 @@ describe Net::LDAP, "search method" do context "when returning result set" do it "should return nil upon error" do - result_set = @connection.search(:return_result => true) do - end + result_set = @connection.search(:return_result => true) result_set.should be_nil end end