12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import * as Sentry from '@sentry/react';
- import handleXhrErrorResponse from 'sentry/utils/handleXhrErrorResponse';
- describe('handleXhrErrorResponse', function () {
- const stringError = {responseJSON: {detail: 'Error'}, status: 400};
- const objError = {
- status: 400,
- responseJSON: {detail: {code: 'api-err-code', message: 'Error message'}},
- };
- beforeEach(function () {
- jest.clearAllMocks();
- });
- it('does nothing if we have invalid response', function () {
- handleXhrErrorResponse('')(null);
- expect(Sentry.captureException).not.toHaveBeenCalled();
- handleXhrErrorResponse('')({});
- expect(Sentry.captureException).not.toHaveBeenCalled();
- });
- it('captures an exception to sdk when `resp.detail` is a string', function () {
- handleXhrErrorResponse('String error')(stringError);
- expect(Sentry.captureException).toHaveBeenCalledWith(new Error('String error'));
- });
- it('captures an exception to sdk when `resp.detail` is an object', function () {
- handleXhrErrorResponse('Object error')(objError);
- expect(Sentry.captureException).toHaveBeenCalledWith(new Error('Object error'));
- });
- it('ignores `sudo-required` errors', function () {
- handleXhrErrorResponse('Sudo required error')({
- status: 401,
- responseJSON: {
- detail: {
- code: 'sudo-required',
- detail: 'Sudo required',
- },
- },
- });
- expect(Sentry.captureException).not.toHaveBeenCalled();
- });
- });
|