55	"crypto/tls" 
66	"crypto/x509" 
77	"errors" 
8+ 	"fmt" 
89	"net" 
910	"net/http/httptest" 
1011
@@ -136,6 +137,22 @@ var _ = Describe("HandleError", func() {
136137			})
137138		})
138139
140+ 		Context ("HostnameMismatch wrapped in IncompleteRequestError" , func () {
141+ 			BeforeEach (func () {
142+ 				wrappedErr  :=  x509.HostnameError {Host : "the wrong one" }
143+ 				err  =  fmt .Errorf ("%w (%w)" , fails .IncompleteRequestError , wrappedErr )
144+ 				errorHandler .HandleError (responseWriter , err )
145+ 			})
146+ 
147+ 			It ("has a 503 Status Code" , func () {
148+ 				Expect (responseWriter .Status ()).To (Equal (503 ))
149+ 			})
150+ 
151+ 			It ("emits a backend_invalid_id metric" , func () {
152+ 				Expect (metricReporter .CaptureBackendInvalidIDCallCount ()).To (Equal (1 ))
153+ 			})
154+ 		})
155+ 
139156		Context ("Untrusted Cert" , func () {
140157			BeforeEach (func () {
141158				err  =  x509.UnknownAuthorityError {}
@@ -151,6 +168,22 @@ var _ = Describe("HandleError", func() {
151168			})
152169		})
153170
171+ 		Context ("Untrusted Cert wrapped in IncompleteRequestError" , func () {
172+ 			BeforeEach (func () {
173+ 				wrappedErr  :=  x509.UnknownAuthorityError {}
174+ 				err  =  fmt .Errorf ("%w (%w)" , fails .IncompleteRequestError , wrappedErr )
175+ 				errorHandler .HandleError (responseWriter , err )
176+ 			})
177+ 
178+ 			It ("has a 526 Status Code" , func () {
179+ 				Expect (responseWriter .Status ()).To (Equal (526 ))
180+ 			})
181+ 
182+ 			It ("emits a backend_invalid_tls_cert metric" , func () {
183+ 				Expect (metricReporter .CaptureBackendInvalidTLSCertCallCount ()).To (Equal (1 ))
184+ 			})
185+ 		})
186+ 
154187		Context ("Attempted TLS with non-TLS backend error" , func () {
155188			BeforeEach (func () {
156189				err  =  tls.RecordHeaderError {Msg : "bad handshake" }
@@ -166,6 +199,22 @@ var _ = Describe("HandleError", func() {
166199			})
167200		})
168201
202+ 		Context ("Attempted TLS with non-TLS backend error wrapped in IncompleteRequestError" , func () {
203+ 			BeforeEach (func () {
204+ 				wrappedErr  :=  tls.RecordHeaderError {Msg : "bad handshake" }
205+ 				err  =  fmt .Errorf ("%w (%w)" , fails .IncompleteRequestError , wrappedErr )
206+ 				errorHandler .HandleError (responseWriter , err )
207+ 			})
208+ 
209+ 			It ("has a 525 Status Code" , func () {
210+ 				Expect (responseWriter .Status ()).To (Equal (525 ))
211+ 			})
212+ 
213+ 			It ("emits a backend_tls_handshake_failed metric" , func () {
214+ 				Expect (metricReporter .CaptureBackendTLSHandshakeFailedCallCount ()).To (Equal (1 ))
215+ 			})
216+ 		})
217+ 
169218		Context ("Remote handshake failure" , func () {
170219			BeforeEach (func () {
171220				err  =  & net.OpError {Op : "remote error" , Err : errors .New ("tls: handshake failure" )}
@@ -181,6 +230,22 @@ var _ = Describe("HandleError", func() {
181230			})
182231		})
183232
233+ 		Context ("Remote handshake failure wrapped in IncompleteRequestError" , func () {
234+ 			BeforeEach (func () {
235+ 				wrappedErr  :=  & net.OpError {Op : "remote error" , Err : errors .New ("tls: handshake failure" )}
236+ 				err  =  fmt .Errorf ("%w (%w)" , fails .IncompleteRequestError , wrappedErr )
237+ 				errorHandler .HandleError (responseWriter , err )
238+ 			})
239+ 
240+ 			It ("has a 525 Status Code" , func () {
241+ 				Expect (responseWriter .Status ()).To (Equal (525 ))
242+ 			})
243+ 
244+ 			It ("emits a backend_tls_handshake_failed metric" , func () {
245+ 				Expect (metricReporter .CaptureBackendTLSHandshakeFailedCallCount ()).To (Equal (1 ))
246+ 			})
247+ 		})
248+ 
184249		Context ("Context Cancelled Error" , func () {
185250			BeforeEach (func () {
186251				err  =  context .Canceled 
0 commit comments