Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed empty response case of raise_for_error #21

Merged
merged 1 commit into from Jun 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 1 addition & 5 deletions tap_google_search_console/client.py
Expand Up @@ -154,11 +154,7 @@ class GoogleQuotaExceededError(GoogleError):

def raise_for_error(response):
# Forming a response message for raising custom exception
content_length = len(response.content)
if content_length == 0:
# There is nothing we can do here since Google has neither sent
# us a 2xx response nor a response content.
return

try:
response_json = response.json()
except Exception:
Expand Down
20 changes: 16 additions & 4 deletions tests/unittests/test_exception_handling.py
Expand Up @@ -4,11 +4,11 @@
import requests

class Mockresponse:
def __init__(self, status_code, json, raise_error, text=None):
def __init__(self, status_code, json, raise_error, text=None, content=None):
self.status_code = status_code
self.raise_error = raise_error
self.text = json
self.content = "google search console"
self.content = content if content is not None else "google search console"

def raise_for_status(self):
if not self.raise_error:
Expand All @@ -19,13 +19,19 @@ def raise_for_status(self):
def json(self):
return self.text

def get_response(status_code, json={}, raise_error=False):
return Mockresponse(status_code, json, raise_error)
def get_response(status_code, json={}, raise_error=False, content=None):
return Mockresponse(status_code, json, raise_error, content=content)

@mock.patch("requests.Session.request")
@mock.patch("tap_google_search_console.client.GoogleClient.get_access_token")
class TestExceptionHandling(unittest.TestCase):

def test_error_with_empty_response(self, mocked_access_token, mocked_request):
mocked_request.return_value = get_response(400, raise_error = True, content='')
google_client = client.GoogleClient("", "", "", "")
with self.assertRaises(client.GoogleError):
google_client.request("")

def test_400_error(self, mocked_access_token, mocked_request):
mocked_request.return_value = get_response(400, raise_error = True)
google_client = client.GoogleClient("", "", "", "")
Expand Down Expand Up @@ -254,6 +260,12 @@ def test_200_success(self, mocked_access_token, mocked_request):
@mock.patch("requests.Session.post")
class TestAccessToken(unittest.TestCase):

def test_error_with_empty_response(self, mocked_request):
mocked_request.return_value = get_response(400, raise_error = True, content='')
google_client = client.GoogleClient("", "", "", "")
with self.assertRaises(client.GoogleError):
google_client.get_access_token()

def test_400_error(self, mocked_request):
mocked_request.return_value = get_response(400, raise_error = True)
google_client = client.GoogleClient("", "", "", "")
Expand Down