-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpermissions.test.ts
96 lines (85 loc) · 3.15 KB
/
permissions.test.ts
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import { KeyringRpcMethod } from '@metamask/keyring-api';
import { InternalMethod } from './permissions';
describe('Permissions', () => {
beforeEach(() => {
jest.resetModules();
});
describe('originPermissions', () => {
beforeEach(() => {
jest.mock('./config', () => ({
dev: false,
}));
jest.mock('./lib/custodian-types/custodianMetadata', () => ({
custodianMetadata: [
{
production: true,
allowedOnboardingDomains: ['example.com', 'test.com'],
},
],
}));
});
it('should set up MetaMask permissions correctly', async () => {
const { originPermissions } = await import('./permissions');
const metamaskPermissions = originPermissions.get('metamask');
expect(metamaskPermissions).toBeDefined();
expect(metamaskPermissions?.has(KeyringRpcMethod.ListAccounts)).toBe(
true,
);
expect(metamaskPermissions?.has(KeyringRpcMethod.GetAccount)).toBe(true);
expect(
metamaskPermissions?.has(KeyringRpcMethod.FilterAccountChains),
).toBe(true);
expect(metamaskPermissions?.has(KeyringRpcMethod.DeleteAccount)).toBe(
true,
);
expect(metamaskPermissions?.has(KeyringRpcMethod.ListRequests)).toBe(
true,
);
expect(metamaskPermissions?.has(KeyringRpcMethod.GetRequest)).toBe(true);
expect(metamaskPermissions?.has(KeyringRpcMethod.SubmitRequest)).toBe(
true,
);
});
it('should set up custodian onboarding permissions correctly', async () => {
const { originPermissions } = await import('./permissions');
const examplePermissions = originPermissions.get('https://example.com');
const testPermissions = originPermissions.get('https://test.com');
expect(examplePermissions?.has(InternalMethod.Onboard)).toBe(true);
expect(testPermissions?.has(InternalMethod.Onboard)).toBe(true);
});
it('should not include localhost permissions when not in dev mode', async () => {
const { originPermissions } = await import('./permissions');
const localhostPermissions = originPermissions.get(
'http://localhost:8000',
);
expect(localhostPermissions).toBeUndefined();
});
describe('when in dev mode', () => {
beforeEach(() => {
jest.resetModules();
jest.mock('./config', () => ({
dev: true,
}));
});
it('should include localhost permissions in dev mode', async () => {
const { originPermissions: devOriginPermissions } = await import(
'./permissions'
);
const localhostPermissions = devOriginPermissions.get(
'http://localhost:8000',
);
expect(localhostPermissions).toBeDefined();
expect(localhostPermissions?.has(KeyringRpcMethod.ListAccounts)).toBe(
true,
);
expect(localhostPermissions?.has(KeyringRpcMethod.CreateAccount)).toBe(
true,
);
expect(localhostPermissions?.has(InternalMethod.Onboard)).toBe(true);
expect(localhostPermissions?.has(InternalMethod.ClearAllRequests)).toBe(
true,
);
});
});
});
});