diff --git a/requests_kerberos/kerberos_.py b/requests_kerberos/kerberos_.py index 2f27b22..eaf289a 100644 --- a/requests_kerberos/kerberos_.py +++ b/requests_kerberos/kerberos_.py @@ -251,7 +251,7 @@ def handle_response(self, response, **kwargs): if response.status_code == 401: _r = self.handle_401(response, **kwargs) log.debug("handle_response(): returning {0}".format(_r)) - return _r + return self.handle_response(_r, **kwargs) else: _r = self.handle_other(response) log.debug("handle_response(): returning {0}".format(_r)) diff --git a/test_requests_kerberos.py b/test_requests_kerberos.py index a7eae1c..a1a65bf 100644 --- a/test_requests_kerberos.py +++ b/test_requests_kerberos.py @@ -402,10 +402,14 @@ def test_handle_response_401(self): response.connection = connection response._content = "" response.raw = raw + auth = requests_kerberos.HTTPKerberosAuth() + auth.handle_other = Mock(return_value=response_ok) + r = auth.handle_response(response) self.assertTrue(response in r.history) + auth.handle_other.assert_called_with(response_ok) self.assertEqual(r, response_ok) self.assertEqual(request.headers['Authorization'], 'Negotiate GSSRESPONSE') connection.send.assert_called_with(request)