directus

Форк
0
/
validate-snapshot.test.ts 
55 строк · 1.8 Кб
1
import { describe, expect, test, vi } from 'vitest';
2
import type { Snapshot } from '../types/snapshot.js';
3
import { validateSnapshot } from './validate-snapshot.js';
4

5
vi.mock('directus/version', () => ({
6
	version: '10.0.0',
7
}));
8

9
vi.mock('../database/index.js', () => ({
10
	getDatabaseClient: () => 'sqlite',
11
}));
12

13
describe('should fail on invalid snapshot schema', () => {
14
	test('empty snapshot', () => {
15
		const snapshot = {} as Snapshot;
16

17
		expect(() => validateSnapshot(snapshot)).toThrowError('"version" is required');
18
	});
19

20
	test('invalid version', () => {
21
		const snapshot = { version: 0 } as Snapshot;
22

23
		expect(() => validateSnapshot(snapshot)).toThrowError('"version" must be [1]');
24
	});
25

26
	test('invalid schema', () => {
27
		const snapshot = { version: 1, directus: '10.0.0', collections: {} } as Snapshot;
28

29
		expect(() => validateSnapshot(snapshot)).toThrowError('"collections" must be an array');
30
	});
31
});
32

33
describe('should require force option on version / vendor mismatch', () => {
34
	test('directus version mismatch', () => {
35
		const snapshot = { version: 1, directus: '9.26.0' } as Snapshot;
36

37
		expect(() => validateSnapshot(snapshot)).toThrowError(
38
			"Provided snapshot's directus version 9.26.0 does not match the current instance's version 10.0.0",
39
		);
40
	});
41

42
	test('db vendor mismatch', () => {
43
		const snapshot = { version: 1, directus: '10.0.0', vendor: 'postgres' } as Snapshot;
44

45
		expect(() => validateSnapshot(snapshot)).toThrowError(
46
			"Provided snapshot's vendor postgres does not match the current instance's vendor sqlite.",
47
		);
48
	});
49
});
50

51
test('should allow bypass on version / vendor mismatch via force option ', () => {
52
	const snapshot = { version: 1, directus: '9.26.0', vendor: 'postgres' } as Snapshot;
53

54
	expect(validateSnapshot(snapshot, true)).toBeUndefined();
55
});
56

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

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

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

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