mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
115 lines
3.8 KiB
JavaScript
115 lines
3.8 KiB
JavaScript
|
const { strict: assert } = require('assert');
|
||
|
const FixtureBuilder = require('../fixture-builder');
|
||
|
const {
|
||
|
withFixtures,
|
||
|
openDapp,
|
||
|
unlockWallet,
|
||
|
largeDelayMs,
|
||
|
veryLargeDelayMs,
|
||
|
WINDOW_TITLES,
|
||
|
} = require('../helpers');
|
||
|
const { SMART_CONTRACTS } = require('../seeder/smart-contracts');
|
||
|
|
||
|
describe('4byte setting', function () {
|
||
|
it('makes a call to 4byte when the setting is on', async function () {
|
||
|
const smartContract = SMART_CONTRACTS.PIGGYBANK;
|
||
|
await withFixtures(
|
||
|
{
|
||
|
dapp: true,
|
||
|
fixtures: new FixtureBuilder()
|
||
|
.withPermissionControllerConnectedToTestDapp()
|
||
|
.build(),
|
||
|
smartContract,
|
||
|
title: this.test.title,
|
||
|
},
|
||
|
async ({ driver, contractRegistry }) => {
|
||
|
const contractAddress = await contractRegistry.getContractAddress(
|
||
|
smartContract,
|
||
|
);
|
||
|
await driver.navigate();
|
||
|
await unlockWallet(driver);
|
||
|
|
||
|
// deploy contract
|
||
|
await openDapp(driver, contractAddress);
|
||
|
|
||
|
// wait for deployed contract, calls and confirms a contract method where ETH is sent
|
||
|
await driver.delay(largeDelayMs);
|
||
|
await driver.clickElement('#depositButton');
|
||
|
|
||
|
await driver.waitForSelector({
|
||
|
css: 'span',
|
||
|
text: 'Deposit initiated',
|
||
|
});
|
||
|
|
||
|
await driver.waitUntilXWindowHandles(3);
|
||
|
await driver.switchToWindowWithTitle(WINDOW_TITLES.Notification);
|
||
|
const actionElement = await driver.waitForSelector({
|
||
|
css: '.confirm-page-container-summary__action__name',
|
||
|
text: 'Deposit',
|
||
|
});
|
||
|
assert.equal(await actionElement.getText(), 'DEPOSIT');
|
||
|
},
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('does not try to get contract method name from 4byte when the setting is off', async function () {
|
||
|
const smartContract = SMART_CONTRACTS.PIGGYBANK;
|
||
|
await withFixtures(
|
||
|
{
|
||
|
dapp: true,
|
||
|
fixtures: new FixtureBuilder()
|
||
|
.withPermissionControllerConnectedToTestDapp()
|
||
|
.build(),
|
||
|
smartContract,
|
||
|
title: this.test.title,
|
||
|
},
|
||
|
async ({ driver, contractRegistry }) => {
|
||
|
const contractAddress = await contractRegistry.getContractAddress(
|
||
|
smartContract,
|
||
|
);
|
||
|
await driver.navigate();
|
||
|
await unlockWallet(driver);
|
||
|
|
||
|
// goes to the settings screen
|
||
|
await driver.clickElement(
|
||
|
'[data-testid="account-options-menu-button"]',
|
||
|
);
|
||
|
await driver.clickElement({ text: 'Settings', tag: 'div' });
|
||
|
await driver.clickElement({ text: 'Security & privacy', tag: 'div' });
|
||
|
|
||
|
// turns off 4Byte Directory contract method name resolution
|
||
|
await driver.clickElement(
|
||
|
'[data-testid="4byte-resolution-container"] .toggle-button',
|
||
|
);
|
||
|
|
||
|
// deploy contract
|
||
|
await openDapp(driver, contractAddress);
|
||
|
|
||
|
// wait for deployed contract, calls and confirms a contract method where ETH is sent
|
||
|
await driver.findClickableElement('#depositButton');
|
||
|
await driver.clickElement('#depositButton');
|
||
|
|
||
|
await driver.waitForSelector({
|
||
|
css: 'span',
|
||
|
text: 'Deposit initiated',
|
||
|
});
|
||
|
|
||
|
await driver.waitUntilXWindowHandles(3);
|
||
|
await driver.switchToWindowWithTitle(WINDOW_TITLES.Notification);
|
||
|
const contractInteraction = 'Contract interaction';
|
||
|
const actionElement = await driver.waitForSelector({
|
||
|
css: '.confirm-page-container-summary__action__name',
|
||
|
text: contractInteraction,
|
||
|
});
|
||
|
// We add a delay here to wait for any potential UI changes
|
||
|
await driver.delay(veryLargeDelayMs);
|
||
|
// css text-transform: uppercase is applied to the text
|
||
|
assert.equal(
|
||
|
await actionElement.getText(),
|
||
|
contractInteraction.toUpperCase(),
|
||
|
);
|
||
|
},
|
||
|
);
|
||
|
});
|
||
|
});
|