def test_500_response(self): responses.add( method=responses.POST, url="https://example.com/link-issue", body="Something failed", status=500, ) with self.assertRaises(APIError): IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri="/link-issue", fields={}, user=self.user, action="create", ) buffer = SentryAppWebhookRequestsBuffer(self.sentry_app) requests = buffer.get_requests() assert len(requests) == 1 assert requests[0]["response_code"] == 500 assert requests[0]["event_type"] == "external_issue.created"
def test_500_response(self): responses.add( method=responses.POST, url='https://example.com/link-issue', body='Something failed', status=500, ) with self.assertRaises(APIError): IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri='/link-issue', fields={}, )
def test_500_response(self): responses.add( method=responses.POST, url='https://example.com/link-issue', body='Something failed', status=500, ) with self.assertRaises(APIError): IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri='/link-issue', fields={}, user=self.user, )
def test_makes_request(self): fields = { 'title': 'An Issue', 'description': 'a bug was found', 'assignee': 'user-1', } responses.add( method=responses.POST, url='https://example.com/link-issue', json={ 'project': 'ProjectName', 'webUrl': 'https://example.com/project/issue-id', 'identifier': 'issue-1', }, status=200, content_type='application/json', ) result = IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri='/link-issue', fields=fields, user=self.user, ) assert result == { 'project': 'ProjectName', 'webUrl': 'https://example.com/project/issue-id', 'identifier': 'issue-1', } request = responses.calls[0].request assert request.headers['Sentry-App-Signature'] data = { 'fields': { 'title': 'An Issue', 'description': 'a bug was found', 'assignee': 'user-1', }, 'issueId': self.group.id, 'installationId': self.install.uuid, 'webUrl': self.group.get_absolute_url(), 'project': { 'id': self.project.id, 'slug': self.project.slug, }, 'actor': { 'type': 'user', 'id': self.user.id, 'name': self.user.name, } } payload = json.loads(request.body) assert payload == data
def test_makes_request(self): fields = { "title": "An Issue", "description": "a bug was found", "assignee": "user-1" } responses.add( method=responses.POST, url="https://example.com/link-issue", json={ "project": "ProjectName", "webUrl": "https://example.com/project/issue-id", "identifier": "issue-1", }, status=200, content_type="application/json", ) result = IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri="/link-issue", fields=fields, user=self.user, ) assert result == { "project": "ProjectName", "webUrl": "https://example.com/project/issue-id", "identifier": "issue-1", } request = responses.calls[0].request assert request.headers["Sentry-App-Signature"] data = { "fields": { "title": "An Issue", "description": "a bug was found", "assignee": "user-1" }, "issueId": self.group.id, "installationId": self.install.uuid, "webUrl": self.group.get_absolute_url(), "project": { "id": self.project.id, "slug": self.project.slug }, "actor": { "type": "user", "id": self.user.id, "name": self.user.name }, } payload = json.loads(request.body) assert payload == data
def test_invalid_response_format(self): # missing 'identifier' invalid_format = { 'project': 'ProjectName', 'webUrl': 'https://example.com/project/issue-id' } responses.add( method=responses.POST, url='https://example.com/link-issue', json=invalid_format, status=200, content_type='application/json', ) with self.assertRaises(APIError): IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri='/link-issue', fields={}, )
def test_invalid_response_format(self): # missing 'identifier' invalid_format = { 'project': 'ProjectName', 'webUrl': 'https://example.com/project/issue-id' } responses.add( method=responses.POST, url='https://example.com/link-issue', json=invalid_format, status=200, content_type='application/json', ) with self.assertRaises(APIError): IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri='/link-issue', fields={}, user=self.user, )
def test_invalid_response_format(self): # missing 'identifier' invalid_format = { "project": "ProjectName", "webUrl": "https://example.com/project/issue-id", } responses.add( method=responses.POST, url="https://example.com/link-issue", json=invalid_format, status=200, content_type="application/json", ) with self.assertRaises(APIError): IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri="/link-issue", fields={}, user=self.user, )
def test_makes_request(self): fields = { "title": "An Issue", "description": "a bug was found", "assignee": "user-1" } responses.add( method=responses.POST, url="https://example.com/link-issue", json={ "project": "ProjectName", "webUrl": "https://example.com/project/issue-id", "identifier": "issue-1", }, status=200, content_type="application/json", ) result = IssueLinkRequester.run( install=self.install, project=self.project, group=self.group, uri="/link-issue", fields=fields, user=self.user, action="create", ) assert result == { "project": "ProjectName", "webUrl": "https://example.com/project/issue-id", "identifier": "issue-1", } request = responses.calls[0].request data = { "fields": { "title": "An Issue", "description": "a bug was found", "assignee": "user-1" }, "issueId": self.group.id, "installationId": self.install.uuid, "webUrl": self.group.get_absolute_url(), "project": { "id": self.project.id, "slug": self.project.slug }, "actor": { "type": "user", "id": self.user.id, "name": self.user.name }, } payload = json.loads(request.body) assert payload == data assert request.headers[ "Sentry-App-Signature"] == self.sentry_app.build_signature( json.dumps(payload)) buffer = SentryAppWebhookRequestsBuffer(self.sentry_app) requests = buffer.get_requests() assert len(requests) == 1 assert requests[0]["response_code"] == 200 assert requests[0]["event_type"] == "external_issue.created"