from zerver.lib.test_classes import WebhookTestCase class SentryHookTests(WebhookTestCase): def test_event_for_exception_golang(self) -> None: expected_topic_name = '*url.Error: Get "bad_url": unsupported protocol scheme ""' expected_message = """\ :orange_circle: **New exception:** [*url.Error: Get "bad_url": unsupported protocol scheme ""](https://sentry.io/organizations/hypro999-personal-organization/issues/1637164584/events/80777a9cc30e4d0eb8904333d5c298b0/) ```quote **level:** error **timestamp:** **filename:** trigger-exception.go ``` Traceback: ```go // Set the timeout to the maximum duration the program can afford to wait. defer sentry.Flush(2 * time.Second) resp, err := http.Get(os.Args[1]) if err != nil { ---> sentry.CaptureException(err) log.Printf("reported to Sentry: %s", err) return } defer resp.Body.Close() ```""" self.check_webhook("event_for_exception_golang", expected_topic_name, expected_message) def test_event_for_exception_node(self) -> None: expected_topic_name = "Error: Sample error from node." expected_message = """\ :orange_circle: **New exception:** [Error: Sample error from node.](https://sentry.io/organizations/hypro999-personal-organization/issues/1638852747/events/f9cb0f2afff74a5aa92e766fb7ac3fe3/) ```quote **level:** error **timestamp:** **filename:** /home/hemanth/Desktop/sentry/trigger-exception.js ``` Traceback: ```javascript dsn: 'https://redacted.ingest.sentry.io/5216640', }); Sentry.withScope(function(scope) { scope.addEventProcessor(function(event, hint) { return event; }); ---> Sentry.captureException(new Error('Sample error from node.')); }); ```""" self.check_webhook("event_for_exception_node", expected_topic_name, expected_message) def test_event_for_exception_python(self) -> None: expected_topic_name = "Exception: Custom exception!" expected_message = """\ :orange_circle: **New exception:** [Exception: Custom exception!](https://sentry.io/organizations/hypro999-personal-organization/issues/1635244907/events/599349254a1447a99774b5310711c1a8/) ```quote **level:** error **timestamp:** **filename:** trigger-exception.py ``` Traceback: ```python3 if __name__ == "__main__": sentry_sdk.init(dsn=SECRET_DSN) try: ---> raise Exception("Custom exception!") except Exception as e: sentry_sdk.capture_exception(e) ```""" self.check_webhook("event_for_exception_python", expected_topic_name, expected_message) def test_event_for_exception_rails(self) -> None: expected_topic_name = "ZeroDivisionError: divided by 0" expected_message = """\ :orange_circle: **New exception:** [ZeroDivisionError: divided by 0](https://sentry.io/organizations/nitk-46/issues/4213933362/events/49b528e13e45497ab9adc3173fd2ed34/) ```quote **level:** error **timestamp:** **filename:** app/controllers/articles_controller.rb ``` Traceback: ```ruby class ArticlesController < ApplicationController def index begin ---> 132312 / 0 rescue ZeroDivisionError => exception Sentry.capture_exception(exception) end ```""" self.check_webhook("event_for_exception_rails", expected_topic_name, expected_message) def test_event_for_exception_vue(self) -> None: expected_topic_name = "TypeError: Cannot read properties of null (reading 'inser..." expected_message = """\ :orange_circle: **New exception:** [TypeError: Cannot read properties of null (reading 'insertBefore')](https://sentry.io/organizations/nitk-46/issues/4214010673/events/292f78454e774e62999506f759ad791d/) ```quote **level:** error **timestamp:** **filename:** /node_modules/.vite/deps/chunk-G4DFXOZZ.js ```""" self.check_webhook("event_for_exception_vue", expected_topic_name, expected_message) def test_webhook_event_for_exception_python(self) -> None: expected_topic_name = "ValueError: new sentry error." expected_message = """\ :orange_circle: **New exception:** [ValueError: new sentry error.](https://sentry.io/organizations/bar-foundation/issues/1972208801/events/c916dccfd58e41dcabaebef0091f0736/) ```quote **level:** error **timestamp:** **filename:** trigger-exception.py ``` Traceback: ```python3 if __name__ == "__main__": sentry_sdk.init(dsn=DSN_SECRET) try: ---> raise ValueError("new sentry error.") except Exception as e: sentry_sdk.capture_exception(e) ```""" self.check_webhook( "webhook_event_for_exception_python", expected_topic_name, expected_message ) def test_webhook_event_for_exception_javascript(self) -> None: expected_topic_name = 'TypeError: can\'t access property "bar", x.foo is undefined' expected_message = """\ :orange_circle: **New exception:** [TypeError: can't access property "bar", x.foo is undefined](https://sentry.io/organizations/foo-bar-org/issues/1982047746/events/f3bf5fc4e354451db9e885a69b2a2b51/) ```quote **level:** error **timestamp:** **filename:** None ```""" self.check_webhook( "webhook_event_for_exception_javascript", expected_topic_name, expected_message ) def test_event_for_exception_js(self) -> None: expected_topic_name = "Error: Something external broke." expected_message = """\ :orange_circle: **New exception:** [Error: Something external broke.](https://sentry.io/organizations/hypro999-personal-organization/issues/1731239773/events/355c3b2a142046629dd410db2fdda003/) ```quote **level:** error **timestamp:** **filename:** /mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js ```""" self.check_webhook("event_for_exception_js", expected_topic_name, expected_message) def test_event_for_message_golang(self) -> None: expected_topic_name = "A test message event from golang." expected_message = """\ :blue_circle: **New message event:** [A test message event from golang.](https://sentry.io/organizations/hypro999-personal-organization/issues/1638844654/events/01ecb45633bc4f5ca940ada671124c8f/) ```quote **level:** info **timestamp:** ```""" self.check_webhook("event_for_message_golang", expected_topic_name, expected_message) def test_event_for_message_node(self) -> None: expected_topic_name = "Test event from node." expected_message = """\ :blue_circle: **New message event:** [Test event from node.](https://sentry.io/organizations/hypro999-personal-organization/issues/1638840427/events/6886bb1fe7ce4497b7836f6083d5fd34/) ```quote **level:** info **timestamp:** ```""" self.check_webhook("event_for_message_node", expected_topic_name, expected_message) def test_event_for_message_python(self) -> None: expected_topic_name = "A simple message-based issue." expected_message = """\ :blue_circle: **New message event:** [A simple message-based issue.](https://sentry.io/organizations/hypro999-personal-organization/issues/1635261062/events/8da63b42375e4d3b803c377fefb062f8/) ```quote **level:** info **timestamp:** ```""" self.check_webhook("event_for_message_python", expected_topic_name, expected_message) def test_error_for_exception_javascript(self) -> None: expected_topic_name = "ReferenceError: blooopy is not defined" expected_message = """\ :orange_circle: **New exception:** [ReferenceError: blooopy is not defined](https://sentry.io/organizations/test-org/issues/1170820242/events/bb78c1407cea4519aa397afc059c793d/) ```quote **level:** error **timestamp:** **filename:** /runner ``` Traceback: ```javascript ---> JS Bin Runner