net-ldap 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of net-ldap might be problematic. Click here for more details.

@@ -0,0 +1,4 @@
1
+ cn = rubyldap
2
+ ca
3
+ cert_signing_key
4
+ expiration_days = 7200
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIID7zCCAlegAwIBAgIMV7zWei6SNfABx6jMMA0GCSqGSIb3DQEBCwUAMBMxETAP
3
+ BgNVBAMTCHJ1YnlsZGFwMB4XDTE2MDgyMzIzMDQyNloXDTM2MDUxMDIzMDQyNlow
4
+ EzERMA8GA1UEAxMIcnVieWxkYXAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK
5
+ AoIBgQDGe9wziGHZJhIf+IEKSk1tpT9Mu7YgsUwjrlutvkoO1Q6K+amTAVDXizPf
6
+ 1DVSDpZP5+CfBOznhgLMsPvrQ02w4qx5/6X9L+zJcMk8jTNYSKj5uIKpK52E7Uok
7
+ aygMXeaqroPONGkoJIZiVGgdbWfTvcffTm8FOhztXUbMrMXJNinFsocGHEoMNN8b
8
+ vqgAyG4+DFHoK4L0c6eQjE4nZBChieZdShUhaBpV7r2qSNbPw67cvAKuEzml58mV
9
+ 1ZF1F73Ua8gPWXHEfUe2GEfG0NnRq6sGbsDYe/DIKxC7AZ89udZF3WZXNrPhvXKj
10
+ ZT7njwcMQemns4dNPQ0k2V4vAQ8pD8r8Qvb65FiSopUhVaGQswAnIMS1DnFq88AQ
11
+ KJTKIXbBuMwuaNNSs6R/qTS2RDk1w+CGpRXAg7+1SX5NKdrEsu1IaABA/tQ/zKKk
12
+ OLLJaD0giX1weBVmNeFcKxIoT34VS59eEt5APmPcguJnx+aBrA9TLzSO788apBN0
13
+ 4lGAmR0CAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQA
14
+ MB0GA1UdDgQWBBRTvXSkge03oqLu7UUjFI+oLYwnujANBgkqhkiG9w0BAQsFAAOC
15
+ AYEATSZQWH+uSN5GvOUvJ8LHWkeVovn0UhboK0K7GzmMeGz+dp/Xrj6eQ4ONK0zI
16
+ RCJyoo/nCR7CfQ5ujVXr03XD2SUgyD565ulXuhw336DasL5//fucmQYDeqhwbKML
17
+ FTzsF9H9dO4J5TjxJs7e5dRJ0wrP/XEY+WFhXXdSHTl8vGCI6QqWc7TvDpmbS4iX
18
+ uTzjJswu9Murt9JUJNMN2DlDi/vBBeruaj4c2cMMnKMvkfj14kd8wMocmzj+gVQl
19
+ r+fRQbKAJNec65lA4/Zeb6sD9SAi0ZIVgxA4a7g8/sdNWHIAxPicpJkIJf30TsyY
20
+ F+8+Hd5mBtCbvFfAVkT6bHBP1OiAgNke+Rh/j/sQbyWbKCKw0+jpFJgO9KUNGfC0
21
+ O/CqX+J4G7HqL8VJqrLnBvOdhfetAvNQtf1gcw5ZwpeEFM+Kvx/lsILaIYdAUSjX
22
+ ePOc5gI2Bi9WXq+T9AuhSf+TWUR874m/rdTWe5fM8mXCNl7C4I5zCqLltEDkSoMP
23
+ jDj/
24
+ -----END CERTIFICATE-----
@@ -0,0 +1,190 @@
1
+ Public Key Info:
2
+ Public Key Algorithm: RSA
3
+ Key Security Level: High (3072 bits)
4
+
5
+ modulus:
6
+ 00:c6:7b:dc:33:88:61:d9:26:12:1f:f8:81:0a:4a:4d
7
+ 6d:a5:3f:4c:bb:b6:20:b1:4c:23:ae:5b:ad:be:4a:0e
8
+ d5:0e:8a:f9:a9:93:01:50:d7:8b:33:df:d4:35:52:0e
9
+ 96:4f:e7:e0:9f:04:ec:e7:86:02:cc:b0:fb:eb:43:4d
10
+ b0:e2:ac:79:ff:a5:fd:2f:ec:c9:70:c9:3c:8d:33:58
11
+ 48:a8:f9:b8:82:a9:2b:9d:84:ed:4a:24:6b:28:0c:5d
12
+ e6:aa:ae:83:ce:34:69:28:24:86:62:54:68:1d:6d:67
13
+ d3:bd:c7:df:4e:6f:05:3a:1c:ed:5d:46:cc:ac:c5:c9
14
+ 36:29:c5:b2:87:06:1c:4a:0c:34:df:1b:be:a8:00:c8
15
+ 6e:3e:0c:51:e8:2b:82:f4:73:a7:90:8c:4e:27:64:10
16
+ a1:89:e6:5d:4a:15:21:68:1a:55:ee:bd:aa:48:d6:cf
17
+ c3:ae:dc:bc:02:ae:13:39:a5:e7:c9:95:d5:91:75:17
18
+ bd:d4:6b:c8:0f:59:71:c4:7d:47:b6:18:47:c6:d0:d9
19
+ d1:ab:ab:06:6e:c0:d8:7b:f0:c8:2b:10:bb:01:9f:3d
20
+ b9:d6:45:dd:66:57:36:b3:e1:bd:72:a3:65:3e:e7:8f
21
+ 07:0c:41:e9:a7:b3:87:4d:3d:0d:24:d9:5e:2f:01:0f
22
+ 29:0f:ca:fc:42:f6:fa:e4:58:92:a2:95:21:55:a1:90
23
+ b3:00:27:20:c4:b5:0e:71:6a:f3:c0:10:28:94:ca:21
24
+ 76:c1:b8:cc:2e:68:d3:52:b3:a4:7f:a9:34:b6:44:39
25
+ 35:c3:e0:86:a5:15:c0:83:bf:b5:49:7e:4d:29:da:c4
26
+ b2:ed:48:68:00:40:fe:d4:3f:cc:a2:a4:38:b2:c9:68
27
+ 3d:20:89:7d:70:78:15:66:35:e1:5c:2b:12:28:4f:7e
28
+ 15:4b:9f:5e:12:de:40:3e:63:dc:82:e2:67:c7:e6:81
29
+ ac:0f:53:2f:34:8e:ef:cf:1a:a4:13:74:e2:51:80:99
30
+ 1d:
31
+
32
+ public exponent:
33
+ 01:00:01:
34
+
35
+ private exponent:
36
+ 1d:0d:9a:50:ec:c0:ad:e1:75:bb:ba:4b:61:2f:39:20
37
+ 38:95:08:6d:5d:9e:71:75:5c:af:b3:f9:bd:a5:e7:7f
38
+ e6:4e:0f:77:73:ee:38:60:24:9f:26:3f:50:c2:bf:21
39
+ df:76:68:99:be:45:d3:29:f9:94:ee:bf:21:53:cb:b6
40
+ 7d:a7:93:80:09:53:03:45:dc:c2:a6:a2:37:64:f1:a2
41
+ 49:21:ac:91:6b:a3:d7:bd:d2:62:0c:ec:a6:83:10:e7
42
+ a7:ca:3d:be:dc:4b:1c:36:24:79:96:33:5b:43:5d:74
43
+ 50:0e:46:b0:9b:6d:9f:71:06:89:a5:c8:65:ed:d9:a3
44
+ 15:00:3c:3e:a9:75:50:9d:72:cb:c9:aa:e1:ba:a3:9c
45
+ 07:77:14:32:30:d4:4d:65:f4:7c:23:1d:79:84:9b:2e
46
+ 9a:19:df:43:ed:cd:e3:08:1f:d5:ff:6b:42:98:36:f7
47
+ 44:cc:48:b4:f7:b8:16:b3:23:37:8d:b8:22:3f:8a:86
48
+ db:71:b3:85:2d:6d:42:44:b7:dc:c1:36:e0:c4:0f:fe
49
+ cb:76:84:81:e2:83:f5:82:76:a9:7b:35:d5:44:00:d1
50
+ 1a:fc:ef:b9:a4:2b:62:aa:f8:56:eb:60:e5:16:33:f1
51
+ 28:e1:da:91:50:e3:a4:c7:d6:30:21:cf:04:07:cd:8c
52
+ b6:9e:b0:a7:6c:96:57:2e:09:5b:39:26:d0:60:be:e3
53
+ 90:59:a3:8e:e7:6e:3f:62:7e:b4:2a:e1:8f:00:37:7a
54
+ 83:9e:7a:9c:d2:ae:ba:50:84:73:65:3a:64:95:d8:48
55
+ f9:fd:0e:c3:5b:6e:08:3b:c5:c9:1c:29:55:bb:67:e8
56
+ fa:50:40:30:2a:d1:b7:cf:54:a8:f0:f0:76:89:ad:19
57
+ e7:a0:3a:56:6c:75:c5:bc:d8:46:ce:1e:66:f2:61:96
58
+ 11:e4:57:cc:52:ff:e4:ed:6b:2c:ce:78:15:ba:b7:ed
59
+ 31:f2:68:88:79:bf:7c:29:3c:2f:66:71:0b:09:b7:41
60
+
61
+
62
+ prime1:
63
+ 00:fd:c2:37:b9:6f:77:88:51:a2:f7:4f:c2:3c:a4:57
64
+ bf:ba:71:14:f3:61:f4:39:78:22:3d:bc:d8:d2:4e:c0
65
+ 4b:9e:c2:6d:38:a8:21:e2:70:1a:96:48:95:18:85:01
66
+ 46:fb:62:a4:81:09:f8:2a:3a:87:78:07:5d:93:54:ce
67
+ 2a:51:b3:51:6f:61:0a:2e:9d:b0:51:37:e3:13:bd:81
68
+ 23:2b:61:53:fa:ac:08:dc:a0:e6:63:a3:b0:cc:cf:73
69
+ 1d:65:b7:11:bc:29:70:fb:72:ea:63:9d:67:02:d6:35
70
+ 24:13:1d:bc:72:fb:9e:3d:ab:0b:57:6e:bd:a1:51:56
71
+ f9:bc:96:15:74:a3:31:16:c6:b8:98:1b:0a:a2:59:7c
72
+ c8:b7:14:b8:5b:f3:2e:26:b4:f0:46:c4:3d:27:dd:41
73
+ 31:52:a7:15:a8:af:6a:98:a5:9c:20:17:f9:1d:54:54
74
+ ff:10:91:a3:a5:ca:ac:63:e7:16:2b:71:3c:3a:cd:4f
75
+ ed:
76
+
77
+ prime2:
78
+ 00:c8:3c:a8:9f:8a:db:42:b5:8d:cf:2a:a1:2f:e5:73
79
+ 05:de:30:d8:17:b9:5c:9d:08:60:02:c9:66:9d:88:50
80
+ ac:cd:0f:b5:47:b4:a8:73:3b:7d:65:79:bf:4c:6f:d0
81
+ e2:03:ed:d4:28:4e:00:07:23:00:01:4f:05:de:9b:44
82
+ 1a:84:ae:09:4a:d6:ed:61:5d:77:e2:fa:13:99:4c:b7
83
+ 76:72:3d:f8:53:93:69:78:e8:bd:26:cb:b0:f9:01:f4
84
+ 1d:20:4f:60:f5:ab:3c:19:85:73:34:f3:ec:d2:67:ef
85
+ 56:b8:5d:93:73:8e:d9:3e:28:ff:87:f5:4a:26:fa:b1
86
+ ae:c6:d3:9d:03:e3:fd:c2:24:48:af:85:2a:8e:3b:5b
87
+ 93:07:38:91:21:ae:49:cb:6d:e3:30:81:15:ed:65:eb
88
+ dc:01:df:3b:9d:43:fd:a6:e1:df:ef:ad:22:42:34:f1
89
+ 3f:81:5e:57:0a:e0:56:94:f2:2a:00:d0:cc:c5:50:67
90
+ f1:
91
+
92
+ coefficient:
93
+ 00:bd:23:8c:2e:a7:7b:6b:1e:85:77:db:7d:77:f6:e5
94
+ b0:15:c6:e1:9e:35:57:72:df:35:6d:93:89:7f:83:9f
95
+ 63:7f:08:0a:b3:d4:ba:63:9b:10:7f:0f:d3:55:e9:38
96
+ cf:90:37:3d:85:3d:a7:97:8c:33:f2:c2:b1:38:2b:db
97
+ 39:ca:a8:d0:23:d7:89:cc:8d:02:7d:61:9b:b6:04:69
98
+ 14:e8:c9:84:34:36:6c:fb:84:58:cc:9a:53:74:a4:42
99
+ bd:1d:25:1b:ba:82:c0:fb:23:2c:90:bb:35:4b:5b:b0
100
+ 98:d0:ab:9d:61:6e:ea:e8:84:e7:a7:6c:ae:1b:2c:00
101
+ cb:0f:1a:f8:e2:7c:fd:42:1a:e2:13:52:c7:50:fa:65
102
+ c9:5f:ed:40:a8:7f:46:0e:ce:f6:56:83:6f:0e:8e:39
103
+ f8:33:5f:83:de:be:be:ef:8c:66:ad:16:c8:ec:98:d4
104
+ b2:b2:55:66:a2:9e:27:6a:84:f1:31:07:e8:bf:a7:a7
105
+ bd:
106
+
107
+ exp1:
108
+ 00:b6:50:0c:53:19:07:8b:14:03:fe:a4:fa:0b:31:93
109
+ ad:b7:18:b9:91:a6:c5:9d:68:77:49:5d:dd:75:33:89
110
+ 2a:8b:54:6a:be:32:e5:ad:57:17:72:f3:90:d2:fd:f4
111
+ 0d:f8:5c:45:8e:44:08:5c:e6:92:1f:a5:43:10:af:f4
112
+ 33:29:61:a8:d7:59:a3:c4:1c:1c:ea:2d:39:e3:1b:da
113
+ a4:d6:ec:e5:36:0a:d5:8f:15:b6:90:cd:b1:1f:64:c7
114
+ f2:cd:fa:3a:2e:b2:a3:6e:b4:80:3b:b3:81:a7:e3:18
115
+ 68:e3:a7:10:96:97:ba:77:d9:e4:9b:1b:7f:f8:5f:85
116
+ 1a:85:e8:5a:5f:e3:43:48:76:db:76:c4:ae:de:37:66
117
+ d4:99:dc:b4:1b:b3:da:6b:8a:c1:ba:46:11:1e:0b:f3
118
+ 63:a9:5b:4b:cf:56:c0:42:0d:71:df:08:fa:3c:9d:33
119
+ 37:d1:c2:a1:0d:63:50:79:b2:34:16:60:13:82:b7:b1
120
+ 7d:
121
+
122
+ exp2:
123
+ 00:98:38:2c:c4:24:4e:2c:b7:52:17:a4:43:a6:e2:99
124
+ ff:62:fa:e4:bb:9c:49:40:83:66:61:97:f3:af:5c:3a
125
+ 60:32:ff:77:03:0c:de:65:c3:5a:bf:72:bf:2f:7f:6d
126
+ 5e:f4:37:af:69:f8:69:e3:03:03:74:fb:3a:ee:10:40
127
+ c4:9c:0a:a5:bb:c4:09:ef:53:9b:d8:eb:dd:4c:53:da
128
+ c0:6b:76:9a:ba:06:3d:4f:12:37:01:30:25:d8:16:59
129
+ 1a:6f:3e:88:ea:19:83:75:af:52:76:75:dc:99:d3:33
130
+ 4a:4c:9b:ae:85:51:99:ea:bc:46:0d:78:36:27:cd:ba
131
+ 97:b0:44:9c:7f:a1:a9:7e:16:11:3f:85:4f:65:92:d0
132
+ 39:c4:6a:87:42:00:79:ce:f1:39:9d:dc:f3:eb:65:e8
133
+ d8:76:7f:da:94:e2:64:08:a2:7b:97:7b:99:a8:95:10
134
+ b5:03:46:d1:8a:ce:22:63:d6:78:81:e8:39:52:e2:9e
135
+ 31:
136
+
137
+
138
+ Public Key ID: 53:BD:74:A4:81:ED:37:A2:A2:EE:ED:45:23:14:8F:A8:2D:8C:27:BA
139
+ Public key's random art:
140
+ +--[ RSA 3072]----+
141
+ | . o. . |
142
+ | . +...+ |
143
+ | . o o.+ . |
144
+ | o o . . .ooo |
145
+ | o = . S o..o . |
146
+ | . o . .+.. |
147
+ |. . .. |
148
+ | . .. . |
149
+ |E oo.o |
150
+ +-----------------+
151
+
152
+ -----BEGIN RSA PRIVATE KEY-----
153
+ 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
190
+ -----END RSA PRIVATE KEY-----
@@ -2,19 +2,23 @@ require_relative '../test_helper'
2
2
 
3
3
  class TestBindIntegration < LDAPIntegrationTestCase
4
4
  def test_bind_success
5
- assert @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1"), @ldap.get_operation_result.inspect
5
+ assert @ldap.bind(BIND_CREDS),
6
+ @ldap.get_operation_result.inspect
6
7
  end
7
8
 
8
9
  def test_bind_timeout
9
10
  @ldap.port = 8389
10
11
  error = assert_raise Net::LDAP::Error do
11
- @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1")
12
+ @ldap.bind BIND_CREDS
12
13
  end
13
- assert_equal('Connection timed out - user specified timeout', error.message)
14
+ msgs = ['Operation timed out - user specified timeout',
15
+ 'Connection timed out - user specified timeout']
16
+ assert_send([msgs, :include?, error.message])
14
17
  end
15
18
 
16
19
  def test_bind_anonymous_fail
17
- refute @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: ""), @ldap.get_operation_result.inspect
20
+ refute @ldap.bind(BIND_CREDS.merge(password: '')),
21
+ @ldap.get_operation_result.inspect
18
22
 
19
23
  result = @ldap.get_operation_result
20
24
  assert_equal Net::LDAP::ResultCodeUnwillingToPerform, result.code
@@ -25,18 +29,216 @@ class TestBindIntegration < LDAPIntegrationTestCase
25
29
  end
26
30
 
27
31
  def test_bind_fail
28
- refute @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "not my password"), @ldap.get_operation_result.inspect
32
+ refute @ldap.bind(BIND_CREDS.merge(password: "not my password")),
33
+ @ldap.get_operation_result.inspect
29
34
  end
30
35
 
31
36
  def test_bind_tls_with_cafile
32
- tls_options = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.merge(:ca_file => CA_FILE)
33
- @ldap.encryption(method: :start_tls, tls_options: tls_options)
34
- assert @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1"), @ldap.get_operation_result.inspect
37
+ @ldap.encryption(
38
+ method: :start_tls,
39
+ tls_options: TLS_OPTS.merge(ca_file: CA_FILE),
40
+ )
41
+ assert @ldap.bind(BIND_CREDS),
42
+ @ldap.get_operation_result.inspect
35
43
  end
36
44
 
37
- def test_bind_tls_with_verify_none
38
- tls_options = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.merge(:verify_mode => OpenSSL::SSL::VERIFY_NONE)
39
- @ldap.encryption(method: :start_tls, tls_options: tls_options)
40
- assert @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1"), @ldap.get_operation_result.inspect
45
+ def test_bind_tls_with_bad_hostname_verify_none_no_ca_passes
46
+ @ldap.host = '127.0.0.1'
47
+ @ldap.encryption(
48
+ method: :start_tls,
49
+ tls_options: { verify_mode: OpenSSL::SSL::VERIFY_NONE },
50
+ )
51
+ assert @ldap.bind(BIND_CREDS),
52
+ @ldap.get_operation_result.inspect
53
+ end
54
+
55
+ def test_bind_tls_with_bad_hostname_verify_none_no_ca_opt_merge_passes
56
+ @ldap.host = '127.0.0.1'
57
+ @ldap.encryption(
58
+ method: :start_tls,
59
+ tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_NONE),
60
+ )
61
+ assert @ldap.bind(BIND_CREDS),
62
+ @ldap.get_operation_result.inspect
63
+ end
64
+
65
+ def test_bind_tls_with_bad_hostname_verify_peer_ca_fails
66
+ @ldap.host = '127.0.0.1'
67
+ @ldap.encryption(
68
+ method: :start_tls,
69
+ tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER,
70
+ ca_file: CA_FILE },
71
+ )
72
+ error = assert_raise Net::LDAP::Error,
73
+ Net::LDAP::ConnectionRefusedError do
74
+ @ldap.bind BIND_CREDS
75
+ end
76
+ assert_equal(
77
+ "hostname \"#{@ldap.host}\" does not match the server certificate",
78
+ error.message,
79
+ )
80
+ end
81
+
82
+ def test_bind_tls_with_bad_hostname_ca_default_opt_merge_fails
83
+ @ldap.host = '127.0.0.1'
84
+ @ldap.encryption(
85
+ method: :start_tls,
86
+ tls_options: TLS_OPTS.merge(ca_file: CA_FILE),
87
+ )
88
+ error = assert_raise Net::LDAP::Error,
89
+ Net::LDAP::ConnectionRefusedError do
90
+ @ldap.bind BIND_CREDS
91
+ end
92
+ assert_equal(
93
+ "hostname \"#{@ldap.host}\" does not match the server certificate",
94
+ error.message,
95
+ )
96
+ end
97
+
98
+ def test_bind_tls_with_bad_hostname_ca_no_opt_merge_fails
99
+ @ldap.host = '127.0.0.1'
100
+ @ldap.encryption(
101
+ method: :start_tls,
102
+ tls_options: { ca_file: CA_FILE },
103
+ )
104
+ error = assert_raise Net::LDAP::Error,
105
+ Net::LDAP::ConnectionRefusedError do
106
+ @ldap.bind BIND_CREDS
107
+ end
108
+ assert_equal(
109
+ "hostname \"#{@ldap.host}\" does not match the server certificate",
110
+ error.message,
111
+ )
112
+ end
113
+
114
+ def test_bind_tls_with_valid_hostname_default_opts_passes
115
+ @ldap.host = 'localhost'
116
+ @ldap.encryption(
117
+ method: :start_tls,
118
+ tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_PEER,
119
+ ca_file: CA_FILE),
120
+ )
121
+ assert @ldap.bind(BIND_CREDS),
122
+ @ldap.get_operation_result.inspect
123
+ end
124
+
125
+ def test_bind_tls_with_valid_hostname_just_verify_peer_ca_passes
126
+ @ldap.host = 'localhost'
127
+ @ldap.encryption(
128
+ method: :start_tls,
129
+ tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER,
130
+ ca_file: CA_FILE },
131
+ )
132
+ assert @ldap.bind(BIND_CREDS),
133
+ @ldap.get_operation_result.inspect
134
+ end
135
+
136
+ def test_bind_tls_with_bogus_hostname_system_ca_fails
137
+ @ldap.host = '127.0.0.1'
138
+ @ldap.encryption(method: :start_tls, tls_options: {})
139
+ error = assert_raise Net::LDAP::Error,
140
+ Net::LDAP::ConnectionRefusedError do
141
+ @ldap.bind BIND_CREDS
142
+ end
143
+ assert_equal(
144
+ "hostname \"#{@ldap.host}\" does not match the server certificate",
145
+ error.message,
146
+ )
147
+ end
148
+
149
+ # The following depend on /etc/hosts hacking.
150
+ # We can do that on CI, but it's less than cool on people's dev boxes
151
+ def test_bind_tls_with_multiple_hosts
152
+ omit_unless ENV['TRAVIS'] == 'true'
153
+
154
+ @ldap.host = nil
155
+ @ldap.hosts = [['ldap01.example.com', 389], ['ldap02.example.com', 389]]
156
+ @ldap.encryption(
157
+ method: :start_tls,
158
+ tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_PEER,
159
+ ca_file: CA_FILE),
160
+ )
161
+ assert @ldap.bind(BIND_CREDS),
162
+ @ldap.get_operation_result.inspect
163
+ end
164
+
165
+ def test_bind_tls_with_multiple_bogus_hosts
166
+ omit_unless ENV['TRAVIS'] == 'true'
167
+
168
+ @ldap.host = nil
169
+ @ldap.hosts = [['127.0.0.1', 389], ['bogus.example.com', 389]]
170
+ @ldap.encryption(
171
+ method: :start_tls,
172
+ tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_PEER,
173
+ ca_file: CA_FILE),
174
+ )
175
+ error = assert_raise Net::LDAP::Error,
176
+ Net::LDAP::ConnectionError do
177
+ @ldap.bind BIND_CREDS
178
+ end
179
+ assert_equal("Unable to connect to any given server: ",
180
+ error.message.split("\n").shift)
181
+ end
182
+
183
+ def test_bind_tls_with_multiple_bogus_hosts_no_verification
184
+ omit_unless ENV['TRAVIS'] == 'true'
185
+
186
+ @ldap.host = nil
187
+ @ldap.hosts = [['127.0.0.1', 389], ['bogus.example.com', 389]]
188
+ @ldap.encryption(
189
+ method: :start_tls,
190
+ tls_options: TLS_OPTS.merge(verify_mode: OpenSSL::SSL::VERIFY_NONE),
191
+ )
192
+ assert @ldap.bind(BIND_CREDS),
193
+ @ldap.get_operation_result.inspect
194
+ end
195
+
196
+ def test_bind_tls_with_multiple_bogus_hosts_ca_check_only_fails
197
+ omit_unless ENV['TRAVIS'] == 'true'
198
+
199
+ @ldap.host = nil
200
+ @ldap.hosts = [['127.0.0.1', 389], ['bogus.example.com', 389]]
201
+ @ldap.encryption(
202
+ method: :start_tls,
203
+ tls_options: { ca_file: CA_FILE },
204
+ )
205
+ error = assert_raise Net::LDAP::Error,
206
+ Net::LDAP::ConnectionError do
207
+ @ldap.bind BIND_CREDS
208
+ end
209
+ assert_equal("Unable to connect to any given server: ",
210
+ error.message.split("\n").shift)
211
+ end
212
+
213
+ # This test is CI-only because we can't add the fixture CA
214
+ # to the system CA store on people's dev boxes.
215
+ def test_bind_tls_valid_hostname_system_ca_on_travis_passes
216
+ omit_unless ENV['TRAVIS'] == 'true'
217
+
218
+ @ldap.encryption(
219
+ method: :start_tls,
220
+ tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER },
221
+ )
222
+ assert @ldap.bind(BIND_CREDS),
223
+ @ldap.get_operation_result.inspect
224
+ end
225
+
226
+ # Inverse of the above! Don't run this on Travis, only on Vagrant.
227
+ # Since Vagrant's hypervisor *won't* have the CA in the system
228
+ # x509 store, we can assume validation will fail
229
+ def test_bind_tls_valid_hostname_system_on_vagrant_fails
230
+ omit_if ENV['TRAVIS'] == 'true'
231
+
232
+ @ldap.encryption(
233
+ method: :start_tls,
234
+ tls_options: { verify_mode: OpenSSL::SSL::VERIFY_PEER },
235
+ )
236
+ error = assert_raise Net::LDAP::Error do
237
+ @ldap.bind BIND_CREDS
238
+ end
239
+ assert_equal(
240
+ "SSL_connect returned=1 errno=0 state=error: certificate verify failed",
241
+ error.message,
242
+ )
41
243
  end
42
244
  end