test/test_ldap.rb in net-ldap-0.13.0 vs test/test_ldap.rb in net-ldap-0.14.0
- old
+ new
@@ -1,8 +1,30 @@
require 'test_helper'
class TestLDAPInstrumentation < Test::Unit::TestCase
+ # Fake Net::LDAP::Connection for testing
+ class FakeConnection
+ # It's difficult to instantiate Net::LDAP::PDU objects. Faking out what we
+ # need here until that object is brought under test and has it's constructor
+ # cleaned up.
+ class Result < Struct.new(:success?, :result_code); end
+
+ def initialize
+ @bind_success = Result.new(true, Net::LDAP::ResultCodeSuccess)
+ @search_success = Result.new(true, Net::LDAP::ResultCodeSizeLimitExceeded)
+ end
+
+ def bind(args = {})
+ @bind_success
+ end
+
+ def search(*args)
+ yield @search_success if block_given?
+ @search_success
+ end
+ end
+
def setup
@connection = flexmock(:connection, :close => true)
flexmock(Net::LDAP::Connection).should_receive(:new).and_return(@connection)
@service = MockInstrumentationService.new
@@ -13,12 +35,13 @@
end
def test_instrument_bind
events = @service.subscribe "bind.net_ldap"
- bind_result = flexmock(:bind_result, :success? => true)
- flexmock(@connection).should_receive(:bind).with(Hash).and_return(bind_result)
+ fake_connection = FakeConnection.new
+ @subject.connection = fake_connection
+ bind_result = fake_connection.bind
assert @subject.bind
payload, result = events.pop
assert result
@@ -26,14 +49,13 @@
end
def test_instrument_search
events = @service.subscribe "search.net_ldap"
- flexmock(@connection).should_receive(:bind).and_return(flexmock(:bind_result, :result_code => Net::LDAP::ResultCodeSuccess))
- flexmock(@connection).should_receive(:search).with(Hash, Proc).
- yields(entry = Net::LDAP::Entry.new("uid=user1,ou=users,dc=example,dc=com")).
- and_return(flexmock(:search_result, :success? => true, :result_code => Net::LDAP::ResultCodeSuccess))
+ fake_connection = FakeConnection.new
+ @subject.connection = fake_connection
+ entry = fake_connection.search
refute_nil @subject.search(:filter => "(uid=user1)")
payload, result = events.pop
assert_equal [entry], result
@@ -42,14 +64,13 @@
end
def test_instrument_search_with_size
events = @service.subscribe "search.net_ldap"
- flexmock(@connection).should_receive(:bind).and_return(flexmock(:bind_result, :result_code => Net::LDAP::ResultCodeSuccess))
- flexmock(@connection).should_receive(:search).with(Hash, Proc).
- yields(entry = Net::LDAP::Entry.new("uid=user1,ou=users,dc=example,dc=com")).
- and_return(flexmock(:search_result, :success? => true, :result_code => Net::LDAP::ResultCodeSizeLimitExceeded))
+ fake_connection = FakeConnection.new
+ @subject.connection = fake_connection
+ entry = fake_connection.search
refute_nil @subject.search(:filter => "(uid=user1)", :size => 1)
payload, result = events.pop
assert_equal [entry], result
@@ -67,7 +88,27 @@
def test_encryption
enc = @subject.encryption('start_tls')
assert_equal enc[:method], :start_tls
+ end
+
+ def test_normalize_encryption_symbol
+ enc = @subject.send(:normalize_encryption, :start_tls)
+ assert_equal enc, {:method => :start_tls, :tls_options => {}}
+ end
+
+ def test_normalize_encryption_nil
+ enc = @subject.send(:normalize_encryption, nil)
+ assert_equal enc, nil
+ end
+
+ def test_normalize_encryption_string
+ enc = @subject.send(:normalize_encryption, 'start_tls')
+ assert_equal enc, {:method => :start_tls, :tls_options => {}}
+ end
+
+ def test_normalize_encryption_hash
+ enc = @subject.send(:normalize_encryption, {:method => :start_tls, :tls_options => {:foo => :bar}})
+ assert_equal enc, {:method => :start_tls, :tls_options => {:foo => :bar}}
end
end