diff --git a/packages/no-modal/src/noModal.ts b/packages/no-modal/src/noModal.ts index 238e90457..9b0b2e8aa 100644 --- a/packages/no-modal/src/noModal.ts +++ b/packages/no-modal/src/noModal.ts @@ -412,7 +412,6 @@ export class Web3AuthNoModal extends SafeEventEmitter imp this.removeListener(CONNECTOR_EVENTS.CONNECTED, onConnected); this.removeListener(CONNECTOR_EVENTS.ERRORED, onErrored); this.removeListener(CONNECTOR_EVENTS.AUTHORIZED, onAuthorized); - this.removeListener(CONNECTOR_EVENTS.CONSENT_ACCEPTED, onConsentAccepted); }; const checkCompletion = async () => { @@ -453,10 +452,6 @@ export class Web3AuthNoModal extends SafeEventEmitter imp await checkCompletion(); }; - const onConsentAccepted = async () => { - await completeConnection(); - }; - const onErrored = async (err: Web3AuthError) => { // track connection failed event this.analytics.track(ANALYTICS_EVENTS.CONNECTION_FAILED, { @@ -472,9 +467,6 @@ export class Web3AuthNoModal extends SafeEventEmitter imp if (finalLoginParams.getAuthTokenInfo) { this.once(CONNECTOR_EVENTS.AUTHORIZED, onAuthorized); } - if (this.consentRequired) { - this.once(CONNECTOR_EVENTS.CONSENT_ACCEPTED, onConsentAccepted); - } this.once(CONNECTOR_EVENTS.ERRORED, onErrored); connector.connect(finalLoginParams); this.setCurrentChain(initialChain.chainId); diff --git a/packages/no-modal/test/noModal.test.ts b/packages/no-modal/test/noModal.test.ts index a4f987be7..004033e20 100644 --- a/packages/no-modal/test/noModal.test.ts +++ b/packages/no-modal/test/noModal.test.ts @@ -286,20 +286,8 @@ describe("Web3AuthNoModal", () => { const ethereumProvider = { request: vi.fn().mockResolvedValue(["0xAbC123"]) }; const authorizedListener = vi.fn(); sdk.on(CONNECTOR_EVENTS.AUTHORIZED, authorizedListener); - const connector = new MockConnector({ name: WALLET_CONNECTORS.METAMASK } as never); - (sdk as unknown as { connectors: MockConnector[] }).connectors = [connector]; - sdk.exposeSubscribeToConnectorEvents(connector); - (sdk as unknown as { commonJRPCProvider: Record }).commonJRPCProvider = { - updateProviderEngineProxy: vi.fn(), - removeAllListeners: vi.fn(), - }; - connector.emit(CONNECTOR_EVENTS.CONNECTED, { - connectorName: WALLET_CONNECTORS.METAMASK, - ethereumProvider: ethereumProvider as never, - solanaWallet: null, - reconnected: false, - }); + const connector = emitMetaMaskConnected(sdk, ethereumProvider); await vi.waitFor(() => { expect(sdk.status).toBe(CONNECTOR_STATUS.CONNECTED); }); @@ -328,29 +316,15 @@ describe("Web3AuthNoModal", () => { sdk.on(CONNECTOR_EVENTS.CONSENT_REQUIRING, consentRequiredListener); const ethereumProvider = { request: vi.fn().mockResolvedValue(["0xBEEF"]) }; - const connector = new MockConnector({ name: WALLET_CONNECTORS.METAMASK } as never); - connector.connect = vi.fn(async () => { - connector.emit(CONNECTOR_EVENTS.CONNECTED, { - connectorName: WALLET_CONNECTORS.METAMASK, - ethereumProvider: ethereumProvider as never, - solanaWallet: null, - reconnected: false, - }); - return null; - }); - (sdk as unknown as { connectors: MockConnector[] }).connectors = [connector]; - sdk.exposeSubscribeToConnectorEvents(connector); - (sdk as unknown as { commonJRPCProvider: Record }).commonJRPCProvider = { - updateProviderEngineProxy: vi.fn(), - removeAllListeners: vi.fn(), - }; - const connectionPromise = sdk.connectTo(WALLET_CONNECTORS.METAMASK); + emitMetaMaskConnected(sdk, ethereumProvider); await vi.waitFor(() => { expect(consentRequiredListener).toHaveBeenCalledTimes(1); }); + + expect(sdk.status).toBe(CONNECTOR_STATUS.CONSENT_REQUIRING); await sdk.exposeCompleteConsentAcceptance(); - await expect(connectionPromise).resolves.not.toBeNull(); + expect(sdk.status).toBe(CONNECTOR_STATUS.CONNECTED); }); it("persists user consent when user accepts consent UI", async () => { @@ -364,29 +338,12 @@ describe("Web3AuthNoModal", () => { const consentRequiredListener = vi.fn(); sdk.on(CONNECTOR_EVENTS.CONSENT_REQUIRING, consentRequiredListener); const ethereumProvider = { request: vi.fn().mockResolvedValue(["0xFEEd"]) }; - const connector = new MockConnector({ name: WALLET_CONNECTORS.METAMASK } as never); - connector.connect = vi.fn(async () => { - connector.emit(CONNECTOR_EVENTS.CONNECTED, { - connectorName: WALLET_CONNECTORS.METAMASK, - ethereumProvider: ethereumProvider as never, - solanaWallet: null, - reconnected: false, - }); - return null; - }); - (sdk as unknown as { connectors: MockConnector[] }).connectors = [connector]; - sdk.exposeSubscribeToConnectorEvents(connector); - (sdk as unknown as { commonJRPCProvider: Record }).commonJRPCProvider = { - updateProviderEngineProxy: vi.fn(), - removeAllListeners: vi.fn(), - }; - const connectionPromise = sdk.connectTo(WALLET_CONNECTORS.METAMASK); + emitMetaMaskConnected(sdk, ethereumProvider); await vi.waitFor(() => { expect(consentRequiredListener).toHaveBeenCalledTimes(1); }); await sdk.exposeCompleteConsentAcceptance(); - await connectionPromise; const stateJson = await storage.get(WEB3AUTH_STATE_STORAGE_KEY); const state = JSON.parse(stateJson!); @@ -434,16 +391,36 @@ describe("Web3AuthNoModal", () => { }); }); -function createSdk(overrides: Record = {}, initialState?: Record) { +function createSdk(overrides: Record = {}, initialState?: Record): TestWeb3AuthNoModal { const storage = createMockStorage(); return new TestWeb3AuthNoModal( { clientId: "test-client-id", web3AuthNetwork: "sapphire_devnet", chains: [createChain()], + disableAnalytics: true, storage: { sessionId: storage }, ...overrides, } as never, initialState as never ); } + +function emitMetaMaskConnected(sdk: TestWeb3AuthNoModal, ethereumProvider: unknown): MockConnector { + const connector = new MockConnector({ name: WALLET_CONNECTORS.METAMASK } as never); + (sdk as unknown as { connectors: MockConnector[] }).connectors = [connector]; + sdk.exposeSubscribeToConnectorEvents(connector); + (sdk as unknown as { commonJRPCProvider: Record }).commonJRPCProvider = { + updateProviderEngineProxy: vi.fn(), + removeAllListeners: vi.fn(), + }; + + connector.emit(CONNECTOR_EVENTS.CONNECTED, { + connectorName: WALLET_CONNECTORS.METAMASK, + ethereumProvider: ethereumProvider as never, + solanaWallet: null, + reconnected: false, + }); + + return connector; +}