diff --git a/lastpass/fetcher.py b/lastpass/fetcher.py index cfd6d04..e48a266 100644 --- a/lastpass/fetcher.py +++ b/lastpass/fetcher.py @@ -34,7 +34,7 @@ def logout(session, web_client=http): ) if response.status_code != requests.codes.ok: - raise NetworkError() + raise NetworkError("%s %s" % (response.status_code, response.reason)) def fetch(session, web_client=http): @@ -42,7 +42,7 @@ def fetch(session, web_client=http): cookies={'PHPSESSID': session.id}) if response.status_code != requests.codes.ok: - raise NetworkError() + raise NetworkError("%s %s" % (response.status_code, response.reason)) return blob.Blob(decode_blob(response.content), session.key_iteration_count) @@ -51,7 +51,7 @@ def request_iteration_count(username, web_client=http): response = web_client.post('https://lastpass.com/iterations.php', data={'email': username}) if response.status_code != requests.codes.ok: - raise NetworkError() + raise NetworkError("%s %s" % (response.status_code, response.reason)) try: count = int(response.content) @@ -83,7 +83,7 @@ def request_login(username, password, key_iteration_count, multifactor_password= data=body) if response.status_code != requests.codes.ok: - raise NetworkError() + raise NetworkError("%s %s" % (response.status_code, response.reason)) try: parsed_response = etree.fromstring(response.content) diff --git a/tests/test_fetcher.py b/tests/test_fetcher.py index 63ee05e..7801e9b 100644 --- a/tests/test_fetcher.py +++ b/tests/test_fetcher.py @@ -2,6 +2,8 @@ from base64 import b64decode import unittest import mock +from nose.tools import assert_raises + import lastpass from lastpass.blob import Blob from lastpass import fetcher @@ -167,7 +169,9 @@ def test_fetch_returns_a_blob(self): def test_fetch_raises_exception_on_http_error(self): m = mock.Mock() m.get.return_value = self._http_error() - self.assertRaises(lastpass.NetworkError, fetcher.fetch, self.session, m) + with assert_raises(lastpass.NetworkError) as e: + fetcher.fetch(self.session, m) + self.assertEqual(str(e.exception), "404 Not Found") def test_make_key_generates_correct_keys(self): keys = [ @@ -204,17 +208,18 @@ def _verify_request_login_post_request(self, multifactor_password, device_id, po m.post.assert_called_with('https://lastpass.com/login.php', data=post_data) @staticmethod - def _mock_response(code, body): + def _mock_response(code, body, reason=""): m = mock.Mock() m.status_code = code m.content = body + m.reason = reason return m def _http_ok(self, body): - return self._mock_response(200, body) + return self._mock_response(200, body, "OK") def _http_error(self, body=''): - return self._mock_response(404, body) + return self._mock_response(404, body, "Not Found") @staticmethod def _lastpass_error(cause, message):