11from collections import namedtuple
2- from copy import deepcopy
3- from unittest .mock import MagicMock , patch
2+ from unittest .mock import patch
43
54import pytest
65from 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-
7052headers = {"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
12177class 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