@@ -113,7 +113,7 @@ def verify_errors
113113 WebMock . enable!
114114 end
115115
116- it "should provide a useful error message when one is available and certificate validation fails" , :unless => Puppet . features . microsoft_windows? do
116+ it "should provide a useful error message when one is available and certificate validation fails in ruby 2.4 and up" do
117117 connection = Puppet ::Network ::HTTP ::Connection . new (
118118 host , port ,
119119 :verify => ConstantErrorValidator . new ( :fails_with => 'certificate verify failed' ,
@@ -124,13 +124,13 @@ def verify_errors
124124 end . to raise_error ( Puppet ::Error , /certificate verify failed: \[ shady looking signature\] / )
125125 end
126126
127- it "should provide a helpful error message when hostname was not match with server certificate" , :unless => Puppet . features . microsoft_windows? do
127+ it "should provide a helpful error message when hostname does not match server certificate before ruby 2.4" do
128128 Puppet [ :confdir ] = tmpdir ( 'conf' )
129129
130130 connection = Puppet ::Network ::HTTP ::Connection . new (
131131 host , port ,
132132 :verify => ConstantErrorValidator . new (
133- :fails_with => ' hostname was not match with server certificate' ,
133+ :fails_with => " hostname 'myserver' does not match the server certificate" ,
134134 :peer_certs => [ Puppet ::SSL ::CertificateAuthority . new . generate (
135135 'not_my_server' , :dns_alt_names => 'foo,bar,baz' ) ] ) )
136136
@@ -142,6 +142,24 @@ def verify_errors
142142 end
143143 end
144144
145+ it "should provide a helpful error message when hostname does not match server certificate in ruby 2.4 or greater" do
146+ Puppet [ :confdir ] = tmpdir ( 'conf' )
147+
148+ connection = Puppet ::Network ::HTTP ::Connection . new (
149+ host , port ,
150+ :verify => ConstantErrorValidator . new (
151+ :fails_with => "certificate verify failed" ,
152+ :peer_certs => [ Puppet ::SSL ::CertificateAuthority . new . generate (
153+ 'not_my_server' , :dns_alt_names => 'foo,bar,baz' ) ] ) )
154+
155+ expect do
156+ connection . get ( 'request' )
157+ end . to raise_error ( Puppet ::Error ) do |error |
158+ error . message =~ /\A Server hostname 'my_server' did not match server certificate; expected one of (.+)/
159+ expect ( $1. split ( ', ' ) ) . to match_array ( %w[ DNS:foo DNS:bar DNS:baz DNS:not_my_server not_my_server ] )
160+ end
161+ end
162+
145163 it "should pass along the error message otherwise" do
146164 connection = Puppet ::Network ::HTTP ::Connection . new (
147165 host , port ,
@@ -152,7 +170,7 @@ def verify_errors
152170 end . to raise_error ( /some other message/ )
153171 end
154172
155- it "should check all peer certificates for upcoming expiration" , :unless => Puppet . features . microsoft_windows? do
173+ it "should check all peer certificates for upcoming expiration" do
156174 Puppet [ :confdir ] = tmpdir ( 'conf' )
157175 cert = Puppet ::SSL ::CertificateAuthority . new . generate (
158176 'server' , :dns_alt_names => 'foo,bar,baz' )
0 commit comments