diff --git a/packages/strapi-plugin-sentry/package.json b/packages/strapi-plugin-sentry/package.json index c36177f46a..93959ef864 100644 --- a/packages/strapi-plugin-sentry/package.json +++ b/packages/strapi-plugin-sentry/package.json @@ -26,5 +26,5 @@ "node": ">=10.16.0 <=14.x.x", "npm": ">=6.0.0" }, - "license": "MIT" + "license": "SEE LICENSE IN LICENSE" } diff --git a/packages/strapi-plugin-sentry/services/__tests__/sentry.test.js b/packages/strapi-plugin-sentry/services/__tests__/sentry.test.js new file mode 100644 index 0000000000..172a01a1b9 --- /dev/null +++ b/packages/strapi-plugin-sentry/services/__tests__/sentry.test.js @@ -0,0 +1,69 @@ +const Sentry = require('@sentry/node'); +const sentryService = require('../sentry'); +const defaultConfig = require('../../config/settings.json'); + +describe('Check if runs', () => { + beforeEach(() => { + global.strapi = { + plugins: { + sentry: { + config: defaultConfig, + }, + }, + log: { + warn: jest.fn(), + info: jest.fn(), + }, + }; + }); + + it('disables Sentry when no DSN is provided', () => { + sentryService.init(); + expect(strapi.log.info).toHaveBeenCalledWith(expect.stringMatching(/disabled/i)); + + const instance = sentryService.getInstance(); + expect(instance).toBeNull(); + }); + + it('disables Sentry when an invalid DSN is provided', () => { + global.strapi.plugins.sentry.config = { + dsn: 'an_invalid_dsn', + }; + sentryService.init(); + expect(strapi.log.warn).toHaveBeenCalledWith(expect.stringMatching(/could not set up sentry/i)); + + const instance = sentryService.getInstance(); + expect(instance).toBeNull(); + }); + + it("doesn't send events before init", () => { + sentryService.sendError(Error()); + expect(strapi.log.warn).toHaveBeenCalledWith(expect.stringMatching(/cannot send event/i)); + }); + + it('initializes and sends errors', () => { + global.strapi.plugins.sentry.config = { + dsn: 'a_valid_dsn', + }; + + // Mock Sentry.init only for this test + Sentry.init = jest.fn(); + sentryService.init(); + expect(Sentry.init).toHaveBeenCalled(); + + // Saves the instance correctly + const instance = sentryService.getInstance(); + expect(instance).not.toBeNull(); + + // Doesn't allow re-init + sentryService.init(); + expect(strapi.log.warn).toHaveBeenCalledWith(expect.stringMatching(/already/i)); + + const error = Error('an error'); + const configureScope = jest.fn(); + sentryService.sendError(error, configureScope); + expect(configureScope).toHaveBeenCalled(); + }); + + it(''); +}); diff --git a/packages/strapi-plugin-sentry/services/sentry.js b/packages/strapi-plugin-sentry/services/sentry.js index 52fb2a5d70..3a5b72cbca 100644 --- a/packages/strapi-plugin-sentry/services/sentry.js +++ b/packages/strapi-plugin-sentry/services/sentry.js @@ -78,8 +78,6 @@ const createSentryService = () => { // Actually send the Error to Sentry instance.captureException(error); }); - - strapi.log.info('An error was sent to Sentry'); }, }; };