1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-01 21:57:06 +01:00
metamask-extension/test/e2e/tests/account-details.spec.js

207 lines
6.4 KiB
JavaScript
Raw Normal View History

const { strict: assert } = require('assert');
const { convertToHexValue, withFixtures, unlockWallet } = require('../helpers');
const FixtureBuilder = require('../fixture-builder');
const { tEn } = require('../../lib/i18n-helpers');
describe('Show account details', function () {
const ganacheOptions = {
accounts: [
{
secretKey:
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
balance: convertToHexValue(25000000000000000000),
},
],
};
const PASSWORD = 'correct horse battery staple';
const wrongPassword = 'test test test test';
async function revealPrivateKey(driver, useAccountMenu = true) {
if (useAccountMenu) {
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"]');
} else {
// Global Menu
await driver.clickElement('[data-testid="account-options-menu-button"]');
await driver.clickElement('[data-testid="account-list-menu-details"]');
}
await driver.clickElement({ css: 'button', text: tEn('showPrivateKey') });
await driver.fill('#account-details-authenticate', PASSWORD);
await driver.press('#account-details-authenticate', driver.Key.ENTER);
await driver.holdMouseDownOnElement(
{
text: tEn('holdToRevealPrivateKey'),
tag: 'span',
},
2000,
);
const keyContainer = await driver.findElement(
'[data-testid="account-details-key"]',
);
const key = await keyContainer.getText();
return key;
}
it('should show the QR code for the account', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await unlockWallet(driver);
Release MultiChain 0.5 (#18903) * Show portfolio icon in ETH overview * Show new copy button in QR code modal * Show address copy button in wallet overview * Update connected status component * Remove legacy MenuBar * Remove legacy ImportTokenLink * Remove AssetListItem * Remove DetectedTokensLink * Remove legacy AppHeader * Remove MULTICHAIN flag from builds.yml * Remove legacy AccountMenu * FIX: Token cell snapshot * Add data-testid for Account Picker * Remove multichain check in LoadingNetworkScreen * Remove MULTICHAIN check for AccountDetailsModal * Remove MULTICHAIN check for AssetList * Update QR dimensions * Remove MULTICHAIN declaration from metamaskrc.dist * Implement PickerNetwork and NetworkListMenu in onboarding * Remove legacy NetworkDropdown and Dropdown * Remove documentation about legacy account menu * FIX: Fixes route tests for missing data-testid=network-display * Fix account-menu-icon data-testid * Fix TokenCell test * FIX Onboarding Flow tests * Remove unused locales from AccountMenu removal * E2E: Fix Import Secret Recovery Phrase: logs out of the vault * E2E: Fix Show account details: should show the QR code for the account * E2E: Fix add-account.spec.js * E2E: Fix state-logs.spec.js * E2E: Fix lock-account.spec.js * E2E: Fix settings-general.spec.js * E2E: Fix advanced-settings.spec.js * E2E: Fix auto-lock.spec.js * E2E: Fix backup-restore.spec.js * E2E: Fix clear-activity.spec.js * E2E: Fix settings-search.spec.js * E2E: Fix encrypt-decrypt.spec.js * E2E: Fix dapp-interactions.spec.js * E2E: Fix test-snap-management.spec.js * E2E: Fix add-custom-network.spec.js * E2E: Fix from-import-ui.spec.js * E2E: Fix provider-api.spec.js * E2E: Fix chain-interactions.spec.js * E2E: Fix custom-rpc-history.spec.js * Remove network icon from overview components * E2E: Fix user-actions-benchmark.js * E2E: Fix benchmark.js * E2E: Fix add-hide-token.spec.js * E2E: Fix address-book.spec.js * E2E: Fix custom-token-add-approve.spec.js * E2E: Fix incremental-security.spec.js * E2E: Fix metamask-responsive-ui.spec.js * E2E: Onboarding.spec.js * E2E: Fix permissions.spec.js * E2E: Fix send-hex-address.spec.js * E2E: Fix send-to-contract.spec.js * Remove dead AccountOptionsMenu test * E2E: Fix token-details.spec.js * E2E: Fix switch-custom-network.spec.js * E2E: Fix metamask-ui.spec.js * Revert "UX Multichain: updated border top for activity list (#19176)" This reverts commit 15598f2a23d936d3c468a1b8849ec3baaccee4cd. * E2Es: Fix test-snap-management.spec.js and test-snap-notification.spec.js * E2Es: Fix add-account.spec.js after flaky test fixes * e2e flaky test * adds back the mmi options * scss fix * test fix * removes unnecessary double quotes * Prevent double logos on login screen * Update ui/components/ui/list-item/index.scss Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net> --------- Co-authored-by: seaona <mariona@gmx.es> Co-authored-by: Antonio Regadas <antonio.regadas@consensys.net> Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net>
2023-06-01 23:14:38 +02:00
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
Release MultiChain 0.5 (#18903) * Show portfolio icon in ETH overview * Show new copy button in QR code modal * Show address copy button in wallet overview * Update connected status component * Remove legacy MenuBar * Remove legacy ImportTokenLink * Remove AssetListItem * Remove DetectedTokensLink * Remove legacy AppHeader * Remove MULTICHAIN flag from builds.yml * Remove legacy AccountMenu * FIX: Token cell snapshot * Add data-testid for Account Picker * Remove multichain check in LoadingNetworkScreen * Remove MULTICHAIN check for AccountDetailsModal * Remove MULTICHAIN check for AssetList * Update QR dimensions * Remove MULTICHAIN declaration from metamaskrc.dist * Implement PickerNetwork and NetworkListMenu in onboarding * Remove legacy NetworkDropdown and Dropdown * Remove documentation about legacy account menu * FIX: Fixes route tests for missing data-testid=network-display * Fix account-menu-icon data-testid * Fix TokenCell test * FIX Onboarding Flow tests * Remove unused locales from AccountMenu removal * E2E: Fix Import Secret Recovery Phrase: logs out of the vault * E2E: Fix Show account details: should show the QR code for the account * E2E: Fix add-account.spec.js * E2E: Fix state-logs.spec.js * E2E: Fix lock-account.spec.js * E2E: Fix settings-general.spec.js * E2E: Fix advanced-settings.spec.js * E2E: Fix auto-lock.spec.js * E2E: Fix backup-restore.spec.js * E2E: Fix clear-activity.spec.js * E2E: Fix settings-search.spec.js * E2E: Fix encrypt-decrypt.spec.js * E2E: Fix dapp-interactions.spec.js * E2E: Fix test-snap-management.spec.js * E2E: Fix add-custom-network.spec.js * E2E: Fix from-import-ui.spec.js * E2E: Fix provider-api.spec.js * E2E: Fix chain-interactions.spec.js * E2E: Fix custom-rpc-history.spec.js * Remove network icon from overview components * E2E: Fix user-actions-benchmark.js * E2E: Fix benchmark.js * E2E: Fix add-hide-token.spec.js * E2E: Fix address-book.spec.js * E2E: Fix custom-token-add-approve.spec.js * E2E: Fix incremental-security.spec.js * E2E: Fix metamask-responsive-ui.spec.js * E2E: Onboarding.spec.js * E2E: Fix permissions.spec.js * E2E: Fix send-hex-address.spec.js * E2E: Fix send-to-contract.spec.js * Remove dead AccountOptionsMenu test * E2E: Fix token-details.spec.js * E2E: Fix switch-custom-network.spec.js * E2E: Fix metamask-ui.spec.js * Revert "UX Multichain: updated border top for activity list (#19176)" This reverts commit 15598f2a23d936d3c468a1b8849ec3baaccee4cd. * E2Es: Fix test-snap-management.spec.js and test-snap-notification.spec.js * E2Es: Fix add-account.spec.js after flaky test fixes * e2e flaky test * adds back the mmi options * scss fix * test fix * removes unnecessary double quotes * Prevent double logos on login screen * Update ui/components/ui/list-item/index.scss Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net> --------- Co-authored-by: seaona <mariona@gmx.es> Co-authored-by: Antonio Regadas <antonio.regadas@consensys.net> Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net>
2023-06-01 23:14:38 +02:00
'[data-testid="account-list-item-menu-button"]',
);
Release MultiChain 0.5 (#18903) * Show portfolio icon in ETH overview * Show new copy button in QR code modal * Show address copy button in wallet overview * Update connected status component * Remove legacy MenuBar * Remove legacy ImportTokenLink * Remove AssetListItem * Remove DetectedTokensLink * Remove legacy AppHeader * Remove MULTICHAIN flag from builds.yml * Remove legacy AccountMenu * FIX: Token cell snapshot * Add data-testid for Account Picker * Remove multichain check in LoadingNetworkScreen * Remove MULTICHAIN check for AccountDetailsModal * Remove MULTICHAIN check for AssetList * Update QR dimensions * Remove MULTICHAIN declaration from metamaskrc.dist * Implement PickerNetwork and NetworkListMenu in onboarding * Remove legacy NetworkDropdown and Dropdown * Remove documentation about legacy account menu * FIX: Fixes route tests for missing data-testid=network-display * Fix account-menu-icon data-testid * Fix TokenCell test * FIX Onboarding Flow tests * Remove unused locales from AccountMenu removal * E2E: Fix Import Secret Recovery Phrase: logs out of the vault * E2E: Fix Show account details: should show the QR code for the account * E2E: Fix add-account.spec.js * E2E: Fix state-logs.spec.js * E2E: Fix lock-account.spec.js * E2E: Fix settings-general.spec.js * E2E: Fix advanced-settings.spec.js * E2E: Fix auto-lock.spec.js * E2E: Fix backup-restore.spec.js * E2E: Fix clear-activity.spec.js * E2E: Fix settings-search.spec.js * E2E: Fix encrypt-decrypt.spec.js * E2E: Fix dapp-interactions.spec.js * E2E: Fix test-snap-management.spec.js * E2E: Fix add-custom-network.spec.js * E2E: Fix from-import-ui.spec.js * E2E: Fix provider-api.spec.js * E2E: Fix chain-interactions.spec.js * E2E: Fix custom-rpc-history.spec.js * Remove network icon from overview components * E2E: Fix user-actions-benchmark.js * E2E: Fix benchmark.js * E2E: Fix add-hide-token.spec.js * E2E: Fix address-book.spec.js * E2E: Fix custom-token-add-approve.spec.js * E2E: Fix incremental-security.spec.js * E2E: Fix metamask-responsive-ui.spec.js * E2E: Onboarding.spec.js * E2E: Fix permissions.spec.js * E2E: Fix send-hex-address.spec.js * E2E: Fix send-to-contract.spec.js * Remove dead AccountOptionsMenu test * E2E: Fix token-details.spec.js * E2E: Fix switch-custom-network.spec.js * E2E: Fix metamask-ui.spec.js * Revert "UX Multichain: updated border top for activity list (#19176)" This reverts commit 15598f2a23d936d3c468a1b8849ec3baaccee4cd. * E2Es: Fix test-snap-management.spec.js and test-snap-notification.spec.js * E2Es: Fix add-account.spec.js after flaky test fixes * e2e flaky test * adds back the mmi options * scss fix * test fix * removes unnecessary double quotes * Prevent double logos on login screen * Update ui/components/ui/list-item/index.scss Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net> --------- Co-authored-by: seaona <mariona@gmx.es> Co-authored-by: Antonio Regadas <antonio.regadas@consensys.net> Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net>
2023-06-01 23:14:38 +02:00
await driver.clickElement('[data-testid="account-list-menu-details"');
const qrCode = await driver.findElement('.qr-code__wrapper');
assert.equal(await qrCode.isDisplayed(), true);
},
);
});
it('should show the correct private key from account menu', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await unlockWallet(driver);
const key = await revealPrivateKey(driver);
assert.equal(
key,
'7c9529a67102755b7e6102d6d950ac5d5863c98713805cec576b945b15b71eac',
);
},
);
});
it('should show the correct private key for an unselected account from account menu', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await unlockWallet(driver);
// Create and focus on different account
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="multichain-account-menu-popover-add-account"]',
);
await driver.fill('[placeholder="Account 2"]', '2nd account');
await driver.clickElement({ text: tEn('create'), tag: 'button' });
const key = await revealPrivateKey(driver);
assert.equal(
key,
'7c9529a67102755b7e6102d6d950ac5d5863c98713805cec576b945b15b71eac',
);
},
);
});
it('should show the correct private key from global menu', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await unlockWallet(driver);
const key = await revealPrivateKey(driver, false);
assert.equal(
key,
'7c9529a67102755b7e6102d6d950ac5d5863c98713805cec576b945b15b71eac',
);
},
);
});
it('should show the correct private key for a second account from global menu', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await unlockWallet(driver);
// Create and focus on different account
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="multichain-account-menu-popover-add-account"]',
);
await driver.fill('[placeholder="Account 2"]', '2nd account');
await driver.clickElement({ text: tEn('create'), tag: 'button' });
const key = await revealPrivateKey(driver, false);
assert.equal(
key,
'f444f52ea41e3a39586d7069cb8e8233e9f6b9dea9cbb700cce69ae860661cc8',
);
},
);
});
it('should not reveal private key when password is incorrect', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
title: this.test.title,
failOnConsoleError: false,
},
async ({ driver }) => {
await driver.navigate();
await unlockWallet(driver);
// Attempt to reveal private key from account menu
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"]');
await driver.clickElement({
css: 'button',
text: tEn('showPrivateKey'),
});
// Enter incorrect password
await driver.fill('#account-details-authenticate', wrongPassword);
await driver.press('#account-details-authenticate', driver.Key.ENTER);
// Display error when password is incorrect
const passwordErrorIsDisplayed = await driver.isElementPresent({
css: '.mm-help-text',
text: 'Incorrect Password.',
});
assert.equal(passwordErrorIsDisplayed, true);
},
);
});
});