Skip to content

Commit cfe9496

Browse files
committed
Fix type errors, revert some changes, and get more tests passing
1 parent 51e4070 commit cfe9496

File tree

5 files changed

+40
-46
lines changed

5 files changed

+40
-46
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10295,12 +10295,13 @@ describe('SnapController', () => {
1029510295
expect(updatedSnap.version).toStrictEqual(updateVersion);
1029610296
expect(updatedSnap.preinstalled).toBe(true);
1029710297

10298-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
10298+
expect(messenger.call).toHaveBeenNthCalledWith(
1029910299
7,
1030010300
'PermissionController:revokePermissions',
1030110301
{ [snapId]: [SnapEndowments.Rpc, SnapEndowments.LifecycleHooks] },
1030210302
);
10303-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
10303+
10304+
expect(messenger.call).toHaveBeenNthCalledWith(
1030410305
8,
1030510306
'PermissionController:grantPermissions',
1030610307
{

packages/snaps-controllers/src/test-utils/controller.ts renamed to packages/snaps-controllers/src/test-utils/controller.tsx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,39 @@
11
import type { ApprovalRequest } from '@metamask/approval-controller';
22
import {
3-
encryptWithKey,
43
decryptWithKey,
5-
keyFromPassword,
6-
importKey,
4+
encryptWithKey,
75
exportKey,
86
generateSalt,
7+
importKey,
98
isVaultUpdated,
9+
keyFromPassword,
1010
} from '@metamask/browser-passworder';
1111
import { Messenger } from '@metamask/messenger';
1212
import type {
13+
Caveat,
1314
PermissionConstraint,
15+
SubjectMetadata,
1416
SubjectPermissions,
1517
ValidPermission,
16-
Caveat,
17-
SubjectMetadata,
1818
} from '@metamask/permission-controller';
1919
import { SubjectType } from '@metamask/permission-controller';
20+
import { PhishingDetectorResultType } from '@metamask/phishing-controller';
2021
import { providerErrors } from '@metamask/rpc-errors';
2122
import {
2223
SnapEndowments,
2324
WALLET_SNAP_PERMISSION_KEY,
2425
} from '@metamask/snaps-rpc-methods';
2526
import type { SnapId } from '@metamask/snaps-sdk';
26-
import { text } from '@metamask/snaps-sdk';
27+
import { Text } from '@metamask/snaps-sdk/jsx';
2728
import { SnapCaveatType } from '@metamask/snaps-utils';
2829
import {
29-
MockControllerMessenger,
3030
getPersistedSnapObject,
31+
getSnapObject,
3132
MOCK_LOCAL_SNAP_ID,
3233
MOCK_ORIGIN,
3334
MOCK_SNAP_ID,
35+
MockControllerMessenger,
3436
TEST_SECRET_RECOVERY_PHRASE_SEED_BYTES,
35-
getSnapObject,
3637
} from '@metamask/snaps-utils/test-utils';
3738
import type { Json } from '@metamask/utils';
3839

@@ -58,7 +59,6 @@ import type {
5859
MultichainRouterAllowedActions,
5960
MultichainRouterEvents,
6061
} from '../multichain';
61-
import { SnapController } from '../snaps';
6262
import type {
6363
AllowedActions,
6464
AllowedEvents,
@@ -69,6 +69,7 @@ import type {
6969
SnapsRegistryActions,
7070
SnapsRegistryEvents,
7171
} from '../snaps';
72+
import { SnapController } from '../snaps';
7273
import type { KeyDerivationOptions } from '../types';
7374
import type {
7475
WebSocketServiceActions,
@@ -441,9 +442,10 @@ export const getControllerMessenger = (registry = new MockSnapsRegistry()) => {
441442
if (id !== MOCK_INTERFACE_ID) {
442443
throw new Error(`Interface with id '${id}' not found.`);
443444
}
445+
444446
return {
445447
snapId,
446-
content: text('foo bar'),
448+
content: <Text>console.log('hello world');</Text>,
447449
state: {},
448450
context: null,
449451
} as StoredInterface;
@@ -621,6 +623,7 @@ export const getSnapControllerWithEES = (
621623
service?: ReturnType<typeof getNodeEES>,
622624
) => {
623625
const _service =
626+
// @ts-expect-error: TODO: Investigate type mismatch.
624627
service ?? getNodeEES(getNodeEESMessenger(options.rootMessenger));
625628

626629
const controller = new SnapController(options);
@@ -773,7 +776,7 @@ export const getRestrictedSnapInterfaceControllerMessenger = (
773776
if (mocked) {
774777
messenger.registerActionHandler('PhishingController:testOrigin', () => ({
775778
result: false,
776-
type: 'all',
779+
type: PhishingDetectorResultType.All,
777780
}));
778781

779782
messenger.registerActionHandler(
@@ -949,7 +952,7 @@ export const getRestrictedWebSocketServiceMessenger = (
949952
) => {
950953
const controllerMessenger = new Messenger<
951954
'WebSocketService',
952-
WebSocketServiceAllowedActions,
955+
WebSocketServiceActions | WebSocketServiceAllowedActions,
953956
WebSocketServiceEvents,
954957
any
955958
>({ namespace: 'WebSocketService', parent: messenger });
@@ -964,5 +967,7 @@ export const getRestrictedWebSocketServiceMessenger = (
964967
messenger: controllerMessenger,
965968
});
966969

970+
jest.spyOn(controllerMessenger, 'call');
971+
967972
return controllerMessenger;
968973
};

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ export const getNodeEES = (
6565
});
6666

6767
export class ExecutionEnvironmentStub implements ExecutionService {
68+
name: 'ExecutionService' = 'ExecutionService' as const;
69+
70+
state = null;
71+
6872
constructor(messenger: ReturnType<typeof getNodeEESMessenger>) {
6973
messenger.registerActionHandler(
7074
`ExecutionService:handleRpcRequest`,

packages/snaps-controllers/src/websocket/WebSocketService.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ const MOCK_WEBSOCKET_BROKEN_URI = 'wss://broken.metamask.io';
1818
class MockWebSocket {
1919
readonly #origin: string;
2020

21-
#closeListener: EventListener;
21+
#closeListener?: EventListener;
2222

23-
#messageListener: EventListener;
23+
#messageListener?: EventListener;
2424

2525
constructor(url: string) {
2626
this.#origin = new URL(url).origin;
@@ -47,7 +47,7 @@ class MockWebSocket {
4747

4848
send(data: string | Uint8Array) {
4949
if (data === 'Ping') {
50-
this.#messageListener(
50+
this.#messageListener?.(
5151
new MessageEvent('message', { origin: this.#origin, data: 'Pong' }),
5252
);
5353
return;
@@ -58,7 +58,7 @@ class MockWebSocket {
5858
isEqual(Array.from(data), Array.from(stringToBytes('Ping')))
5959
) {
6060
const bytes = stringToBytes('Pong');
61-
this.#messageListener(
61+
this.#messageListener?.(
6262
new MessageEvent('message', {
6363
origin: this.#origin,
6464
data: bytes.buffer,
@@ -73,7 +73,7 @@ class MockWebSocket {
7373
event.code = code;
7474
event.reason = reason;
7575
event.wasClean = wasClean;
76-
this.#closeListener(event);
76+
this.#closeListener?.(event);
7777
}
7878

7979
close() {
@@ -117,7 +117,7 @@ describe('WebSocketService', () => {
117117
'Ping',
118118
);
119119

120-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
120+
expect(messenger.call).toHaveBeenNthCalledWith(
121121
2,
122122
'SnapController:handleRequest',
123123
{
@@ -137,7 +137,7 @@ describe('WebSocketService', () => {
137137
},
138138
);
139139

140-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
140+
expect(messenger.call).toHaveBeenNthCalledWith(
141141
4,
142142
'SnapController:handleRequest',
143143
{
@@ -192,7 +192,7 @@ describe('WebSocketService', () => {
192192
Array.from(stringToBytes('Ping')),
193193
);
194194

195-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
195+
expect(messenger.call).toHaveBeenNthCalledWith(
196196
2,
197197
'SnapController:handleRequest',
198198
{
@@ -212,7 +212,7 @@ describe('WebSocketService', () => {
212212
},
213213
);
214214

215-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
215+
expect(messenger.call).toHaveBeenNthCalledWith(
216216
4,
217217
'SnapController:handleRequest',
218218
{
@@ -327,7 +327,7 @@ describe('WebSocketService', () => {
327327
messenger.call('WebSocketService:getAll', MOCK_SNAP_ID),
328328
).toHaveLength(0);
329329

330-
expect(rootMessenger.call).toHaveBeenNthCalledWith(
330+
expect(messenger.call).toHaveBeenNthCalledWith(
331331
5,
332332
'SnapController:handleRequest',
333333
{

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

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import type {
22
ActionConstraint,
33
ActionHandler,
44
EventConstraint,
5-
ExtractEventPayload,
5+
MockAnyNamespace,
66
} from '@metamask/messenger';
7-
import { Messenger } from '@metamask/messenger';
7+
import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger';
88

99
export class MockControllerMessenger<
1010
Action extends ActionConstraint,
1111
Event extends EventConstraint,
12-
> extends Messenger<'MockMessenger', Action, Event> {
12+
> extends Messenger<MockAnyNamespace, Action, Event> {
1313
constructor() {
14-
super({ namespace: 'MockMessenger' });
14+
super({ namespace: MOCK_ANY_NAMESPACE });
1515
}
1616

1717
/**
@@ -25,23 +25,7 @@ export class MockControllerMessenger<
2525
actionType: ActionType,
2626
handler: ActionHandler<Action, ActionType>,
2727
) {
28-
// TODO: Undo this once you can unregister/register globally for tests
29-
super._internalUnregisterDelegatedActionHandler(actionType);
30-
super._internalRegisterDelegatedActionHandler(actionType, handler);
31-
}
32-
33-
unregisterActionHandler<ActionType extends Action['type']>(
34-
actionType: ActionType,
35-
) {
36-
// TODO: Undo this once you can unregister/register globally for tests
37-
super._internalUnregisterDelegatedActionHandler(actionType);
38-
}
39-
40-
publish<EventType extends Event['type']>(
41-
eventType: EventType,
42-
...payload: ExtractEventPayload<Event, EventType>
43-
): void {
44-
// TODO: Undo this once you can publish globally for tests
45-
super._internalPublishDelegated(eventType, ...payload);
28+
super.unregisterActionHandler(actionType);
29+
super.registerActionHandler(actionType, handler);
4630
}
4731
}

0 commit comments

Comments
 (0)