1- import { deriveStateFromMetadata , Messenger } from '@metamask/base-controller' ;
2- import type { TransactionControllerStateChangeEvent } from '@metamask/transaction-controller' ;
1+ import { deriveStateFromMetadata } from '@metamask/base-controller/next' ;
2+ import {
3+ Messenger ,
4+ MOCK_ANY_NAMESPACE ,
5+ type MessengerActions ,
6+ type MessengerEvents ,
7+ type MockAnyNamespace ,
8+ } from '@metamask/messenger' ;
39import { strict as assert } from 'assert' ;
410import nock , { cleanAll , isDone , pendingMocks } from 'nock' ;
511import sinon from 'sinon' ;
@@ -10,15 +16,14 @@ import {
1016 METAMASK_STALELIST_FILE ,
1117 PhishingController ,
1218 PHISHING_CONFIG_BASE_URL ,
13- type PhishingControllerActions ,
14- type PhishingControllerEvents ,
1519 type PhishingControllerOptions ,
1620 CLIENT_SIDE_DETECION_BASE_URL ,
1721 C2_DOMAIN_BLOCKLIST_ENDPOINT ,
1822 PHISHING_DETECTION_BASE_URL ,
1923 PHISHING_DETECTION_SCAN_ENDPOINT ,
2024 PHISHING_DETECTION_BULK_SCAN_ENDPOINT ,
2125 type BulkPhishingDetectionScanResponse ,
26+ type PhishingControllerMessenger ,
2227} from './PhishingController' ;
2328import {
2429 createMockStateChangePayload ,
@@ -32,24 +37,58 @@ import { getHostnameFromUrl } from './utils';
3237
3338const controllerName = 'PhishingController' ;
3439
40+ type AllPhishingControllerActions =
41+ MessengerActions < PhishingControllerMessenger > ;
42+
43+ type AllPhishingControllerEvents = MessengerEvents < PhishingControllerMessenger > ;
44+
45+ type RootMessenger = Messenger <
46+ MockAnyNamespace ,
47+ AllPhishingControllerActions ,
48+ AllPhishingControllerEvents
49+ > ;
50+
3551/**
36- * Constructs a restricted messenger with transaction events enabled.
52+ * Creates and returns a root messenger for testing
3753 *
38- * @returns A restricted messenger that can listen to TransactionController events.
54+ * @returns A messenger instance
3955 */
40- function getRestrictedMessengerWithTransactionEvents ( ) {
56+ function getRootMessenger ( ) : RootMessenger {
57+ return new Messenger ( {
58+ namespace : MOCK_ANY_NAMESPACE ,
59+ } ) ;
60+ }
61+
62+ /**
63+ * Constructs a messenger for use in PhishingController tests.
64+ *
65+ * @returns A messenger and the root messenger.
66+ */
67+ function setupMessenger ( ) : {
68+ messenger : PhishingControllerMessenger ;
69+ rootMessenger : RootMessenger ;
70+ } {
71+ const rootMessenger = getRootMessenger ( ) ;
72+
4173 const messenger = new Messenger <
42- PhishingControllerActions ,
43- PhishingControllerEvents | TransactionControllerStateChangeEvent
44- > ( ) ;
74+ typeof controllerName ,
75+ AllPhishingControllerActions ,
76+ AllPhishingControllerEvents ,
77+ RootMessenger
78+ > ( {
79+ namespace : controllerName ,
80+ parent : rootMessenger ,
81+ } ) ;
82+
83+ messenger . delegate ( {
84+ actions : [ ] ,
85+ events : [ 'TransactionController:stateChange' ] ,
86+ messenger : rootMessenger ,
87+ } ) ;
4588
4689 return {
47- messenger : messenger . getRestricted ( {
48- name : controllerName ,
49- allowedActions : [ ] ,
50- allowedEvents : [ 'TransactionController:stateChange' ] ,
51- } ) ,
52- globalMessenger : messenger ,
90+ messenger,
91+ rootMessenger,
5392 } ;
5493}
5594
@@ -60,8 +99,9 @@ function getRestrictedMessengerWithTransactionEvents() {
6099 * @returns The constructed Phishing Controller.
61100 */
62101function getPhishingController ( options ?: Partial < PhishingControllerOptions > ) {
102+ const { messenger } = setupMessenger ( ) ;
63103 return new PhishingController ( {
64- messenger : getRestrictedMessengerWithTransactionEvents ( ) . messenger ,
104+ messenger,
65105 ...options ,
66106 } ) ;
67107}
@@ -407,8 +447,9 @@ describe('PhishingController', () => {
407447 } ) ;
408448
409449 it ( 'replaces existing phishing lists with completely new list from phishing detection API' , async ( ) => {
450+ const { messenger } = setupMessenger ( ) ;
410451 const controller = new PhishingController ( {
411- messenger : getRestrictedMessengerWithTransactionEvents ( ) . messenger ,
452+ messenger,
412453 stalelistRefreshInterval : 10 ,
413454 state : {
414455 phishingLists : [
@@ -3495,7 +3536,7 @@ describe('URL Scan Cache', () => {
34953536 deriveStateFromMetadata (
34963537 controller . state ,
34973538 controller . metadata ,
3498- 'anonymous ' ,
3539+ 'includeInDebugSnapshot ' ,
34993540 ) ,
35003541 ) . toMatchInlineSnapshot ( `Object {}` ) ;
35013542 } ) ;
@@ -3561,18 +3602,16 @@ describe('URL Scan Cache', () => {
35613602
35623603 describe ( 'Transaction Controller State Change Integration' , ( ) => {
35633604 let controller : PhishingController ;
3564- let globalMessenger : Messenger <
3565- PhishingControllerActions ,
3566- PhishingControllerEvents | TransactionControllerStateChangeEvent
3567- > ;
3605+ let globalMessenger : RootMessenger ;
35683606 let bulkScanTokensSpy : jest . SpyInstance ;
35693607
35703608 beforeEach ( ( ) => {
3571- const messengerSetup = getRestrictedMessengerWithTransactionEvents ( ) ;
3572- globalMessenger = messengerSetup . globalMessenger ;
3609+ const { messenger, rootMessenger } = setupMessenger ( ) ;
3610+
3611+ globalMessenger = rootMessenger ;
35733612
35743613 controller = new PhishingController ( {
3575- messenger : messengerSetup . messenger ,
3614+ messenger,
35763615 } ) ;
35773616
35783617 bulkScanTokensSpy = jest
0 commit comments