1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| import { readFileSync } from 'node:fs';
| import { resolve } from 'node:path';
|
| import { describe, expect, it } from 'vitest';
|
| import { parseRegistry } from '../src/registry.mjs';
|
| const registrySource = readFileSync(resolve(import.meta.dirname, '../../registry.yaml'), 'utf8');
|
| describe('ONLYOFFICE plugin registry', () => {
| it('parses the registered 0.1.0 plugins and scenes', () => {
| const registry = parseRegistry(registrySource);
|
| expect(registry.release).toBe('0.1.0-dev');
| expect(registry.plugins).toMatchObject([
| { code: 'eln-template-annotator', devPort: 4181, bizScene: 'eln.template.annotate', version: '0.1.0' },
| {
| code: 'eln-record-filler',
| compatibilityCodes: ['eln-template-filler'],
| devPort: 4182,
| bizScene: 'eln.record.fill',
| version: '0.1.0',
| },
| {
| code: 'dms-qianpiye-annotator',
| bizModule: 'dms',
| devPort: 4183,
| bizScene: 'dms.qianpiye',
| version: '0.1.0',
| },
| ]);
| });
|
| it.each([
| ['code', ' - code: eln-template-annotator', ' - code: eln-record-filler', '插件编码重复'],
| ['guid', ' guid: asc.{2D6D6CB6-F6FC-45B7-8EC7-0CC1940F1A6F}', ' guid: asc.{7F4E8F35-5D66-47F8-A5B4-6AB3FAACF565}', '插件 GUID 重复'],
| ['dev-port', ' dev-port: 4181', ' dev-port: 4182', '插件开发端口重复'],
| ['biz-scene', ' biz-scene: eln.template.annotate', ' biz-scene: eln.record.fill', '业务场景重复'],
| ])('rejects duplicate %s', (_key, before, after, message) => {
| const source = registrySource.replace(before, after);
| expect(() => parseRegistry(source)).toThrow(message);
| });
|
| it.each([
| [registrySource.replace('version: 0.1.0\n dev-port: 4181', 'version: 0.1.1\n dev-port: 4181'), '插件版本必须为 0.1.0'],
| [registrySource.replace('directory: eln-template-annotator', 'directory: ../annotator'), '插件目录无效'],
| [registrySource.replace('package: onlyoffice-eln-template-annotator', "package: '@bad/pkg'"), '插件包名无效'],
| [registrySource.replace(' - eln-template-filler', ' - ../template-filler'), '插件兼容编码无效'],
| ])('rejects unsafe registry input', (source, message) => {
| expect(() => parseRegistry(source)).toThrow(message);
| });
| });
|
|