test/integration/test_bind.rb in net-ldap-0.16.1 vs test/integration/test_bind.rb in net-ldap-0.16.2

- old
+ new

@@ -1,15 +1,19 @@ require_relative '../test_helper' class TestBindIntegration < LDAPIntegrationTestCase + + INTEGRATION_HOSTNAME = 'ldap.example.org'.freeze + def test_bind_success assert @ldap.bind(BIND_CREDS), @ldap.get_operation_result.inspect end def test_bind_timeout - @ldap.port = 8389 + @ldap.host = "10.255.255.1" # non-routable IP + error = assert_raise Net::LDAP::Error do @ldap.bind BIND_CREDS end msgs = ['Operation timed out - user specified timeout', 'Connection timed out - user specified timeout'] @@ -32,20 +36,21 @@ refute @ldap.bind(BIND_CREDS.merge(password: "not my password")), @ldap.get_operation_result.inspect end def test_bind_tls_with_cafile + @ldap.host = INTEGRATION_HOSTNAME @ldap.encryption( method: :start_tls, tls_options: TLS_OPTS.merge(ca_file: CA_FILE), ) assert @ldap.bind(BIND_CREDS), @ldap.get_operation_result.inspect end def test_bind_tls_with_bad_hostname_verify_none_no_ca_passes - @ldap.host = '127.0.0.1' + @ldap.host = INTEGRATION_HOSTNAME @ldap.encryption( method: :start_tls, tls_options: { verify_mode: OpenSSL::SSL::VERIFY_NONE }, ) assert @ldap.bind(BIND_CREDS), @@ -110,22 +115,22 @@ error.message, ) end def test_bind_tls_with_valid_hostname_default_opts_passes - @ldap.host = 'localhost' + @ldap.host = INTEGRATION_HOSTNAME @ldap.encryption( method: :start_tls, tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_PEER, ca_file: CA_FILE), ) assert @ldap.bind(BIND_CREDS), @ldap.get_operation_result.inspect end def test_bind_tls_with_valid_hostname_just_verify_peer_ca_passes - @ldap.host = 'localhost' + @ldap.host = INTEGRATION_HOSTNAME @ldap.encryption( method: :start_tls, tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER, ca_file: CA_FILE }, ) @@ -144,29 +149,23 @@ "hostname \"#{@ldap.host}\" does not match the server certificate", error.message, ) end - # The following depend on /etc/hosts hacking. - # We can do that on CI, but it's less than cool on people's dev boxes def test_bind_tls_with_multiple_hosts - omit_unless ENV['TRAVIS'] == 'true' - @ldap.host = nil - @ldap.hosts = [['ldap01.example.com', 389], ['ldap02.example.com', 389]] + @ldap.hosts = [[INTEGRATION_HOSTNAME, 389], [INTEGRATION_HOSTNAME, 389]] @ldap.encryption( method: :start_tls, tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_PEER, ca_file: CA_FILE), ) assert @ldap.bind(BIND_CREDS), @ldap.get_operation_result.inspect end def test_bind_tls_with_multiple_bogus_hosts - omit_unless ENV['TRAVIS'] == 'true' - @ldap.host = nil @ldap.hosts = [['127.0.0.1', 389], ['bogus.example.com', 389]] @ldap.encryption( method: :start_tls, tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_PEER, @@ -179,12 +178,10 @@ assert_equal("Unable to connect to any given server: ", error.message.split("\n").shift) end def test_bind_tls_with_multiple_bogus_hosts_no_verification - omit_unless ENV['TRAVIS'] == 'true' - @ldap.host = nil @ldap.hosts = [['127.0.0.1', 389], ['bogus.example.com', 389]] @ldap.encryption( method: :start_tls, tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_NONE), @@ -192,12 +189,10 @@ assert @ldap.bind(BIND_CREDS), @ldap.get_operation_result.inspect end def test_bind_tls_with_multiple_bogus_hosts_ca_check_only_fails - omit_unless ENV['TRAVIS'] == 'true' - @ldap.host = nil @ldap.hosts = [['127.0.0.1', 389], ['bogus.example.com', 389]] @ldap.encryption( method: :start_tls, tls_options: { ca_file: CA_FILE }, @@ -211,34 +206,17 @@ end # This test is CI-only because we can't add the fixture CA # to the system CA store on people's dev boxes. def test_bind_tls_valid_hostname_system_ca_on_travis_passes + omit "not sure how to install custom CA cert in travis" omit_unless ENV['TRAVIS'] == 'true' + @ldap.host = INTEGRATION_HOSTNAME @ldap.encryption( method: :start_tls, tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER }, ) assert @ldap.bind(BIND_CREDS), @ldap.get_operation_result.inspect - end - - # Inverse of the above! Don't run this on Travis, only on Vagrant. - # Since Vagrant's hypervisor *won't* have the CA in the system - # x509 store, we can assume validation will fail - def test_bind_tls_valid_hostname_system_on_vagrant_fails - omit_if ENV['TRAVIS'] == 'true' - - @ldap.encryption( - method: :start_tls, - tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER }, - ) - error = assert_raise Net::LDAP::Error do - @ldap.bind BIND_CREDS - end - assert_equal( - "SSL_connect returned=1 errno=0 state=error: certificate verify failed", - error.message, - ) end end