1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-28 23:06:37 +01:00
metamask-extension/shared/constants/permissions.test.js
Maarten Zuidhoorn 01a3a5d2c1
[FLASK] Bump Snaps packages (#20230)
* Bump Snaps packages

* Add endowment:lifecycle-hooks permission

* Run yarn lint:fix

* Fix unit test

* Update LavaMoat policies

---------

Co-authored-by: MetaMask Bot <metamaskbot@users.noreply.github.com>
2023-07-28 11:52:32 +02:00

69 lines
2.3 KiB
JavaScript

import { endowmentPermissionBuilders } from '@metamask/snaps-controllers';
import { restrictedMethodPermissionBuilders } from '@metamask/rpc-methods';
import {
EndowmentPermissions,
ExcludedSnapEndowments,
ExcludedSnapPermissions,
RestrictedMethods,
} from './permissions';
describe('EndowmentPermissions', () => {
it('has the expected permission keys', () => {
// Since some permissions are fenced out, this causes problems with the
// test, so we re-add them here.
expect(Object.keys(EndowmentPermissions).sort()).toStrictEqual(
[
'endowment:long-running',
'endowment:lifecycle-hooks',
...Object.keys(endowmentPermissionBuilders).filter(
(targetName) =>
!Object.keys(ExcludedSnapEndowments).includes(targetName),
),
].sort(),
);
});
});
describe('RestrictedMethods', () => {
it('has the expected permission keys', () => {
// this is done because we there is a difference between flask and stable permissions
// the code fence in `shared/constants/snaps/permissions.ts` is not supported in jest
const mainBuildRestrictedMethodPermissions = Object.keys(RestrictedMethods)
.filter((key) => key !== 'snap_manageAccounts')
.sort();
expect(mainBuildRestrictedMethodPermissions).toStrictEqual(
[
'eth_accounts',
...Object.keys(restrictedMethodPermissionBuilders).filter(
(targetName) =>
!Object.keys(ExcludedSnapPermissions).includes(targetName),
),
].sort(),
);
});
});
// Kept here because code fences are not supported in jest.
// rpc methods flask has more restricted endowment permission builders
jest.mock('@metamask/rpc-methods', () =>
jest.requireActual('@metamask/rpc-methods-flask'),
);
describe('Flask Restricted Methods', () => {
it('has the expected flask permission keys', () => {
const flaskExcludedSnapPermissions = Object.keys(
ExcludedSnapPermissions,
).filter((key) => key !== 'snap_manageAccounts');
expect(Object.keys(RestrictedMethods).sort()).toStrictEqual(
[
'eth_accounts',
...Object.keys(restrictedMethodPermissionBuilders).filter(
(targetName) => !flaskExcludedSnapPermissions.includes(targetName),
),
].sort(),
);
});
});