1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 01:39:44 +01:00

Add e2e test for reset account (#16996)

* add test for reset account
This commit is contained in:
chloeYue 2022-12-22 14:16:09 +01:00 committed by GitHub
parent d222f652c3
commit d66db28ae6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 296 additions and 0 deletions

View File

@ -445,6 +445,30 @@ class FixtureBuilder {
return this;
}
withIncomingTransactionsControllerOneTransaction() {
return this.withIncomingTransactionsController({
incomingTransactions: {
'0xf1af8286e4fa47578c2aec5f08c108290643df978ebc766d72d88476eee90bab': {
blockNumber: '1',
chainId: '0x539',
hash: '0xf1af8286e4fa47578c2aec5f08c108290643df978ebc766d72d88476eee90bab',
id: 5748272735958807,
metamaskNetworkId: '1337',
status: 'confirmed',
time: 1671635520000,
txParams: {
from: '0xc87261ba337be737fa744f50e7aaf4a920bdfcd6',
gas: '0x5208',
gasPrice: '0x329af9707',
to: '0x5cfe73b6021e818b776b421b1c4db2474086a7e1',
value: '0xDE0B6B3A7640000',
},
type: 'incoming',
},
},
});
}
withKeyringController(data) {
merge(this.fixture.data.KeyringController, data);
return this;
@ -1102,6 +1126,207 @@ class FixtureBuilder {
});
}
withTransactionControllerCompletedTransaction() {
return this.withTransactionController({
transactions: {
5748272735958801: {
chainId: '0x539',
history: [
{
chainId: 0x539,
id: 5748272735958801,
loadingDefaults: true,
metamaskNetworkId: '1337',
origin: 'metamask',
status: 'unapproved',
time: 1671635506502,
txParams: {
from: '0x5cfe73b6021e818b776b421b1c4db2474086a7e1',
gas: '0x5208',
maxFeePerGas: '0x4c03c96f8',
maxPriorityFeePerGas: '0x59682f00',
to: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
type: '0x2',
value: '0xde0b6b3a7640000',
},
type: 'simpleSend',
},
[
{
note: 'Added new unapproved transaction.',
op: 'replace',
path: '/loadingDefaults',
timestamp: 1671635506520,
value: false,
},
],
[
{
note: 'confTx: user approved transaction',
op: 'replace',
path: '/txParams/maxFeePerGas',
timestamp: 1671635510589,
value: '0x4d7fc07fb',
},
],
[
{
note: 'txStateManager: setting status to approved',
op: 'replace',
path: '/status',
timestamp: 1671635510589,
value: 'approved',
},
],
[
{
note: 'transactions#approveTransaction',
op: 'add',
path: '/txParams/nonce',
timestamp: 1671635510592,
value: '0x2',
},
{
op: 'add',
path: '/nonceDetails',
value: {
local: {
details: {
highest: 2,
startPoint: 2,
},
name: 'local',
nonce: 2,
},
network: {
details: {
baseCount: 2,
blockNumber: '0x7cbf93',
},
name: 'network',
nonce: 2,
},
params: {
highestLocallyConfirmed: 0,
highestSuggested: 2,
nextNetworkNonce: 2,
},
},
},
],
[
{
note: 'txStateManager: setting status to signed',
op: 'replace',
path: '/status',
timestamp: 1671635510651,
value: 'signed',
},
],
[
{
note: 'transactions#publishTransaction',
op: 'add',
path: '/rawTx',
timestamp: 1671635510653,
value:
'0x02f87205028459682f008504d7fc07fb825208947d17148ed7ec802e4458e94deec1ef28aef645e987038d7ea4c6800080c001a0c60aeaef1556a52b009e3973f06c64d5cd6dc935463afd0d2b1c00661655e47ea061b121db8f2cb2241b1454d1794256e5634d26a5b873e89a816efe210377492a',
},
],
[
{
note: 'txStateManager: setting status to submitted',
op: 'replace',
path: '/status',
timestamp: 1671635510753,
value: 'submitted',
},
],
[
{
note: 'txStateManager: setting status to confirmed',
op: 'replace',
path: '/status',
timestamp: 1671635522978,
value: 'confirmed',
},
{
op: 'add',
path: '/txReceipt',
value: {
blockNumber: '7cbf95',
from: '0x5cfe73b6021e818b776b421b1c4db2474086a7e1',
gasUsed: '5208',
status: '0x1',
to: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
type: '0x2',
},
},
],
[
{
note: 'transactions#confirmTransaction - add txReceipt',
op: 'replace',
path: '/blockTimestamp',
timestamp: 1671635522999,
value: '63a32240',
},
],
],
id: 5748272735958801,
loadingDefaults: false,
metamaskNetworkId: '5',
nonceDetails: {
local: {
details: {
highest: 2,
startPoint: 2,
},
name: 'local',
nonce: 2,
},
network: {
details: {
baseCount: 2,
blockNumber: '0x7cbf93',
},
name: 'network',
nonce: 2,
},
params: {
highestLocallyConfirmed: 0,
highestSuggested: 2,
nextNetworkNonce: 2,
},
},
origin: 'metamask',
status: 'confirmed',
submittedTime: 1671635510753,
time: 1671635506502,
txParams: {
from: '0x5cfe73b6021e818b776b421b1c4db2474086a7e1',
gas: '0x5208',
to: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
type: '0x2',
value: '0xde0b6b3a7640000',
},
txReceipt: {
blockNumber: {
length: 1,
negative: 0,
words: [8175509, null],
},
from: '0x5cfe73b6021e818b776b421b1c4db2474086a7e1',
status: '0x1',
to: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
type: '0x2',
},
type: 'simpleSend',
},
},
});
}
withNetworkSupportEIP1559() {
merge(this.fixture.data.NetworkController, {
networkDetails: {

View File

@ -0,0 +1,71 @@
const { strict: assert } = require('assert');
const { convertToHexValue, withFixtures } = require('../helpers');
const FixtureBuilder = require('../fixture-builder');
describe('Reset account', function () {
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////
// When user get stuck with pending transactions, one can reset the account by clicking the 'Reset account' //
// button in settings, advanced tab. This functionality will clear all the send transactions history. //
// Note that the receive transactions history will be kept and it only only affects the current network. //
// ///////////////////////////////////////////////////////////////////////////////////////////////////////////
it('User can reset account via the advanced setting tab, ', async function () {
const ganacheOptions = {
accounts: [
{
secretKey:
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
balance: convertToHexValue(25000000000000000000),
},
],
};
await withFixtures(
{
fixtures: new FixtureBuilder()
.withTransactionControllerCompletedTransaction()
.withIncomingTransactionsControllerOneTransaction()
.build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
// Check send transaction and receive transaction history are all displayed
await driver.clickElement('[data-testid="home__activity-tab"]');
await driver.waitForSelector(
{ css: '.list-item__title', text: 'Send' },
{ timeout: 10000 },
);
await driver.waitForSelector(
{ css: '.list-item__title', text: 'Receive' },
{ timeout: 10000 },
);
// Reset account
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({
css: '.tab-bar__tab__content__title',
text: 'Advanced',
});
await driver.clickElement({ text: 'Reset account', tag: 'button' });
await driver.clickElement({ text: 'Reset', tag: 'button' });
await driver.navigate();
// Check send transaction history is cleared and receive transaction history is kept
const sendTransaction = await driver.isElementPresent({
css: '.list-item__title',
text: 'Send',
});
const receiveTransaction = await driver.isElementPresent({
css: '.list-item__title',
text: 'Receive',
});
assert.equal(sendTransaction, false);
assert.equal(receiveTransaction, true);
},
);
});
});