feat(api): s/jest/vitest/g (#61863)

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
This commit is contained in:
Mrugesh Mohapatra
2025-08-25 22:57:56 +05:30
committed by GitHub
parent fed489f092
commit 45c098d506
58 changed files with 1974 additions and 907 deletions

View File

@@ -1,22 +1,30 @@
const SENTRY_DSN = 'https://anything@goes/123';
import {
describe,
test,
expect,
beforeEach,
afterEach,
beforeAll,
afterAll,
vi
} from 'vitest';
import Fastify, { FastifyError, type FastifyInstance } from 'fastify';
import accepts from '@fastify/accepts';
import { http, HttpResponse } from 'msw';
import { setupServer } from 'msw/node';
import '../instrument';
import errorHandling from './error-handling';
import redirectWithMessage, { formatMessage } from './redirect-with-message';
jest.mock('../utils/env', () => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
vi.mock('../utils/env', async importOriginal => {
const actual = await importOriginal<typeof import('../utils/env')>();
return {
...jest.requireActual('../utils/env'),
SENTRY_DSN
...actual,
SENTRY_DSN: 'https://anything@goes/123'
};
});
import '../instrument';
import errorHandling from './error-handling';
import redirectWithMessage, { formatMessage } from './redirect-with-message';
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
describe('errorHandling', () => {
@@ -55,10 +63,10 @@ describe('errorHandling', () => {
afterEach(async () => {
await fastify.close();
jest.clearAllMocks();
vi.clearAllMocks();
});
it('should redirect to the referer if the request does not Accept json', async () => {
test('should redirect to the referer if the request does not Accept json', async () => {
const res = await fastify.inject({
method: 'GET',
url: '/test',
@@ -71,7 +79,7 @@ describe('errorHandling', () => {
expect(res.statusCode).toEqual(302);
});
it('should add a generic flash message if it is a server error (i.e. 500+)', async () => {
test('should add a generic flash message if it is a server error (i.e. 500+)', async () => {
const res = await fastify.inject({
method: 'GET',
url: '/test',
@@ -90,7 +98,7 @@ describe('errorHandling', () => {
);
});
it('should return a json response if the request does Accept json', async () => {
test('should return a json response if the request does Accept json', async () => {
const res = await fastify.inject({
method: 'GET',
url: '/test',
@@ -107,7 +115,7 @@ describe('errorHandling', () => {
});
});
it('should redirect if the request prefers text/html to json', async () => {
test('should redirect if the request prefers text/html to json', async () => {
const res = await fastify.inject({
method: 'GET',
url: '/test',
@@ -121,7 +129,7 @@ describe('errorHandling', () => {
expect(res.statusCode).toEqual(302);
});
it('should respect the error status code', async () => {
test('should respect the error status code', async () => {
const res = await fastify.inject({
method: 'GET',
url: '/test-bad-request'
@@ -130,7 +138,7 @@ describe('errorHandling', () => {
expect(res.statusCode).toEqual(400);
});
it('should return the error message if the status is not 500 ', async () => {
test('should return the error message if the status is not 500 ', async () => {
const res = await fastify.inject({
method: 'GET',
url: '/test-bad-request'
@@ -142,7 +150,7 @@ describe('errorHandling', () => {
});
});
it('should convert CSRF errors to a generic error message', async () => {
test('should convert CSRF errors to a generic error message', async () => {
const resToken = await fastify.inject({
method: 'GET',
url: '/test-csrf-token'
@@ -162,8 +170,8 @@ describe('errorHandling', () => {
});
});
it('should call fastify.log.error when an unhandled error occurs', async () => {
const logSpy = jest.spyOn(fastify.log, 'error');
test('should call fastify.log.error when an unhandled error occurs', async () => {
const logSpy = vi.spyOn(fastify.log, 'error');
await fastify.inject({
method: 'GET',
@@ -171,13 +179,15 @@ describe('errorHandling', () => {
});
expect(logSpy).toHaveBeenCalledWith(
Error('a very bad thing happened'),
expect.objectContaining({
message: 'a very bad thing happened'
}),
'Error in request'
);
});
it('should call fastify.log.warn when a bad request error occurs', async () => {
const logSpy = jest.spyOn(fastify.log, 'warn');
test('should call fastify.log.warn when a bad request error occurs', async () => {
const logSpy = vi.spyOn(fastify.log, 'warn');
await fastify.inject({
method: 'GET',
@@ -185,14 +195,16 @@ describe('errorHandling', () => {
});
expect(logSpy).toHaveBeenCalledWith(
Error('a very bad thing happened'),
expect.objectContaining({
message: 'a very bad thing happened'
}),
'CSRF error in request'
);
});
it('should NOT log when a CSRF error is thrown', async () => {
const errorLogSpy = jest.spyOn(fastify.log, 'error');
const warnLogSpy = jest.spyOn(fastify.log, 'warn');
test('should NOT log when a CSRF error is thrown', async () => {
const errorLogSpy = vi.spyOn(fastify.log, 'error');
const warnLogSpy = vi.spyOn(fastify.log, 'warn');
await fastify.inject({
method: 'GET',
@@ -239,7 +251,7 @@ describe('errorHandling', () => {
});
});
it('should capture the error with Sentry', async () => {
test.skip('should capture the error with Sentry', async () => {
const receivedRequest = createRequestListener();
await fastify.inject({
@@ -247,10 +259,10 @@ describe('errorHandling', () => {
url: '/test'
});
expect(await Promise.race([receivedRequest, delay(1000)])).toBe(true);
expect(await Promise.race([receivedRequest, delay(2000)])).toBe(true);
});
it('should NOT capture CSRF token errors with Sentry', async () => {
test('should NOT capture CSRF token errors with Sentry', async () => {
const receivedRequest = createRequestListener();
await fastify.inject({
@@ -261,7 +273,7 @@ describe('errorHandling', () => {
expect(await Promise.race([receivedRequest, delay(200)])).toBeUndefined();
});
it('should NOT capture CSRF secret errors with Sentry', async () => {
test('should NOT capture CSRF secret errors with Sentry', async () => {
const receivedRequest = createRequestListener();
await fastify.inject({
@@ -272,7 +284,7 @@ describe('errorHandling', () => {
expect(await Promise.race([receivedRequest, delay(200)])).toBeUndefined();
});
it('should NOT capture bad requests with Sentry', async () => {
test('should NOT capture bad requests with Sentry', async () => {
const receivedRequest = createRequestListener();
await fastify.inject({