Skip to content

Commit b9bc7d9

Browse files
Assert permissions granted and revoked
1 parent 72bf866 commit b9bc7d9

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

packages/snaps-controllers/src/snaps/SnapController.test.tsx

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10239,6 +10239,17 @@ describe('SnapController', () => {
1023910239
const rootMessenger = getControllerMessenger(registry);
1024010240
const messenger = getSnapControllerMessenger(rootMessenger);
1024110241

10242+
// Simulate previous permissions, some of which will be removed
10243+
rootMessenger.registerActionHandler(
10244+
'PermissionController:getPermissions',
10245+
() => {
10246+
return {
10247+
[SnapEndowments.Rpc]: MOCK_RPC_ORIGINS_PERMISSION,
10248+
[SnapEndowments.LifecycleHooks]: MOCK_LIFECYCLE_HOOKS_PERMISSION,
10249+
};
10250+
},
10251+
);
10252+
1024210253
const snapId = 'npm:@metamask/jsx-example-snap' as SnapId;
1024310254

1024410255
const mockSnap = getPersistedSnapObject({
@@ -10275,7 +10286,33 @@ describe('SnapController', () => {
1027510286

1027610287
await snapController.updateRegistry();
1027710288

10278-
expect(snapController.get(snapId)?.version).toStrictEqual(updateVersion);
10289+
const updatedSnap = snapController.get(snapId);
10290+
assert(updatedSnap);
10291+
10292+
expect(updatedSnap.version).toStrictEqual(updateVersion);
10293+
expect(updatedSnap.preinstalled).toBe(true);
10294+
10295+
expect(rootMessenger.call).toHaveBeenNthCalledWith(
10296+
7,
10297+
'PermissionController:revokePermissions',
10298+
{ [snapId]: [SnapEndowments.Rpc, SnapEndowments.LifecycleHooks] },
10299+
);
10300+
expect(rootMessenger.call).toHaveBeenNthCalledWith(
10301+
8,
10302+
'PermissionController:grantPermissions',
10303+
{
10304+
approvedPermissions: {
10305+
'endowment:rpc': {
10306+
caveats: [{ type: 'rpcOrigin', value: { dapps: true } }],
10307+
},
10308+
// eslint-disable-next-line @typescript-eslint/naming-convention
10309+
snap_dialog: {},
10310+
// eslint-disable-next-line @typescript-eslint/naming-convention
10311+
snap_manageState: {},
10312+
},
10313+
subject: { origin: snapId },
10314+
},
10315+
);
1027910316

1028010317
snapController.destroy();
1028110318
});

packages/snaps-controllers/src/snaps/SnapController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1493,7 +1493,7 @@ export class SnapController extends BaseController<
14931493

14941494
const preinstalledVersionRange = '*' as SemVerRange;
14951495

1496-
await Promise.all(
1496+
await Promise.allSettled(
14971497
Object.values(this.state.snaps)
14981498
.filter((snap) => snap.preinstalled)
14991499
.map(async (snap) => {

0 commit comments

Comments
 (0)