directus

Форк
0
/
process-error.test.ts 
51 строка · 1.6 Кб
1
import { GraphQLError } from 'graphql';
2
import { describe, expect, test } from 'vitest';
3
import processError from './process-error.js';
4
import { createError } from '@directus/errors';
5

6
describe('GraphQL processError util', () => {
7
	const sampleError = new GraphQLError('An error message', { path: ['test_collection'] });
8

9
	const redactedError = {
10
		message: 'An unexpected error occurred.',
11
		locations: undefined,
12
		extensions: {
13
			code: 'INTERNAL_SERVER_ERROR',
14
		},
15
	};
16

17
	test('returns redacted error when unauthenticated', () => {
18
		expect(processError(null, sampleError)).toEqual(redactedError);
19
	});
20

21
	test('returns redacted error when authenticated but not an admin', () => {
22
		expect(processError({ role: 'd674e22b-f405-48ba-9958-9a7bd16a1aa9' }, sampleError)).toEqual(redactedError);
23
	});
24

25
	test('returns original error when authenticated and is an admin', () => {
26
		expect(processError({ role: 'd674e22b-f405-48ba-9958-9a7bd16a1aa9', admin: true }, sampleError)).toEqual({
27
			message: 'An error message',
28
			path: ['test_collection'],
29
			extensions: {
30
				code: 'INTERNAL_SERVER_ERROR',
31
			},
32
		});
33
	});
34

35
	test('returns original error when createError is used to create the error', () => {
36
		const InvalidPayloadError = createError('INVALID_PAYLOAD_ERROR', 'Something went wrong...', 400);
37

38
		const sampleError = new GraphQLError('An error message', {
39
			path: ['test_collection'],
40
			originalError: new InvalidPayloadError(),
41
		});
42

43
		expect(processError(null, sampleError)).toEqual({
44
			message: 'Something went wrong...',
45
			extensions: {
46
				code: 'INVALID_PAYLOAD_ERROR',
47
			},
48
			path: ['test_collection'],
49
		});
50
	});
51
});
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.