Skip to content

Commit d9d2c0c

Browse files
authored
ref(sentry app): Rewrite Sentry App Tests (#35664)
1 parent ccc86db commit d9d2c0c

File tree

1 file changed

+18
-63
lines changed

1 file changed

+18
-63
lines changed

tests/sentry/tasks/test_sentry_apps.py

Lines changed: 18 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from collections import namedtuple
2-
from copy import deepcopy
3-
from unittest.mock import MagicMock, patch
2+
from unittest.mock import patch
43

54
import pytest
65
from celery import Task
@@ -50,72 +49,29 @@ def __init__(self):
5049
self.body = "blah blah"
5150

5251

53-
class ResponseMock:
54-
def __init__(self, headers, content, text, ok, status_code, request):
55-
self.headers = headers
56-
self.content = content
57-
self.text = text
58-
self.ok = ok
59-
self.status_code = status_code
60-
self.request = request
61-
62-
def get(self, request=None, content=None):
63-
if request:
64-
return self.request
65-
if content:
66-
return self.content
67-
return None
68-
69-
7052
headers = {"Sentry-Hook-Error": "d5111da2c28645c5889d072017e3445d", "Sentry-Hook-Project": "1"}
53+
html_content = "a bunch of garbage HTML"
54+
json_content = '{"error": "bad request"}'
7155

72-
mock_fail_resp = ResponseMock(
73-
headers=headers,
74-
content={},
75-
text="",
76-
ok=False,
77-
status_code=400,
78-
request=RequestMock(),
79-
)
80-
81-
mock_fail_html_resp = deepcopy(mock_fail_resp)
82-
mock_fail_html_resp.content = "a bunch of garbage HTML"
83-
84-
MockFailureHTMLContentResponseInstance = MagicMock(
85-
status_code=mock_fail_html_resp.status_code,
86-
headers=mock_fail_html_resp.headers,
87-
content=mock_fail_html_resp.content,
88-
request=mock_fail_html_resp.request,
56+
MockResponse = namedtuple(
57+
"MockResponse",
58+
["headers", "content", "text", "ok", "status_code", "raise_for_status", "request"],
8959
)
90-
MockFailureHTMLContentResponseInstance.__iter__.return_value = []
9160

92-
mock_fail_json_resp = deepcopy(mock_fail_resp)
93-
mock_fail_json_resp.content = '{"error": "bad request"}'
94-
95-
MockFailureJSONContentResponseInstance = MagicMock(
96-
status_code=mock_fail_json_resp.status_code,
97-
headers=mock_fail_html_resp.headers,
98-
content=mock_fail_json_resp.content,
99-
request=mock_fail_json_resp.request,
61+
MockFailureHTMLContentResponseInstance = MockResponse(
62+
headers, html_content, "", True, 400, raiseStatusFalse, RequestMock()
10063
)
101-
MockFailureJSONContentResponseInstance.__iter__.return_value = []
102-
103-
MockResponseWithHeadersInstance = MagicMock(
104-
status_code=mock_fail_resp.status_code, headers=mock_fail_resp.headers
64+
MockFailureJSONContentResponseInstance = MockResponse(
65+
headers, json_content, "", True, 400, raiseStatusFalse, RequestMock()
10566
)
106-
MockResponseWithHeadersInstance.__iter__.return_value = []
107-
108-
MockFailureResponseInstance = MagicMock(
109-
status_code=mock_fail_resp.status_code, headers=mock_fail_resp.headers
67+
MockFailureResponseInstance = MockResponse(
68+
headers, html_content, "", True, 400, raiseStatusFalse, RequestMock()
11069
)
111-
MockFailureResponseInstance.__iter__.return_value = []
112-
113-
114-
MockResponse = namedtuple(
115-
"MockResponse", ["headers", "content", "text", "ok", "status_code", "raise_for_status"]
70+
MockResponseWithHeadersInstance = MockResponse(
71+
headers, html_content, "", True, 400, raiseStatusFalse, RequestMock()
11672
)
117-
MockResponseInstance = MockResponse({}, {}, "", True, 200, raiseStatusFalse)
118-
MockResponse404 = MockResponse({}, {}, "", False, 404, raiseException)
73+
MockResponseInstance = MockResponse({}, {}, "", True, 200, raiseStatusFalse, None)
74+
MockResponse404 = MockResponse({}, {}, "", False, 404, raiseException, None)
11975

12076

12177
class TestSendAlertEvent(TestCase):
@@ -605,7 +561,6 @@ def test_saves_error_if_webhook_request_fails(self, safe_urlopen):
605561
send_webhooks(
606562
installation=self.install, event="issue.assigned", data=data, actor=self.user
607563
)
608-
609564
requests = self.buffer.get_requests()
610565
requests_count = len(requests)
611566
first_request = requests[0]
@@ -637,7 +592,7 @@ def test_saves_error_if_webhook_request_with_html_content_fails(self, safe_urlop
637592
assert first_request["response_code"] == 400
638593
assert first_request["event_type"] == "issue.assigned"
639594
assert first_request["organization_id"] == self.install.organization.id
640-
assert first_request["response_body"] == mock_fail_html_resp.content
595+
assert first_request["response_body"] == html_content
641596

642597
@patch(
643598
"sentry.utils.sentry_apps.webhooks.safe_urlopen",
@@ -660,7 +615,7 @@ def test_saves_error_if_webhook_request_with_json_content_fails(self, safe_urlop
660615
assert first_request["response_code"] == 400
661616
assert first_request["event_type"] == "issue.assigned"
662617
assert first_request["organization_id"] == self.install.organization.id
663-
assert json.loads(first_request["response_body"]) == mock_fail_json_resp.content
618+
assert json.loads(first_request["response_body"]) == json_content
664619

665620
@patch("sentry.utils.sentry_apps.webhooks.safe_urlopen", return_value=MockResponseInstance)
666621
def test_saves_request_if_webhook_request_succeeds(self, safe_urlopen):

0 commit comments

Comments
 (0)