Example #1
0
    def test_v0_payload(self):
        event = self.create_event(project=self.project)

        process_service_hook(self.hook.id, event)
        body = get_payload_v0(event)
        assert body["group"][
            "url"] == "http://testserver/organizations/{}/issues/{}/".format(
                self.organization.slug, event.group.id)
        assert body["event"][
            "url"] == "http://testserver/organizations/{}/issues/{}/events/{}/".format(
                self.organization.slug, event.group.id, event.event_id)
Example #2
0
    def test_v0_payload(self):
        event = self.store_event(
            data={"timestamp": iso_format(before_now(minutes=1))},
            project_id=self.project.id)

        process_service_hook(self.hook.id, event)
        body = get_payload_v0(event)
        assert body["group"][
            "url"] == "http://testserver/organizations/{}/issues/{}/".format(
                self.organization.slug, event.group.id)
        assert body["event"][
            "url"] == "http://testserver/organizations/{}/issues/{}/events/{}/".format(
                self.organization.slug, event.group.id, event.event_id)
Example #3
0
    def test_v0_payload(self):
        event = self.create_event(project=self.project)

        process_service_hook(self.hook.id, event)
        body = get_payload_v0(event)
        assert body['group']['url'] == 'http://testserver/organizations/{}/issues/{}/'.format(
            self.organization.slug,
            event.group.id,
        )
        assert body['event']['url'] == 'http://testserver/organizations/{}/issues/{}/events/{}/'.format(
            self.organization.slug,
            event.group.id,
            event.event_id,
        )
Example #4
0
    def test_verify_sentry_hook_signature(self, safe_urlopen):
        import hmac
        from hashlib import sha256

        event = self.create_event(project=self.project)
        process_service_hook(self.hook.id, event)

        body = json.dumps(get_payload_v0(event))

        expected = hmac.new(key=self.hook.secret.encode("utf-8"),
                            msg=body.encode("utf-8"),
                            digestmod=sha256).hexdigest()

        assert expected == faux(
            safe_urlopen).kwargs["headers"]["X-ServiceHook-Signature"]
Example #5
0
    def test_verify_sentry_hook_signature(self, safe_urlopen):
        import hmac
        from hashlib import sha256

        event = self.create_event(project=self.project)
        process_service_hook(self.hook.id, event)

        body = json.dumps(get_payload_v0(event))

        expected = hmac.new(
            key=self.hook.secret.encode('utf-8'),
            msg=body.encode('utf-8'),
            digestmod=sha256,
        ).hexdigest()

        assert expected == faux(safe_urlopen).kwargs['headers']['X-ServiceHook-Signature']
Example #6
0
    def test_event_created_sends_service_hook(self, safe_urlopen):
        self.hook.update(events=['event.created', 'event.alert'])

        event = self.create_event(project=self.project)

        process_service_hook(self.hook.id, event)

        data = json.loads(faux(safe_urlopen).kwargs['data'])

        assert faux(safe_urlopen).kwarg_equals('url', self.hook.url)
        assert data == json.loads(json.dumps(get_payload_v0(event)))
        assert faux(safe_urlopen).kwarg_equals('headers', DictContaining(
            'Content-Type',
            'X-ServiceHook-Timestamp',
            'X-ServiceHook-GUID',
            'X-ServiceHook-Signature',
        ))
Example #7
0
    def test_v0_payload(self):
        responses.add(responses.POST, "https://example.com/sentry/webhook")

        event = self.store_event(
            data={"timestamp": iso_format(before_now(minutes=1))},
            project_id=self.project.id)

        process_service_hook(self.hook.id, event)
        body = get_payload_v0(event)
        assert (
            body["group"]["url"] ==
            f"http://testserver/organizations/{self.organization.slug}/issues/{event.group.id}/"
        )
        assert (
            body["event"]["url"] ==
            f"http://testserver/organizations/{self.organization.slug}/issues/{event.group.id}/events/{event.event_id}/"
        )
Example #8
0
    def test_event_created_sends_service_hook(self, safe_urlopen):
        self.hook.update(events=['event.created', 'event.alert'])

        event = self.create_event(project=self.project)

        process_service_hook(self.hook.id, event)

        data = json.loads(faux(safe_urlopen).kwargs['data'])

        assert faux(safe_urlopen).kwarg_equals('url', self.hook.url)
        assert data == json.loads(json.dumps(get_payload_v0(event)))
        assert faux(safe_urlopen).kwarg_equals('headers', DictContaining(
            'Content-Type',
            'X-ServiceHook-Timestamp',
            'X-ServiceHook-GUID',
            'X-ServiceHook-Signature',
        ))
Example #9
0
    def test_verify_sentry_hook_signature(self, safe_urlopen):
        import hmac
        from hashlib import sha256

        event = self.store_event(
            data={"timestamp": iso_format(before_now(minutes=1))},
            project_id=self.project.id)

        process_service_hook(self.hook.id, event)

        body = json.dumps(get_payload_v0(event))

        expected = hmac.new(key=self.hook.secret.encode("utf-8"),
                            msg=body.encode("utf-8"),
                            digestmod=sha256).hexdigest()

        assert expected == faux(
            safe_urlopen).kwargs["headers"]["X-ServiceHook-Signature"]
Example #10
0
    def test_event_created_sends_service_hook(self, safe_urlopen):
        self.hook.update(events=["event.created", "event.alert"])

        event = self.create_event(project=self.project)

        process_service_hook(self.hook.id, event)

        data = json.loads(faux(safe_urlopen).kwargs["data"])

        assert faux(safe_urlopen).kwarg_equals("url", self.hook.url)
        assert data == json.loads(json.dumps(get_payload_v0(event)))
        assert faux(safe_urlopen).kwarg_equals(
            "headers",
            DictContaining(
                "Content-Type",
                "X-ServiceHook-Timestamp",
                "X-ServiceHook-GUID",
                "X-ServiceHook-Signature",
            ),
        )