Skip to content

Commit 4ce7730

Browse files
Get some tests running
1 parent ac1a436 commit 4ce7730

File tree

10 files changed

+136
-155
lines changed

10 files changed

+136
-155
lines changed

packages/snaps-controllers/src/interface/SnapInterfaceController.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1617,7 +1617,7 @@ describe('SnapInterfaceController', () => {
16171617

16181618
// TODO: Either fix this lint violation or explain why it's necessary to
16191619
// ignore.
1620-
1620+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
16211621
rootMessenger.call(
16221622
'SnapInterfaceController:resolveInterface',
16231623
MOCK_SNAP_ID,

packages/snaps-controllers/src/test-utils/controller.ts

Lines changed: 79 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
generateSalt,
99
isVaultUpdated,
1010
} from '@metamask/browser-passworder';
11-
import type { Messenger } from '@metamask/messenger';
11+
import { Messenger } from '@metamask/messenger';
1212
import type {
1313
PermissionConstraint,
1414
SubjectPermissions,
@@ -465,27 +465,17 @@ export const getSnapControllerMessenger = (
465465
typeof getControllerMessenger
466466
> = getControllerMessenger(),
467467
) => {
468-
const snapControllerMessenger = messenger.getRestricted<
468+
const snapControllerMessenger = new Messenger<
469469
'SnapController',
470-
SnapControllerActions['type'] | AllowedActions['type'],
471-
SnapControllerEvents['type'] | AllowedEvents['type']
470+
SnapControllerActions | AllowedActions,
471+
SnapControllerEvents | AllowedEvents
472472
>({
473-
name: 'SnapController',
474-
allowedEvents: [
475-
'ExecutionService:unhandledError',
476-
'ExecutionService:outboundRequest',
477-
'ExecutionService:outboundResponse',
478-
'SnapController:snapAdded',
479-
'SnapController:snapBlocked',
480-
'SnapController:snapInstalled',
481-
'SnapController:snapUninstalled',
482-
'SnapController:snapUnblocked',
483-
'SnapController:snapUpdated',
484-
'SnapController:stateChange',
485-
'SnapController:snapRolledback',
486-
'KeyringController:lock',
487-
],
488-
allowedActions: [
473+
namespace: 'SnapController',
474+
parent: messenger,
475+
});
476+
477+
messenger.delegate({
478+
actions: [
489479
'ApprovalController:addRequest',
490480
'ApprovalController:updateRequestState',
491481
'ExecutionService:executeSnap',
@@ -505,35 +495,22 @@ export const getSnapControllerMessenger = (
505495
'PermissionController:getSubjectNames',
506496
'PhishingController:testOrigin',
507497
'SelectedNetworkController:getNetworkClientIdForDomain',
508-
'SnapController:get',
509-
'SnapController:handleRequest',
510-
'SnapController:getSnapState',
511-
'SnapController:has',
512-
'SnapController:updateSnapState',
513-
'SnapController:clearSnapState',
514-
'SnapController:updateBlockedSnaps',
515-
'SnapController:enable',
516-
'SnapController:disable',
517-
'SnapController:remove',
518-
'SnapController:getAll',
519-
'SnapController:getRunnableSnaps',
520-
'SnapController:getPermitted',
521-
'SnapController:install',
522-
'SnapController:incrementActiveReferences',
523-
'SnapController:decrementActiveReferences',
524-
'SnapController:getRegistryMetadata',
525498
'SubjectMetadataController:getSubjectMetadata',
526499
'SubjectMetadataController:addSubjectMetadata',
527500
'SnapsRegistry:get',
528501
'SnapsRegistry:getMetadata',
529502
'SnapsRegistry:update',
530-
'SnapController:disconnectOrigin',
531-
'SnapController:revokeDynamicPermissions',
532-
'SnapController:getFile',
533503
'SnapsRegistry:resolveVersion',
534504
'SnapInterfaceController:createInterface',
535505
'SnapInterfaceController:getInterface',
536506
],
507+
events: [
508+
'ExecutionService:unhandledError',
509+
'ExecutionService:outboundRequest',
510+
'ExecutionService:outboundResponse',
511+
'KeyringController:lock',
512+
],
513+
messenger: snapControllerMessenger,
537514
});
538515

539516
jest.spyOn(snapControllerMessenger, 'call');
@@ -685,20 +662,17 @@ export const getRestrictedCronjobControllerMessenger = (
685662
> = getRootCronjobControllerMessenger(),
686663
mocked = true,
687664
) => {
688-
const cronjobControllerMessenger = messenger.getRestricted<
665+
const cronjobControllerMessenger = new Messenger<
689666
'CronjobController',
690-
CronjobControllerActions['type'] | AllowedActions['type'],
691-
CronjobControllerEvents['type'] | AllowedEvents['type']
667+
CronjobControllerActions | AllowedActions,
668+
CronjobControllerEvents | AllowedEvents
692669
>({
693-
name: 'CronjobController',
694-
allowedEvents: [
695-
'SnapController:snapInstalled',
696-
'SnapController:snapUpdated',
697-
'SnapController:snapUninstalled',
698-
'SnapController:snapEnabled',
699-
'SnapController:snapDisabled',
700-
],
701-
allowedActions: [
670+
namespace: 'CronjobController',
671+
parent: messenger,
672+
});
673+
674+
messenger.delegate({
675+
actions: [
702676
'PermissionController:hasPermission',
703677
'PermissionController:getPermissions',
704678
'SnapController:getAll',
@@ -707,6 +681,14 @@ export const getRestrictedCronjobControllerMessenger = (
707681
'CronjobController:cancelBackgroundEvent',
708682
'CronjobController:getBackgroundEvents',
709683
],
684+
events: [
685+
'SnapController:snapInstalled',
686+
'SnapController:snapUpdated',
687+
'SnapController:snapUninstalled',
688+
'SnapController:snapEnabled',
689+
'SnapController:snapDisabled',
690+
],
691+
messenger: cronjobControllerMessenger,
710692
});
711693

712694
if (mocked) {
@@ -751,22 +733,11 @@ export const getRestrictedSnapsRegistryControllerMessenger = (
751733
typeof getRootSnapsRegistryControllerMessenger
752734
> = getRootSnapsRegistryControllerMessenger(),
753735
) => {
754-
const controllerMessenger = messenger.getRestricted<
736+
return new Messenger<
755737
'SnapsRegistry',
756-
SnapsRegistryActions['type'],
757-
SnapsRegistryEvents['type']
758-
>({
759-
name: 'SnapsRegistry',
760-
allowedEvents: [],
761-
allowedActions: [
762-
'SnapsRegistry:get',
763-
'SnapsRegistry:getMetadata',
764-
'SnapsRegistry:update',
765-
'SnapsRegistry:resolveVersion',
766-
],
767-
});
768-
769-
return controllerMessenger;
738+
SnapsRegistryActions,
739+
SnapsRegistryEvents
740+
>({ namespace: 'SnapsRegistry', parent: messenger });
770741
};
771742

772743
// Mock controller messenger for Interface Controller
@@ -787,13 +758,14 @@ export const getRestrictedSnapInterfaceControllerMessenger = (
787758
> = getRootSnapInterfaceControllerMessenger(),
788759
mocked = true,
789760
) => {
790-
const snapInterfaceControllerMessenger = messenger.getRestricted<
761+
const snapInterfaceControllerMessenger = new Messenger<
791762
'SnapInterfaceController',
792-
SnapInterfaceControllerAllowedActions['type'],
793-
SnapInterfaceControllerEvents['type']
794-
>({
795-
name: 'SnapInterfaceController',
796-
allowedActions: [
763+
SnapInterfaceControllerAllowedActions,
764+
SnapInterfaceControllerEvents
765+
>({ namespace: 'SnapInterfaceController', parent: messenger });
766+
767+
messenger.delegate({
768+
actions: [
797769
'PhishingController:testOrigin',
798770
'ApprovalController:hasRequest',
799771
'ApprovalController:acceptRequest',
@@ -803,10 +775,8 @@ export const getRestrictedSnapInterfaceControllerMessenger = (
803775
'AccountsController:getSelectedMultichainAccount',
804776
'AccountsController:listMultichainAccounts',
805777
],
806-
allowedEvents: [
807-
'NotificationServicesController:notificationsListUpdated',
808-
'SnapInterfaceController:stateChange',
809-
],
778+
events: ['NotificationServicesController:notificationsListUpdated'],
779+
messenger: snapInterfaceControllerMessenger,
810780
});
811781

812782
if (mocked) {
@@ -888,23 +858,28 @@ export const getRestrictedSnapInsightsControllerMessenger = (
888858
typeof getRootSnapInsightsControllerMessenger
889859
> = getRootSnapInsightsControllerMessenger(),
890860
) => {
891-
const controllerMessenger = messenger.getRestricted<
861+
const controllerMessenger = new Messenger<
892862
'SnapInsightsController',
893-
SnapInsightsControllerAllowedActions['type'],
894-
SnapInsightsControllerAllowedEvents['type']
863+
SnapInsightsControllerAllowedActions,
864+
SnapInsightsControllerAllowedEvents
895865
>({
896-
name: 'SnapInsightsController',
897-
allowedEvents: [
898-
'TransactionController:unapprovedTransactionAdded',
899-
'TransactionController:transactionStatusUpdated',
900-
'SignatureController:stateChange',
901-
],
902-
allowedActions: [
866+
namespace: 'SnapInsightsController',
867+
parent: messenger,
868+
});
869+
870+
messenger.delegate({
871+
actions: [
903872
'PermissionController:getPermissions',
904873
'SnapController:getAll',
905874
'SnapController:handleRequest',
906875
'SnapInterfaceController:deleteInterface',
907876
],
877+
events: [
878+
'TransactionController:unapprovedTransactionAdded',
879+
'TransactionController:transactionStatusUpdated',
880+
'SignatureController:stateChange',
881+
],
882+
messenger: controllerMessenger,
908883
});
909884

910885
return controllerMessenger;
@@ -917,15 +892,7 @@ export const getRestrictedSnapInsightsControllerMessenger = (
917892
* @returns A promise that resolves when the state change event is emitted.
918893
*/
919894
export async function waitForStateChange(
920-
messenger:
921-
| Messenger<any, SnapControllerStateChangeEvent>
922-
| Messenger<
923-
'SnapController',
924-
any,
925-
SnapControllerStateChangeEvent,
926-
any,
927-
'SnapController:stateChange'
928-
>,
895+
messenger: Messenger<'SnapController', any, SnapControllerStateChangeEvent>,
929896
) {
930897
return new Promise<void>((resolve) => {
931898
messenger.subscribe('SnapController:stateChange', () => {
@@ -951,18 +918,19 @@ export const getRestrictedMultichainRouterMessenger = (
951918
typeof getRootMultichainRouterMessenger
952919
> = getRootMultichainRouterMessenger(),
953920
) => {
954-
const controllerMessenger = messenger.getRestricted<
921+
const controllerMessenger = new Messenger<
955922
'MultichainRouter',
956-
MultichainRouterAllowedActions['type']
957-
>({
958-
name: 'MultichainRouter',
959-
allowedEvents: [],
960-
allowedActions: [
923+
MultichainRouterAllowedActions
924+
>({ namespace: 'MultichainRouter', parent: messenger });
925+
926+
messenger.delegate({
927+
actions: [
961928
'PermissionController:getPermissions',
962929
'SnapController:getAll',
963930
'SnapController:handleRequest',
964931
'AccountsController:listMultichainAccounts',
965932
],
933+
messenger: controllerMessenger,
966934
});
967935

968936
return controllerMessenger;
@@ -985,18 +953,20 @@ export const getRestrictedWebSocketServiceMessenger = (
985953
typeof getRootWebSocketServiceMessenger
986954
> = getRootWebSocketServiceMessenger(),
987955
) => {
988-
const controllerMessenger = messenger.getRestricted<
956+
const controllerMessenger = new Messenger<
989957
'WebSocketService',
990-
WebSocketServiceAllowedActions['type'],
991-
WebSocketServiceEvents['type']
992-
>({
993-
name: 'WebSocketService',
994-
allowedEvents: [
958+
WebSocketServiceAllowedActions,
959+
WebSocketServiceEvents
960+
>({ namespace: 'WebSocketService', parent: messenger });
961+
962+
messenger.delegate({
963+
actions: ['SnapController:handleRequest'],
964+
events: [
995965
'SnapController:snapInstalled',
996966
'SnapController:snapUpdated',
997967
'SnapController:snapUninstalled',
998968
],
999-
allowedActions: ['SnapController:handleRequest'],
969+
messenger: controllerMessenger,
1000970
});
1001971

1002972
return controllerMessenger;

packages/snaps-controllers/src/test-utils/execution-environment.ts

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { JsonRpcEngine } from '@metamask/json-rpc-engine';
22
import { createEngineStream } from '@metamask/json-rpc-middleware-stream';
3+
import { Messenger } from '@metamask/messenger';
34
import { logError, type SnapRpcHookArgs } from '@metamask/snaps-utils';
45
import type { MockControllerMessenger } from '@metamask/snaps-utils/test-utils';
56
import { pipeline } from 'readable-stream';
@@ -20,20 +21,12 @@ export const getNodeEESMessenger = (
2021
ExecutionServiceEvents
2122
>,
2223
) =>
23-
messenger.getRestricted({
24-
name: 'ExecutionService',
25-
allowedEvents: [
26-
'ExecutionService:unhandledError',
27-
'ExecutionService:outboundRequest',
28-
'ExecutionService:outboundResponse',
29-
],
30-
allowedActions: [
31-
'ExecutionService:executeSnap',
32-
'ExecutionService:handleRpcRequest',
33-
'ExecutionService:terminateAllSnaps',
34-
'ExecutionService:terminateSnap',
35-
],
36-
});
24+
new Messenger<
25+
'ExecutionService',
26+
ExecutionServiceActions,
27+
ExecutionServiceEvents,
28+
any
29+
>({ namespace: 'ExecutionService', parent: messenger });
3730

3831
export const getNodeEES = (
3932
messenger: ReturnType<typeof getNodeEESMessenger>,

packages/snaps-controllers/src/test-utils/service.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { Messenger } from '@metamask/base-controller/next';
21
import { JsonRpcEngine } from '@metamask/json-rpc-engine';
32
import { createEngineStream } from '@metamask/json-rpc-middleware-stream';
3+
import { Messenger } from '@metamask/messenger';
44
import { logError } from '@metamask/snaps-utils';
55
import { pipeline } from 'readable-stream';
66
import type { Duplex } from 'readable-stream';
@@ -18,18 +18,12 @@ export const createService = <
1818
'messenger' | 'setupSnapProvider'
1919
>,
2020
) => {
21-
const messenger = new Messenger<never, ErrorMessageEvent>();
22-
23-
const restrictedMessenger = messenger.getRestricted<
24-
'ExecutionService',
25-
never,
26-
ErrorMessageEvent['type']
27-
>({
28-
name: 'ExecutionService',
29-
});
21+
const messenger = new Messenger<'ExecutionService', never, ErrorMessageEvent>(
22+
{ namespace: 'ExecutionService' },
23+
);
3024

3125
const service = new ServiceClass({
32-
messenger: restrictedMessenger,
26+
messenger,
3327
setupSnapProvider: (_snapId: string, rpcStream: Duplex) => {
3428
const mux = setupMultiplex(rpcStream, 'foo');
3529
const stream = mux.createStream('metamask-provider');
@@ -54,6 +48,6 @@ export const createService = <
5448

5549
return {
5650
service,
57-
messenger: restrictedMessenger,
51+
messenger,
5852
};
5953
};

packages/snaps-rpc-methods/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"@lavamoat/allow-scripts": "^3.3.4",
6969
"@metamask/auto-changelog": "^5.0.2",
7070
"@metamask/json-rpc-engine": "^10.0.2",
71+
"@metamask/messenger": "^0.1.0",
7172
"@swc/core": "1.11.31",
7273
"@swc/jest": "^0.2.38",
7374
"@ts-bridge/cli": "^0.6.1",

0 commit comments

Comments
 (0)