@@ -193,6 +193,34 @@ def test_mds_mtls_adapter_send_fallback_default_mode(
193193 assert fallback_request .url == "http://example.com/"
194194
195195
196+ @mock .patch ("google.auth.compute_engine._mtls.HTTPAdapter" )
197+ @mock .patch ("google.auth.compute_engine._mtls._parse_mds_mode" )
198+ @mock .patch ("ssl.create_default_context" )
199+ def test_mds_mtls_adapter_send_fallback_http_error (
200+ mock_ssl_context , mock_parse_mds_mode , mock_http_adapter_class , mock_mds_mtls_config
201+ ):
202+ mock_parse_mds_mode .return_value = _mtls .MdsMtlsMode .DEFAULT
203+ adapter = _mtls .MdsMtlsAdapter (mock_mds_mtls_config )
204+
205+ mock_fallback_send = mock .Mock ()
206+ mock_http_adapter_class .return_value .send = mock_fallback_send
207+
208+ # Simulate HTTPError on the super().send() call
209+ mock_mtls_response = requests .Response ()
210+ mock_mtls_response .status_code = 404
211+ with mock .patch (
212+ "requests.adapters.HTTPAdapter.send" , return_value = mock_mtls_response
213+ ):
214+ request = requests .Request (method = "GET" , url = "https://example.com" ).prepare ()
215+ adapter .send (request )
216+
217+ # Check that fallback to HTTPAdapter.send occurred
218+ mock_http_adapter_class .assert_called_once ()
219+ mock_fallback_send .assert_called_once ()
220+ fallback_request = mock_fallback_send .call_args [0 ][0 ]
221+ assert fallback_request .url == "http://example.com/"
222+
223+
196224@mock .patch ("google.auth.compute_engine._mtls._parse_mds_mode" )
197225@mock .patch ("ssl.create_default_context" )
198226def test_mds_mtls_adapter_send_no_fallback_strict_mode (
0 commit comments