spec/unit/ldap_spec.rb in net-ldap-0.3.1 vs spec/unit/ldap_spec.rb in net-ldap-0.5.1
- old
+ new
@@ -5,44 +5,74 @@
context "when host is not responding" do
before(:each) do
flexmock(TCPSocket).
should_receive(:new).and_raise(Errno::ECONNREFUSED)
end
-
+
it "should raise LdapError" do
lambda {
Net::LDAP::Connection.new(
- :server => 'test.mocked.com',
+ :server => 'test.mocked.com',
:port => 636)
}.should raise_error(Net::LDAP::LdapError)
end
end
context "when host is blocking the port" do
before(:each) do
flexmock(TCPSocket).
should_receive(:new).and_raise(SocketError)
end
-
+
it "should raise LdapError" do
lambda {
Net::LDAP::Connection.new(
- :server => 'test.mocked.com',
+ :server => 'test.mocked.com',
:port => 636)
}.should raise_error(Net::LDAP::LdapError)
end
end
context "on other exceptions" do
before(:each) do
flexmock(TCPSocket).
should_receive(:new).and_raise(NameError)
end
-
+
it "should rethrow the exception" do
lambda {
Net::LDAP::Connection.new(
- :server => 'test.mocked.com',
+ :server => 'test.mocked.com',
:port => 636)
}.should raise_error(NameError)
end
end
end
-end
\ No newline at end of file
+
+ context "populate error messages" do
+ before do
+ @tcp_socket = flexmock(:connection)
+ @tcp_socket.should_receive(:write)
+ flexmock(TCPSocket).should_receive(:new).and_return(@tcp_socket)
+ end
+
+ subject { Net::LDAP::Connection.new(:server => 'test.mocked.com', :port => 636) }
+
+ it "should get back error messages if operation fails" do
+ ber = Net::BER::BerIdentifiedArray.new([53, "", "The provided password value was rejected by a password validator: The provided password did not contain enough characters from the character set 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. The minimum number of characters from that set that must be present in user passwords is 1"])
+ ber.ber_identifier = 7
+ @tcp_socket.should_receive(:read_ber).and_return([2, ber])
+
+ result = subject.modify(:dn => "1", :operations => [[:replace, "mail", "something@sothsdkf.com"]])
+ result.should be_failure
+ result.error_message.should == "The provided password value was rejected by a password validator: The provided password did not contain enough characters from the character set 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. The minimum number of characters from that set that must be present in user passwords is 1"
+ end
+
+ it "shouldn't get back error messages if operation succeeds" do
+ ber = Net::BER::BerIdentifiedArray.new([0, "", ""])
+ ber.ber_identifier = 7
+ @tcp_socket.should_receive(:read_ber).and_return([2, ber])
+
+ result = subject.modify(:dn => "1", :operations => [[:replace, "mail", "something@sothsdkf.com"]])
+ result.should be_success
+ result.error_message.should == ""
+ end
+ end
+end