mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-26 20:39:08 +01:00
163 lines
4.5 KiB
JavaScript
163 lines
4.5 KiB
JavaScript
|
import { migrate, version as newVersion } from './081';
|
||
|
|
||
|
describe('migration #81', () => {
|
||
|
it('should consolidate snap permissions as caveats under the wallet_snap permission', async () => {
|
||
|
const oldStorage = {
|
||
|
meta: {
|
||
|
version: 80,
|
||
|
},
|
||
|
data: {
|
||
|
SnapController: {},
|
||
|
PermissionController: {
|
||
|
subjects: {
|
||
|
'example.com': {
|
||
|
permissions: {
|
||
|
'wallet_snap_npm:foobar': {
|
||
|
caveats: null,
|
||
|
date: 2,
|
||
|
id: 'a7342F4b-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'example.com',
|
||
|
parentCapability: 'wallet_snap_npm:foobar',
|
||
|
},
|
||
|
'wallet_snap_npm:baz': {
|
||
|
caveats: null,
|
||
|
date: 3,
|
||
|
id: 'x342A44-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'example.com',
|
||
|
parentCapability: 'wallet_snap_npm:baz',
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
'aave.com': {
|
||
|
permissions: {
|
||
|
'wallet_snap_npm:filsnap': {
|
||
|
caveats: null,
|
||
|
date: 10,
|
||
|
id: 'a7342F4b-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'aave.com',
|
||
|
parentCapability: 'wallet_snap_npm:foobar',
|
||
|
},
|
||
|
'wallet_snap_npm:btcsnap': {
|
||
|
caveats: null,
|
||
|
date: 3,
|
||
|
id: 'x342A44-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'aave.com',
|
||
|
parentCapability: 'wallet_snap_npm:btcsnap',
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const newStorage = await migrate(oldStorage);
|
||
|
|
||
|
expect(newStorage).toStrictEqual({
|
||
|
meta: { version: newVersion },
|
||
|
data: {
|
||
|
SnapController: {},
|
||
|
PermissionController: {
|
||
|
subjects: {
|
||
|
'example.com': {
|
||
|
permissions: {
|
||
|
wallet_snap: {
|
||
|
caveats: [
|
||
|
{
|
||
|
type: 'snapIds',
|
||
|
value: {
|
||
|
'npm:foobar': {},
|
||
|
'npm:baz': {},
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
date: 3,
|
||
|
id: 'x342A44-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'example.com',
|
||
|
parentCapability: 'wallet_snap',
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
'aave.com': {
|
||
|
permissions: {
|
||
|
wallet_snap: {
|
||
|
caveats: [
|
||
|
{
|
||
|
type: 'snapIds',
|
||
|
value: {
|
||
|
'npm:btcsnap': {},
|
||
|
'npm:filsnap': {},
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
date: 10,
|
||
|
id: 'a7342F4b-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'aave.com',
|
||
|
parentCapability: 'wallet_snap',
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should leave state unchanged if there are no snap permissions', async () => {
|
||
|
const oldStorage = {
|
||
|
meta: {
|
||
|
version: 80,
|
||
|
},
|
||
|
data: {
|
||
|
SnapController: {},
|
||
|
PermissionController: {
|
||
|
subjects: {
|
||
|
'example.com': {
|
||
|
permissions: {
|
||
|
eth_accounts: {
|
||
|
date: 2,
|
||
|
id: 'a7342F4b-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'example.com',
|
||
|
parentCapability: 'eth_accounts',
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const newStorage = await migrate(oldStorage);
|
||
|
|
||
|
expect(newStorage.data).toStrictEqual(oldStorage.data);
|
||
|
});
|
||
|
|
||
|
it('should leave state unchanged if there is no SnapController installed (i.e. not a flask build)', async () => {
|
||
|
const oldStorage = {
|
||
|
meta: {
|
||
|
version: 80,
|
||
|
},
|
||
|
data: {
|
||
|
PermissionController: {
|
||
|
subjects: {
|
||
|
'example.com': {
|
||
|
permissions: {
|
||
|
eth_accounts: {
|
||
|
date: 2,
|
||
|
id: 'a7342F4b-beae-4525-a36c-c0635fd03359',
|
||
|
invoker: 'example.com',
|
||
|
parentCapability: 'eth_accounts',
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const newStorage = await migrate(oldStorage);
|
||
|
|
||
|
expect(newStorage.data).toStrictEqual(oldStorage.data);
|
||
|
});
|
||
|
});
|