Exemplo n.º 1
0
    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"
Exemplo n.º 2
0
    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={},
            )
Exemplo n.º 3
0
    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
Exemplo n.º 6
0
 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={},
         )
Exemplo n.º 7
0
 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,
         )
Exemplo n.º 9
0
    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"