diff --git a/test/e2e/fixture-builder.js b/test/e2e/fixture-builder.js index 3c1128331ba6..5dd7c3fa4393 100644 --- a/test/e2e/fixture-builder.js +++ b/test/e2e/fixture-builder.js @@ -496,6 +496,42 @@ class FixtureBuilder { }); } + withPermissionControllerConnectedToTestDappWithChain() { + return this.withPermissionController({ + subjects: { + [DAPP_URL]: { + origin: DAPP_URL, + permissions: { + eth_accounts: { + id: 'ZaqPEWxyhNCJYACFw93jE', + parentCapability: 'eth_accounts', + invoker: DAPP_URL, + caveats: [ + { + type: 'restrictReturnedAccounts', + value: [DEFAULT_FIXTURE_ACCOUNT.toLowerCase()], + }, + ], + date: 1664388714636, + }, + 'endowment:permitted-chains': { + id: 'D7cac0a2e3BD8f349506a', + parentCapability: 'endowment:permitted-chains', + invoker: DAPP_URL, + caveats: [ + { + type: 'restrictNetworkSwitching', + value: ['0x539'], + }, + ], + date: 1664388714637, + }, + }, + }, + }, + }); + } + withPermissionControllerConnectedToTestDappWithTwoAccounts() { const subjects = { [DAPP_URL]: { diff --git a/test/e2e/json-rpc/wallet_revokePermissions.spec.ts b/test/e2e/json-rpc/wallet_revokePermissions.spec.ts index 5c444b5ecf01..8d7a06ac4ccc 100644 --- a/test/e2e/json-rpc/wallet_revokePermissions.spec.ts +++ b/test/e2e/json-rpc/wallet_revokePermissions.spec.ts @@ -1,16 +1,17 @@ import { strict as assert } from 'assert'; -import { ACCOUNT_1, withFixtures } from '../helpers'; +import { PermissionConstraint } from '@metamask/permission-controller'; +import { withFixtures } from '../helpers'; import FixtureBuilder from '../fixture-builder'; import TestDapp from '../page-objects/pages/test-dapp'; import { loginWithBalanceValidation } from '../page-objects/flows/login.flow'; describe('Revoke Dapp Permissions', function () { - it('should revoke dapp permissions ', async function () { + it('should revoke dapp permissions for "eth_accounts"', async function () { await withFixtures( { dapp: true, fixtures: new FixtureBuilder() - .withPermissionControllerConnectedToTestDapp() + .withPermissionControllerConnectedToTestDappWithChain() .build(), title: this.test?.fullTitle(), }, @@ -18,9 +19,22 @@ describe('Revoke Dapp Permissions', function () { await loginWithBalanceValidation(driver); const testDapp = new TestDapp(driver); await testDapp.openTestDappPage(); - await testDapp.check_connectedAccounts(ACCOUNT_1); - // wallet_revokePermissions request + const beforeGetPermissionsRequest = JSON.stringify({ + jsonrpc: '2.0', + method: 'wallet_getPermissions', + }); + const beforeGetPermissionsResult = await driver.executeScript( + `return window.ethereum.request(${beforeGetPermissionsRequest})`, + ); + const beforeGetPermissionsNames = beforeGetPermissionsResult.map( + (permission: PermissionConstraint) => permission.parentCapability, + ); + assert.deepEqual(beforeGetPermissionsNames, [ + 'eth_accounts', + 'endowment:permitted-chains', + ]); + const revokePermissionsRequest = JSON.stringify({ jsonrpc: '2.0', method: 'wallet_revokePermissions', @@ -30,14 +44,82 @@ describe('Revoke Dapp Permissions', function () { }, ], }); + const revokePermissionsResult = await driver.executeScript( + `return window.ethereum.request(${revokePermissionsRequest})`, + ); + assert.deepEqual(revokePermissionsResult, null); + + const afterGetPermissionsRequest = JSON.stringify({ + jsonrpc: '2.0', + method: 'wallet_getPermissions', + }); + const afterGetPermissionsResult = await driver.executeScript( + `return window.ethereum.request(${afterGetPermissionsRequest})`, + ); + const afterGetPermissionsNames = afterGetPermissionsResult.map( + (permission: PermissionConstraint) => permission.parentCapability, + ); + assert.deepEqual(afterGetPermissionsNames, [ + 'endowment:permitted-chains', + ]); + }, + ); + }); + + it('should revoke dapp permissions for "endowment:permitted-chains"', async function () { + await withFixtures( + { + dapp: true, + fixtures: new FixtureBuilder() + .withPermissionControllerConnectedToTestDappWithChain() + .build(), + title: this.test?.fullTitle(), + }, + async ({ driver }) => { + await loginWithBalanceValidation(driver); + const testDapp = new TestDapp(driver); + await testDapp.openTestDappPage(); + + const beforeGetPermissionsRequest = JSON.stringify({ + jsonrpc: '2.0', + method: 'wallet_getPermissions', + }); + const beforeGetPermissionsResult = await driver.executeScript( + `return window.ethereum.request(${beforeGetPermissionsRequest})`, + ); + const beforeGetPermissionsNames = beforeGetPermissionsResult.map( + (permission: PermissionConstraint) => permission.parentCapability, + ); + assert.deepEqual(beforeGetPermissionsNames, [ + 'eth_accounts', + 'endowment:permitted-chains', + ]); - const result = await driver.executeScript( + const revokePermissionsRequest = JSON.stringify({ + jsonrpc: '2.0', + method: 'wallet_revokePermissions', + params: [ + { + 'endowment:permitted-chains': {}, + }, + ], + }); + const revokePermissionsResult = await driver.executeScript( `return window.ethereum.request(${revokePermissionsRequest})`, ); - // Response of method call - assert.deepEqual(result, null); + assert.deepEqual(revokePermissionsResult, null); - await testDapp.check_connectedAccounts(ACCOUNT_1, false); + const afterGetPermissionsRequest = JSON.stringify({ + jsonrpc: '2.0', + method: 'wallet_getPermissions', + }); + const afterGetPermissionsResult = await driver.executeScript( + `return window.ethereum.request(${afterGetPermissionsRequest})`, + ); + const afterGetPermissionsNames = afterGetPermissionsResult.map( + (permission: PermissionConstraint) => permission.parentCapability, + ); + assert.deepEqual(afterGetPermissionsNames, ['eth_accounts']); }, ); }); diff --git a/test/e2e/tests/account/snap-account-signatures-and-disconnects.spec.ts b/test/e2e/tests/account/snap-account-signatures-and-disconnects.spec.ts index d3c177ff7fdd..7a97130a3ef5 100644 --- a/test/e2e/tests/account/snap-account-signatures-and-disconnects.spec.ts +++ b/test/e2e/tests/account/snap-account-signatures-and-disconnects.spec.ts @@ -19,11 +19,7 @@ describe('Snap Account Signatures and Disconnects @no-mmi', function (this: Suit await withFixtures( { dapp: true, - fixtures: new FixtureBuilder() - .withPermissionControllerConnectedToTestDapp({ - restrictReturnedAccounts: false, - }) - .build(), + fixtures: new FixtureBuilder().build(), title: this.test?.fullTitle(), }, async ({ driver }: { driver: Driver }) => { @@ -49,9 +45,12 @@ describe('Snap Account Signatures and Disconnects @no-mmi', function (this: Suit await experimentalSettings.check_pageIsLoaded(); await experimentalSettings.toggleRedesignedSignature(); - // Open the Test Dapp and signTypedDataV3 + // Open the Test Dapp and connect const testDapp = new TestDapp(driver); await testDapp.openTestDappPage(); + await testDapp.connectAccount({ publicAddress: newPublicKey }); + + // SignedTypedDataV3 with Test Dapp await signTypedDataV3WithSnapAccount(driver, newPublicKey, false, true); // Disconnect from Test Dapp and reconnect to Test Dapp diff --git a/test/e2e/tests/account/snap-account-signatures.spec.ts b/test/e2e/tests/account/snap-account-signatures.spec.ts index e04987561fc5..dc9ef21d2e52 100644 --- a/test/e2e/tests/account/snap-account-signatures.spec.ts +++ b/test/e2e/tests/account/snap-account-signatures.spec.ts @@ -30,11 +30,7 @@ describe('Snap Account Signatures @no-mmi', function (this: Suite) { await withFixtures( { dapp: true, - fixtures: new FixtureBuilder() - .withPermissionControllerConnectedToTestDapp({ - restrictReturnedAccounts: false, - }) - .build(), + fixtures: new FixtureBuilder().build(), title, }, async ({ driver }: { driver: Driver }) => { @@ -62,8 +58,12 @@ describe('Snap Account Signatures @no-mmi', function (this: Suite) { await experimentalSettings.check_pageIsLoaded(); await experimentalSettings.toggleRedesignedSignature(); + // Connect the SSK account + const testDapp = new TestDapp(driver); + await testDapp.openTestDappPage(); + await testDapp.connectAccount({ publicAddress: newPublicKey }); + // Run all 5 signature types - await new TestDapp(driver).openTestDappPage(); await personalSignWithSnapAccount( driver, newPublicKey,