directus

Форк
0
/
get-accountability-for-role.test.ts 
87 строк · 1.8 Кб
1
import { expect, describe, test, vi } from 'vitest';
2
import { getAccountabilityForRole } from './get-accountability-for-role.js';
3

4
vi.mock('./get-permissions', () => ({
5
	getPermissions: vi.fn().mockReturnValue([]),
6
}));
7

8
function mockDatabase() {
9
	const self: Record<string, any> = {
10
		select: vi.fn(() => self),
11
		from: vi.fn(() => self),
12
		where: vi.fn(() => self),
13
		first: vi.fn(),
14
	};
15

16
	return self;
17
}
18

19
describe('getAccountabilityForRole', async () => {
20
	test('no role', async () => {
21
		const result = await getAccountabilityForRole(null, {
22
			accountability: null,
23
			schema: {} as any,
24
			database: vi.fn() as any,
25
		});
26

27
		expect(result).toStrictEqual({
28
			admin: false,
29
			app: false,
30
			permissions: [],
31
			role: null,
32
			user: null,
33
		});
34
	});
35

36
	test('system role', async () => {
37
		const result = await getAccountabilityForRole('system', {
38
			accountability: null,
39
			schema: {} as any,
40
			database: vi.fn() as any,
41
		});
42

43
		expect(result).toStrictEqual({
44
			admin: true,
45
			app: true,
46
			permissions: [],
47
			role: null,
48
			user: null,
49
		});
50
	});
51

52
	test('get role from database', async () => {
53
		const db = mockDatabase();
54

55
		db['first'].mockReturnValue({
56
			admin_access: 'not true',
57
			app_access: '1',
58
		});
59

60
		const result = await getAccountabilityForRole('123-456', {
61
			accountability: null,
62
			schema: {} as any,
63
			database: db as any,
64
		});
65

66
		expect(result).toStrictEqual({
67
			admin: false,
68
			app: true,
69
			permissions: [],
70
			role: '123-456',
71
			user: null,
72
		});
73
	});
74

75
	test('database invalid role', async () => {
76
		const db = mockDatabase();
77
		db['first'].mockReturnValue(false);
78

79
		expect(() =>
80
			getAccountabilityForRole('456-789', {
81
				accountability: null,
82
				schema: {} as any,
83
				database: db as any,
84
			}),
85
		).rejects.toThrow('Configured role "456-789" isn\'t a valid role ID or doesn\'t exist.');
86
	});
87
});
88

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

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

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

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