aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorEsteban MIno <efmino@uc.cl>2018-07-04 01:23:15 +0800
committerEsteban MIno <efmino@uc.cl>2018-07-04 01:23:15 +0800
commit0494b2fc8a84a533227d25e869a95226f99734af (patch)
treeda39134cf8d82c4e208f9461a9f4391b8f47fd28 /test
parent03fd4355af8ceae9a1d2cad04e12a4f86a9f36b7 (diff)
parent1f0cf11af1c94e750bbc4c5238c3ee028350a6c6 (diff)
downloadtangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.tar
tangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.tar.gz
tangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.tar.bz2
tangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.tar.lz
tangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.tar.xz
tangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.tar.zst
tangerine-wallet-browser-0494b2fc8a84a533227d25e869a95226f99734af.zip
Merge branch 'develop' into detectTokenFeature
Diffstat (limited to 'test')
-rw-r--r--test/base.conf.js2
-rw-r--r--test/e2e/beta/contract-test/contract.js66
-rw-r--r--test/e2e/beta/contract-test/index.html8
-rw-r--r--test/e2e/beta/from-import-beta-ui.spec.js159
-rw-r--r--test/e2e/beta/helpers.js14
-rw-r--r--test/e2e/beta/metamask-beta-ui.spec.js492
-rwxr-xr-xtest/e2e/beta/run-all.sh4
-rw-r--r--test/e2e/metamask.spec.js13
-rw-r--r--test/flat.conf.js2
-rw-r--r--test/integration/lib/add-token.js2
-rw-r--r--test/integration/lib/confirm-sig-requests.js11
-rw-r--r--test/integration/lib/currency-localization.js2
-rw-r--r--test/integration/lib/mascara-first-time.js2
-rw-r--r--test/integration/lib/send-new-ui.js6
-rw-r--r--test/integration/lib/tx-list-items.js3
-rw-r--r--test/lib/mock-encryptor.js2
-rw-r--r--test/lib/mock-tx-gen.js6
-rw-r--r--test/lib/react-trigger-change.js112
-rw-r--r--test/lib/util.js6
-rw-r--r--test/mascara.conf.js4
-rw-r--r--test/screens/new-ui.js30
-rw-r--r--test/unit/app/account-import-strategies.spec.js3
-rw-r--r--test/unit/app/controllers/address-book-controller.js2
-rw-r--r--test/unit/app/controllers/network-contoller-test.js3
-rw-r--r--test/unit/app/controllers/transactions/nonce-tracker-test.js14
-rw-r--r--test/unit/app/controllers/transactions/pending-tx-test.js57
-rw-r--r--test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js6
-rw-r--r--test/unit/app/controllers/transactions/tx-controller-test.js8
-rw-r--r--test/unit/app/controllers/transactions/tx-gas-util-test.js1
-rw-r--r--test/unit/app/controllers/transactions/tx-state-history-helper-test.js41
-rw-r--r--test/unit/app/controllers/transactions/tx-state-manager-test.js53
-rw-r--r--test/unit/app/controllers/transactions/tx-utils-test.js4
-rw-r--r--test/unit/app/edge-encryptor-test.js10
-rw-r--r--test/unit/app/nodeify-test.js8
-rw-r--r--test/unit/app/pending-balance-test.js7
-rw-r--r--test/unit/app/seed-phrase-verifier-test.js93
-rw-r--r--test/unit/app/util-test.js2
-rw-r--r--test/unit/components/balance-component-test.js2
-rw-r--r--test/unit/components/bn-as-decimal-input-test.js4
-rw-r--r--test/unit/components/pending-tx-test.js2
-rw-r--r--test/unit/migrations/022-test.js16
-rw-r--r--test/unit/migrations/023-test.js12
-rw-r--r--test/unit/migrations/024-test.js11
-rw-r--r--test/unit/migrations/025-test.js10
-rw-r--r--test/unit/migrations/template-test.js1
-rw-r--r--test/unit/responsive/components/dropdown-test.js58
46 files changed, 832 insertions, 542 deletions
diff --git a/test/base.conf.js b/test/base.conf.js
index 956dce011..ccb91cc65 100644
--- a/test/base.conf.js
+++ b/test/base.conf.js
@@ -1,7 +1,7 @@
// Karma configuration
// Generated on Mon Sep 11 2017 18:45:48 GMT-0700 (PDT)
-module.exports = function(config) {
+module.exports = function (config) {
return {
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: process.cwd(),
diff --git a/test/e2e/beta/contract-test/contract.js b/test/e2e/beta/contract-test/contract.js
new file mode 100644
index 000000000..18c866f21
--- /dev/null
+++ b/test/e2e/beta/contract-test/contract.js
@@ -0,0 +1,66 @@
+/*
+The `piggybankContract` is compiled from:
+
+ pragma solidity ^0.4.0;
+ contract PiggyBank {
+
+ uint private balance;
+ address public owner;
+
+ function PiggyBank() public {
+ owner = msg.sender;
+ balance = 0;
+ }
+
+ function deposit() public payable returns (uint) {
+ balance += msg.value;
+ return balance;
+ }
+
+ function withdraw(uint withdrawAmount) public returns (uint remainingBal) {
+ require(msg.sender == owner);
+ balance -= withdrawAmount;
+
+ msg.sender.transfer(withdrawAmount);
+
+ return balance;
+ }
+ }
+*/
+
+var piggybankContract = web3.eth.contract([{'constant': false, 'inputs': [{'name': 'withdrawAmount', 'type': 'uint256'}], 'name': 'withdraw', 'outputs': [{'name': 'remainingBal', 'type': 'uint256'}], 'payable': false, 'stateMutability': 'nonpayable', 'type': 'function'}, {'constant': true, 'inputs': [], 'name': 'owner', 'outputs': [{'name': '', 'type': 'address'}], 'payable': false, 'stateMutability': 'view', 'type': 'function'}, {'constant': false, 'inputs': [], 'name': 'deposit', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': true, 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [], 'payable': false, 'stateMutability': 'nonpayable', 'type': 'constructor'}])
+const deployButton = document.getElementById('deployButton')
+const depositButton = document.getElementById('depositButton')
+const withdrawButton = document.getElementById('withdrawButton')
+
+deployButton.addEventListener('click', async function (event) {
+
+ var piggybank = await piggybankContract.new(
+ {
+ from: web3.eth.accounts[0],
+ data: '0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808190555061023b806100686000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461005c5780638da5cb5b1461009d578063d0e30db0146100f4575b600080fd5b34801561006857600080fd5b5061008760048036038101908080359060200190929190505050610112565b6040518082815260200191505060405180910390f35b3480156100a957600080fd5b506100b26101d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100fc6101f6565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017057600080fd5b8160008082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156101c5573d6000803e3d6000fd5b506000549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003460008082825401925050819055506000549050905600a165627a7a72305820f237db3ec816a52589d82512117bc85bc08d3537683ffeff9059108caf3e5d400029',
+ gas: '4700000',
+ }, function (e, contract) {
+ console.log(e, contract)
+ if (typeof contract.address !== 'undefined') {
+ console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash)
+
+ console.log(`contract`, contract)
+
+ depositButton.addEventListener('click', function (event) {
+ contract.deposit({ from: web3.eth.accounts[0], value: '0x29a2241af62c0000' }, function (result) {
+ console.log(result)
+ })
+ })
+
+ withdrawButton.addEventListener('click', function (event) {
+ contract.withdraw('0xde0b6b3a7640000', { from: web3.eth.accounts[0] }, function (result) {
+ console.log(result)
+ })
+ })
+ }
+ })
+
+ console.log(piggybank)
+
+})
diff --git a/test/e2e/beta/contract-test/index.html b/test/e2e/beta/contract-test/index.html
new file mode 100644
index 000000000..0868633f7
--- /dev/null
+++ b/test/e2e/beta/contract-test/index.html
@@ -0,0 +1,8 @@
+<html>
+<body>
+ <button id="deployButton">Deploy Contract</button>
+ <button id="depositButton">Deposit</button>
+ <button id="withdrawButton">Withdraw</button>
+</body>
+<script src="contract.js"></script>
+</html> \ No newline at end of file
diff --git a/test/e2e/beta/from-import-beta-ui.spec.js b/test/e2e/beta/from-import-beta-ui.spec.js
index 8af654319..b396dc5b9 100644
--- a/test/e2e/beta/from-import-beta-ui.spec.js
+++ b/test/e2e/beta/from-import-beta-ui.spec.js
@@ -12,7 +12,6 @@ const {
} = require('../func')
const {
checkBrowserForConsoleErrors,
- loadExtension,
verboseReportOnFailure,
findElement,
findElements,
@@ -22,13 +21,12 @@ const {
describe('Using MetaMask with an existing account', function () {
let extensionId
let driver
- let tokenAddress
const testSeedPhrase = 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent'
const testAddress = '0xE18035BF8712672935FDB4e5e431b1a0183d2DFC'
+ const testPrivateKey2 = '14abe6f4aab7f9f626fe981c864d0adeb5685f289ac9270c27b8fd790b4235d6'
const regularDelayMs = 1000
const largeDelayMs = regularDelayMs * 2
- const waitingNewPageDelayMs = regularDelayMs * 10
this.timeout(0)
this.bail(true)
@@ -97,15 +95,16 @@ describe('Using MetaMask with an existing account', function () {
await delay(regularDelayMs)
// Close all other tabs
- let [oldUi, infoPage, newUi] = await driver.getAllWindowHandles()
- newUi = newUi || infoPage
+ const [oldUi, infoPage, newUi] = await driver.getAllWindowHandles()
+
+ const newUiOrInfoPage = newUi || infoPage
await driver.switchTo().window(oldUi)
await driver.close()
- if (infoPage !== newUi) {
+ if (infoPage !== newUiOrInfoPage) {
await driver.switchTo().window(infoPage)
await driver.close()
}
- await driver.switchTo().window(newUi)
+ await driver.switchTo().window(newUiOrInfoPage)
await delay(regularDelayMs)
const continueBtn = await findElement(driver, By.css('.welcome-screen__button'))
@@ -166,8 +165,7 @@ describe('Using MetaMask with an existing account', function () {
describe('Show account information', () => {
it('shows the correct account address', async () => {
- const detailsButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Details')]`))
- detailsButton.click()
+ await driver.findElement(By.css('.wallet-view__details-button')).click()
await driver.findElement(By.css('.qr-wrapper')).isDisplayed()
await delay(regularDelayMs)
@@ -263,8 +261,10 @@ describe('Using MetaMask with an existing account', function () {
await configureGas.click()
await delay(regularDelayMs)
+ const gasModal = await driver.findElement(By.css('span .modal'))
const save = await findElement(driver, By.xpath(`//button[contains(text(), 'Save')]`))
await save.click()
+ await driver.wait(until.stalenessOf(gasModal))
await delay(regularDelayMs)
// Continue to next screen
@@ -289,143 +289,36 @@ describe('Using MetaMask with an existing account', function () {
})
})
- describe('Send ETH from Faucet', () => {
- it('starts a send transaction inside Faucet', async () => {
- await driver.executeScript('window.open("https://faucet.metamask.io")')
- await delay(waitingNewPageDelayMs)
-
- const [extension, faucet] = await driver.getAllWindowHandles()
- await driver.switchTo().window(faucet)
- await delay(regularDelayMs)
-
- const send1eth = await findElement(driver, By.xpath(`//button[contains(text(), '10 ether')]`), 14000)
- await send1eth.click()
- await delay(regularDelayMs)
-
- await driver.switchTo().window(extension)
- await loadExtension(driver, extensionId)
- await delay(regularDelayMs)
-
- const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`), 14000)
- await confirmButton.click()
- await delay(regularDelayMs)
-
- await driver.switchTo().window(faucet)
- await delay(regularDelayMs)
- await driver.close()
- await delay(regularDelayMs)
- await driver.switchTo().window(extension)
- await delay(regularDelayMs)
- await loadExtension(driver, extensionId)
+ describe('Imports an account with private key', () => {
+ it('choose Create Account from the account menu', async () => {
+ await driver.findElement(By.css('.account-menu__icon')).click()
await delay(regularDelayMs)
- })
- })
- describe('Add existing token using search', () => {
- it('clicks on the Add Token button', async () => {
- const addToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Token')]`))
- await addToken.click()
+ const [importAccount] = await findElements(driver, By.xpath(`//div[contains(text(), 'Import Account')]`))
+ await importAccount.click()
await delay(regularDelayMs)
})
- it('picks an existing token', async () => {
- const tokenSearch = await findElement(driver, By.css('#search-tokens'))
- await tokenSearch.sendKeys('BAT')
+ it('enter private key', async () => {
+ const privateKeyInput = await findElement(driver, By.css('#private-key-box'))
+ await privateKeyInput.sendKeys(testPrivateKey2)
await delay(regularDelayMs)
-
- const token = await findElement(driver, By.xpath("//span[contains(text(), 'BAT')]"))
- await token.click()
+ const importButtons = await findElements(driver, By.xpath(`//button[contains(text(), 'Import')]`))
+ await importButtons[0].click()
await delay(regularDelayMs)
-
- const nextScreen = await findElement(driver, By.xpath(`//button[contains(text(), 'Next')]`))
- await nextScreen.click()
- await delay(regularDelayMs)
-
- const addTokens = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Tokens')]`))
- await addTokens.click()
- await delay(largeDelayMs)
})
- it('renders the balance for the new token', async () => {
- const balance = await findElement(driver, By.css('.tx-view .balance-display .token-amount'))
- await driver.wait(until.elementTextMatches(balance, /^0\s*BAT\s*$/), 10000)
- const tokenAmount = await balance.getText()
- assert.ok(/^0\s*BAT\s*$/.test(tokenAmount))
- await delay(regularDelayMs)
- })
- })
-
- describe('Add a custom token from TokenFactory', () => {
- it('creates a new token', async () => {
- await driver.executeScript('window.open("https://tokenfactory.surge.sh/#/factory")')
- await delay(waitingNewPageDelayMs)
-
- const [extension, tokenFactory] = await driver.getAllWindowHandles()
- await driver.switchTo().window(tokenFactory)
- const [
- totalSupply,
- tokenName,
- tokenDecimal,
- tokenSymbol,
- ] = await findElements(driver, By.css('.form-control'))
-
- await totalSupply.sendKeys('100')
- await tokenName.sendKeys('Test')
- await tokenDecimal.sendKeys('0')
- await tokenSymbol.sendKeys('TST')
-
- const createToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Create Token')]`))
- await createToken.click()
- await delay(regularDelayMs)
-
- await driver.switchTo().window(extension)
- await loadExtension(driver, extensionId)
- await delay(regularDelayMs)
-
- const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
- await confirmButton.click()
- await delay(regularDelayMs)
-
- await driver.switchTo().window(tokenFactory)
- await delay(regularDelayMs)
- const tokenContactAddress = await driver.findElement(By.css('div > div > div:nth-child(2) > span:nth-child(3)'))
- tokenAddress = await tokenContactAddress.getText()
- await driver.close()
- await driver.switchTo().window(extension)
- await loadExtension(driver, extensionId)
- await delay(regularDelayMs)
- })
-
- it('clicks on the Add Token button', async () => {
- const addToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Token')]`))
- await addToken.click()
- await delay(regularDelayMs)
- })
-
- it('picks the new Test token', async () => {
- const addCustomToken = await findElement(driver, By.xpath("//div[contains(text(), 'Custom Token')]"))
- await addCustomToken.click()
- await delay(regularDelayMs)
-
- const newTokenAddress = await findElement(driver, By.css('#custom-address'))
- await newTokenAddress.sendKeys(tokenAddress)
- await delay(regularDelayMs)
-
- const nextScreen = await findElement(driver, By.xpath(`//button[contains(text(), 'Next')]`))
- await nextScreen.click()
- await delay(regularDelayMs)
-
- const addTokens = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Tokens')]`))
- await addTokens.click()
+ it('should show the correct account name', async () => {
+ const [accountName] = await findElements(driver, By.css('.account-name'))
+ assert.equal(await accountName.getText(), 'Account 3')
await delay(regularDelayMs)
})
- it('renders the balance for the new token', async () => {
- const balance = await findElement(driver, By.css('.tx-view .balance-display .token-amount'))
- await driver.wait(until.elementTextMatches(balance, /^100\s*TST\s*$/), 10000)
- const tokenAmount = await balance.getText()
- assert.ok(/^100\s*TST\s*$/.test(tokenAmount))
+ it('should show the imported label', async () => {
+ const [importedLabel] = await findElements(driver, By.css('.wallet-view__keyring-label'))
+ assert.equal(await importedLabel.getText(), 'IMPORTED')
await delay(regularDelayMs)
})
})
+
})
diff --git a/test/e2e/beta/helpers.js b/test/e2e/beta/helpers.js
index 31c41d8b7..fcc3e96d6 100644
--- a/test/e2e/beta/helpers.js
+++ b/test/e2e/beta/helpers.js
@@ -2,6 +2,7 @@ const fs = require('fs')
const mkdirp = require('mkdirp')
const pify = require('pify')
const {until} = require('selenium-webdriver')
+const { delay } = require('../func')
module.exports = {
checkBrowserForConsoleErrors,
@@ -9,6 +10,7 @@ module.exports = {
verboseReportOnFailure,
findElement,
findElements,
+ openNewPage,
}
async function loadExtension (driver, extensionId) {
@@ -64,3 +66,15 @@ async function findElement (driver, by, timeout = 10000) {
async function findElements (driver, by, timeout = 10000) {
return driver.wait(until.elementsLocated(by), timeout)
}
+
+async function openNewPage (driver, url) {
+ await driver.executeScript('window.open()')
+ await delay(1000)
+
+ const handles = await driver.getAllWindowHandles()
+ const secondHandle = handles[1]
+ await driver.switchTo().window(secondHandle)
+
+ await driver.get(url)
+ await delay(1000)
+}
diff --git a/test/e2e/beta/metamask-beta-ui.spec.js b/test/e2e/beta/metamask-beta-ui.spec.js
index 71329bff7..5f270b52b 100644
--- a/test/e2e/beta/metamask-beta-ui.spec.js
+++ b/test/e2e/beta/metamask-beta-ui.spec.js
@@ -16,6 +16,7 @@ const {
checkBrowserForConsoleErrors,
loadExtension,
verboseReportOnFailure,
+ openNewPage,
} = require('./helpers')
describe('MetaMask', function () {
@@ -27,7 +28,6 @@ describe('MetaMask', function () {
const tinyDelayMs = 1000
const regularDelayMs = tinyDelayMs * 2
const largeDelayMs = regularDelayMs * 2
- const waitingNewPageDelayMs = regularDelayMs * 30
this.timeout(0)
this.bail(true)
@@ -62,7 +62,7 @@ describe('MetaMask', function () {
}
}
if (this.currentTest.state === 'failed') {
- await verboseReportOnFailure(this.currentTest)
+ await verboseReportOnFailure(driver, this.currentTest)
}
})
@@ -71,14 +71,20 @@ describe('MetaMask', function () {
})
describe('New UI setup', async function () {
+ let networkSelector
it('switches to first tab', async function () {
const [firstTab] = await driver.getAllWindowHandles()
await driver.switchTo().window(firstTab)
await delay(regularDelayMs)
+ try {
+ networkSelector = await findElement(driver, By.css('#network_component'))
+ } catch (e) {
+ await loadExtension(driver, extensionId)
+ }
+ await delay(regularDelayMs)
})
it('use the local network', async function () {
- const networkSelector = await findElement(driver, By.css('#network_component'))
await networkSelector.click()
await delay(regularDelayMs)
@@ -93,15 +99,21 @@ describe('MetaMask', function () {
await delay(regularDelayMs)
// Close all other tabs
- let [oldUi, infoPage, newUi] = await driver.getAllWindowHandles()
- newUi = newUi || infoPage
+ const [oldUi, tab1, tab2] = await driver.getAllWindowHandles()
await driver.switchTo().window(oldUi)
await driver.close()
- if (infoPage !== newUi) {
- await driver.switchTo().window(infoPage)
+
+ await driver.switchTo().window(tab1)
+ const tab1Url = await driver.getCurrentUrl()
+ if (tab1Url.match(/metamask.io/)) {
+ await driver.switchTo().window(tab1)
+ await driver.close()
+ await driver.switchTo().window(tab2)
+ } else if (tab2) {
+ await driver.switchTo().window(tab2)
await driver.close()
+ await driver.switchTo().window(tab1)
}
- await driver.switchTo().window(newUi)
await delay(regularDelayMs)
const continueBtn = await findElement(driver, By.css('.welcome-screen__button'))
@@ -136,6 +148,7 @@ describe('MetaMask', function () {
await driver.executeScript('arguments[0].scrollIntoView(true)', bottomOfTos)
await delay(regularDelayMs)
const acceptTos = await findElement(driver, By.css('.tou button'))
+ driver.wait(until.elementIsEnabled(acceptTos))
await acceptTos.click()
await delay(regularDelayMs)
})
@@ -160,8 +173,10 @@ describe('MetaMask', function () {
let seedPhrase
it('reveals the seed phrase', async () => {
- const revealSeedPhrase = await findElement(driver, By.css('.backup-phrase__secret-blocker'))
- await revealSeedPhrase.click()
+ const byRevealButton = By.css('.backup-phrase__secret-blocker .backup-phrase__reveal-button')
+ await driver.wait(until.elementLocated(byRevealButton, 10000))
+ const revealSeedPhraseButton = await findElement(driver, byRevealButton, 10000)
+ await revealSeedPhraseButton.click()
await delay(regularDelayMs)
seedPhrase = await driver.findElement(By.css('.backup-phrase__secret-words')).getText()
@@ -173,56 +188,76 @@ describe('MetaMask', function () {
await delay(regularDelayMs)
})
- it('can retype the seed phrase', async () => {
- const words = seedPhrase.split(' ')
+ async function retypeSeedPhrase (words) {
+ try {
+ const word0 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[0]}')]`), 10000)
- const word0 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[0]}')]`))
- await word0.click()
- await delay(tinyDelayMs)
+ await word0.click()
+ await delay(tinyDelayMs)
- const word1 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[1]}')]`))
- await word1.click()
- await delay(tinyDelayMs)
+ const word1 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[1]}')]`), 10000)
- const word2 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[2]}')]`))
- await word2.click()
- await delay(tinyDelayMs)
+ await word1.click()
+ await delay(tinyDelayMs)
- const word3 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[3]}')]`))
- await word3.click()
- await delay(tinyDelayMs)
+ const word2 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[2]}')]`), 10000)
- const word4 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[4]}')]`))
- await word4.click()
- await delay(tinyDelayMs)
+ await word2.click()
+ await delay(tinyDelayMs)
- const word5 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[5]}')]`))
- await word5.click()
- await delay(tinyDelayMs)
+ const word3 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[3]}')]`), 10000)
- const word6 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[6]}')]`))
- await word6.click()
- await delay(tinyDelayMs)
+ await word3.click()
+ await delay(tinyDelayMs)
- const word7 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[7]}')]`))
- await word7.click()
- await delay(tinyDelayMs)
+ const word4 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[4]}')]`), 10000)
- const word8 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[8]}')]`))
- await word8.click()
- await delay(tinyDelayMs)
+ await word4.click()
+ await delay(tinyDelayMs)
- const word9 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[9]}')]`))
- await word9.click()
- await delay(tinyDelayMs)
+ const word5 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[5]}')]`), 10000)
- const word10 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[10]}')]`))
- await word10.click()
- await delay(tinyDelayMs)
+ await word5.click()
+ await delay(tinyDelayMs)
- const word11 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[11]}')]`))
- await word11.click()
- await delay(tinyDelayMs)
+ const word6 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[6]}')]`), 10000)
+
+ await word6.click()
+ await delay(tinyDelayMs)
+
+ const word7 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[7]}')]`), 10000)
+
+ await word7.click()
+ await delay(tinyDelayMs)
+
+ const word8 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[8]}')]`), 10000)
+
+ await word8.click()
+ await delay(tinyDelayMs)
+
+ const word9 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[9]}')]`), 10000)
+
+ await word9.click()
+ await delay(tinyDelayMs)
+
+ const word10 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[10]}')]`), 10000)
+
+ await word10.click()
+ await delay(tinyDelayMs)
+
+ const word11 = await findElement(driver, By.xpath(`//button[contains(text(), '${words[11]}')]`), 10000)
+ await word11.click()
+ await delay(tinyDelayMs)
+ } catch (e) {
+ await loadExtension(driver, extensionId)
+ await retypeSeedPhrase(words)
+ }
+ }
+
+ it('can retype the seed phrase', async () => {
+ const words = seedPhrase.split(' ')
+
+ await retypeSeedPhrase(words)
const confirm = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
await confirm.click()
@@ -230,7 +265,8 @@ describe('MetaMask', function () {
})
it('clicks through the deposit modal', async () => {
- const buyModal = await driver.findElement(By.css('span .modal'))
+ const byBuyModal = By.css('span .modal')
+ const buyModal = await driver.wait(until.elementLocated(byBuyModal))
const closeModal = await findElement(driver, By.css('.page-container__header-close'))
await closeModal.click()
await driver.wait(until.stalenessOf(buyModal))
@@ -244,8 +280,12 @@ describe('MetaMask', function () {
await driver.findElement(By.css('.qr-wrapper')).isDisplayed()
await delay(regularDelayMs)
+ const accountModal = await driver.findElement(By.css('span .modal'))
+
await driver.executeScript("document.querySelector('.account-modal-close').click()")
- await delay(regularDelayMs * 4)
+
+ await driver.wait(until.stalenessOf(accountModal))
+ await delay(regularDelayMs)
})
})
@@ -345,8 +385,11 @@ describe('MetaMask', function () {
await configureGas.click()
await delay(regularDelayMs)
+ const gasModal = await driver.findElement(By.css('span .modal'))
+
const save = await findElement(driver, By.xpath(`//button[contains(text(), 'Save')]`))
await save.click()
+ await driver.wait(until.stalenessOf(gasModal))
await delay(regularDelayMs)
// Continue to next screen
@@ -365,19 +408,20 @@ describe('MetaMask', function () {
const transactions = await findElements(driver, By.css('.tx-list-item'))
assert.equal(transactions.length, 1)
- const txValues = await findElements(driver, By.css('.tx-list-value'))
- assert.equal(txValues.length, 1)
- assert.equal(await txValues[0].getText(), '1 ETH')
+ const txValues = await findElement(driver, By.css('.tx-list-value'))
+ await driver.wait(until.elementTextMatches(txValues, /1\sETH/), 10000)
})
})
describe('Send ETH from Faucet', () => {
it('starts a send transaction inside Faucet', async () => {
- await driver.executeScript('window.open("https://faucet.metamask.io")')
- await delay(waitingNewPageDelayMs)
+ await openNewPage(driver, 'https://faucet.metamask.io')
const [extension, faucet] = await driver.getAllWindowHandles()
await driver.switchTo().window(faucet)
+
+ const faucetPageTitle = await findElement(driver, By.css('.container-fluid'))
+ await driver.wait(until.elementTextMatches(faucetPageTitle, /MetaMask/))
await delay(regularDelayMs)
const send1eth = await findElement(driver, By.xpath(`//button[contains(text(), '10 ether')]`), 14000)
@@ -403,47 +447,133 @@ describe('MetaMask', function () {
})
})
- describe('Add existing token using search', () => {
- it('clicks on the Add Token button', async () => {
- const addToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Token')]`))
- await addToken.click()
+ describe('Deploy contract and call contract methods', () => {
+ let extension
+ let contractTestPage
+ it('confirms a deploy contract transaction', async () => {
+ await openNewPage(driver, 'http://127.0.0.1:8080/');
+
+ [extension, contractTestPage] = await driver.getAllWindowHandles()
await delay(regularDelayMs)
+
+ const deployContractButton = await findElement(driver, By.css('#deployButton'))
+ await deployContractButton.click()
+ await delay(regularDelayMs)
+
+ await driver.switchTo().window(extension)
+ await delay(regularDelayMs)
+
+ const txListItem = await findElement(driver, By.css('.tx-list-item'))
+ await txListItem.click()
+ await delay(regularDelayMs)
+
+ const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
+ await confirmButton.click()
+ await delay(regularDelayMs)
+
+ const txStatuses = await findElements(driver, By.css('.tx-list-status'))
+ await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed/))
+
+ const txAccounts = await findElements(driver, By.css('.tx-list-account'))
+ assert.equal(await txAccounts[0].getText(), 'Contract Deployment')
})
- it('can pick a token from the existing options', async () => {
- const tokenSearch = await findElement(driver, By.css('#search-tokens'))
- await tokenSearch.sendKeys('BAT')
+ it('calls and confirms a contract method where ETH is sent', async () => {
+ await driver.switchTo().window(contractTestPage)
await delay(regularDelayMs)
- const token = await findElement(driver, By.xpath("//span[contains(text(), 'BAT')]"))
- await token.click()
+ const depositButton = await findElement(driver, By.css('#depositButton'))
+ await depositButton.click()
await delay(regularDelayMs)
- const nextScreen = await findElement(driver, By.xpath(`//button[contains(text(), 'Next')]`))
- await nextScreen.click()
+ await driver.switchTo().window(extension)
await delay(regularDelayMs)
- const addTokens = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Tokens')]`))
- await addTokens.click()
- await delay(largeDelayMs)
+ const txListItem = await findElement(driver, By.css('.tx-list-item'))
+ await txListItem.click()
+ await delay(regularDelayMs)
+
+ // Set the gas limit
+ const configureGas = await findElement(driver, By.css('.sliders-icon-container'))
+ await configureGas.click()
+ await delay(regularDelayMs)
+
+ const gasModal = await driver.findElement(By.css('span .modal'))
+ await driver.wait(until.elementLocated(By.css('.send-v2__customize-gas__title')))
+
+ const [gasPriceInput, gasLimitInput] = await findElements(driver, By.css('.customize-gas-input'))
+ await gasPriceInput.clear()
+ await gasPriceInput.sendKeys('10')
+ await gasLimitInput.clear()
+ await gasLimitInput.sendKeys('60001')
+
+ const save = await findElement(driver, By.xpath(`//button[contains(text(), 'Save')]`))
+ await save.click()
+ await delay(regularDelayMs)
+
+ await driver.wait(until.stalenessOf(gasModal))
+
+ const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
+ await confirmButton.click()
+ await delay(regularDelayMs)
+
+ const txStatuses = await findElements(driver, By.css('.tx-list-status'))
+ await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed/))
+
+ const txValues = await findElement(driver, By.css('.tx-list-value'))
+ await driver.wait(until.elementTextMatches(txValues, /3\sETH/), 10000)
+
+ const txAccounts = await findElements(driver, By.css('.tx-list-account'))
+ const firstTxAddress = await txAccounts[0].getText()
+ assert(firstTxAddress.match(/^0x\w{8}\.{3}\w{4}$/))
})
- it('renders the balance for the chosen token', async () => {
+ it('calls and confirms a contract method where ETH is received', async () => {
+ await driver.switchTo().window(contractTestPage)
+ await delay(regularDelayMs)
+
+ const withdrawButton = await findElement(driver, By.css('#withdrawButton'))
+ await withdrawButton.click()
+ await delay(regularDelayMs)
+
+ await driver.switchTo().window(extension)
+ await delay(regularDelayMs)
+
+ const txListItem = await findElement(driver, By.css('.tx-list-item'))
+ await txListItem.click()
+ await delay(regularDelayMs)
+
+ const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
+ await confirmButton.click()
+ await delay(regularDelayMs)
+
+ const txStatuses = await findElements(driver, By.css('.tx-list-status'))
+ await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed/))
+
+ const txValues = await findElement(driver, By.css('.tx-list-value'))
+ await driver.wait(until.elementTextMatches(txValues, /0\sETH/), 10000)
+
+ await driver.switchTo().window(contractTestPage)
+ await driver.close()
+ await driver.switchTo().window(extension)
+ })
+
+ it('renders the correct ETH balance', async () => {
const balance = await findElement(driver, By.css('.tx-view .balance-display .token-amount'))
- await driver.wait(until.elementTextMatches(balance, /^0\s*BAT\s*$/), 10000)
+ await driver.wait(until.elementTextMatches(balance, /^86.*ETH.*$/), 10000)
const tokenAmount = await balance.getText()
- assert.ok(/^0\s*BAT\s*$/.test(tokenAmount))
+ assert.ok(/^86.*ETH.*$/.test(tokenAmount))
await delay(regularDelayMs)
})
})
describe('Add a custom token from TokenFactory', () => {
it('creates a new token', async () => {
- await driver.executeScript('window.open("https://tokenfactory.surge.sh/#/factory")')
- await delay(waitingNewPageDelayMs)
+ openNewPage(driver, 'https://tokenfactory.surge.sh/#/factory')
+ await delay(regularDelayMs * 10)
const [extension, tokenFactory] = await driver.getAllWindowHandles()
- await driver.switchTo().window(tokenFactory)
+
const [
totalSupply,
tokenName,
@@ -470,12 +600,16 @@ describe('MetaMask', function () {
await driver.switchTo().window(tokenFactory)
await delay(regularDelayMs)
+
const tokenContactAddress = await driver.findElement(By.css('div > div > div:nth-child(2) > span:nth-child(3)'))
tokenAddress = await tokenContactAddress.getText()
+
await driver.close()
await driver.switchTo().window(extension)
await loadExtension(driver, extensionId)
+ await driver.switchTo().window(extension)
await delay(regularDelayMs)
+
})
it('clicks on the Add Token button', async () => {
@@ -510,4 +644,212 @@ describe('MetaMask', function () {
await delay(regularDelayMs)
})
})
+
+ describe('Send token from inside MetaMask', () => {
+ let gasModal
+ it('starts to send a transaction', async function () {
+ const sendButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Send')]`))
+ await sendButton.click()
+ await delay(regularDelayMs)
+
+ const inputAddress = await findElement(driver, By.css('input[placeholder="Recipient Address"]'))
+ const inputAmount = await findElement(driver, By.css('.currency-display__input'))
+ await inputAddress.sendKeys('0x2f318C334780961FB129D2a6c30D0763d9a5C970')
+ await inputAmount.sendKeys('50')
+
+ // Set the gas limit
+ const configureGas = await findElement(driver, By.css('.send-v2__gas-fee-display button'))
+ await configureGas.click()
+ await delay(regularDelayMs)
+
+ gasModal = await driver.findElement(By.css('span .modal'))
+ })
+
+ it('customizes gas', async () => {
+ await driver.wait(until.elementLocated(By.css('.send-v2__customize-gas__title')))
+ const save = await findElement(driver, By.xpath(`//button[contains(text(), 'Save')]`))
+ await save.click()
+ await delay(regularDelayMs)
+ })
+
+ it('transitions to the confirm screen', async () => {
+ await driver.wait(until.stalenessOf(gasModal))
+
+ // Continue to next screen
+ const nextScreen = await findElement(driver, By.xpath(`//button[contains(text(), 'Next')]`))
+ await nextScreen.click()
+ await delay(regularDelayMs)
+ })
+
+ it('submits the transaction', async function () {
+ const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
+ await confirmButton.click()
+ await delay(regularDelayMs)
+ })
+
+ it('finds the transaction in the transactions list', async function () {
+ const transactions = await findElements(driver, By.css('.tx-list-item'))
+ assert.equal(transactions.length, 1)
+
+ const txValues = await findElements(driver, By.css('.tx-list-value'))
+ assert.equal(txValues.length, 1)
+
+ // test cancelled on firefox until https://github.com/mozilla/geckodriver/issues/906 is resolved,
+ // or possibly until we use latest version of firefox in the tests
+ if (process.env.SELENIUM_BROWSER !== 'firefox') {
+ await driver.wait(until.elementTextMatches(txValues[0], /50\sTST/), 10000)
+ }
+
+ const txStatuses = await findElements(driver, By.css('.tx-list-status'))
+ const tx = await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed|Failed/), 10000)
+ assert.equal(await tx.getText(), 'Confirmed')
+ })
+ })
+
+ describe('Send a custom token from TokenFactory', () => {
+ let gasModal
+ it('sends an already created token', async () => {
+ openNewPage(driver, `https://tokenfactory.surge.sh/#/token/${tokenAddress}`)
+
+ const [extension] = await driver.getAllWindowHandles()
+
+ const [
+ transferToAddress,
+ transferToAmount,
+ ] = await findElements(driver, By.css('.form-control'))
+
+ await transferToAddress.sendKeys('0x2f318C334780961FB129D2a6c30D0763d9a5C970')
+ await transferToAmount.sendKeys('26')
+
+ const transferAmountButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Transfer Amount')]`))
+ await transferAmountButton.click()
+ await delay(regularDelayMs)
+
+ const [,, popup] = await driver.getAllWindowHandles()
+ await driver.switchTo().window(popup)
+ await driver.close()
+ await driver.switchTo().window(extension)
+ await delay(regularDelayMs)
+
+ const [txListItem] = await findElements(driver, By.css('.tx-list-item'))
+ await txListItem.click()
+ await delay(regularDelayMs)
+
+ // Set the gas limit
+ const configureGas = await driver.wait(until.elementLocated(By.css('.send-v2__gas-fee-display button')))
+ await configureGas.click()
+ await delay(regularDelayMs)
+
+ gasModal = await driver.findElement(By.css('span .modal'))
+ })
+
+ it('customizes gas', async () => {
+ await driver.wait(until.elementLocated(By.css('.send-v2__customize-gas__title')))
+
+ const [gasPriceInput, gasLimitInput] = await findElements(driver, By.css('.customize-gas-input'))
+ await gasPriceInput.clear()
+ await delay(tinyDelayMs)
+ await gasPriceInput.sendKeys('10')
+ await delay(tinyDelayMs)
+ await gasLimitInput.clear()
+ await delay(tinyDelayMs)
+ await gasLimitInput.sendKeys(Key.chord(Key.CONTROL, 'a'))
+ await gasLimitInput.sendKeys('60000')
+ await gasLimitInput.sendKeys(Key.chord(Key.CONTROL, 'e'))
+
+ // Needed for different behaviour of input in different versions of firefox
+ const gasLimitInputValue = await gasLimitInput.getAttribute('value')
+ if (gasLimitInputValue === '600001') {
+ await gasLimitInput.sendKeys(Key.BACK_SPACE)
+ }
+
+ const save = await findElement(driver, By.css('.send-v2__customize-gas__save'))
+ await save.click()
+ await driver.wait(until.stalenessOf(gasModal))
+
+ const gasFeeInput = await findElement(driver, By.css('.currency-display__input'))
+ assert.equal(await gasFeeInput.getAttribute('value'), 0.0006)
+ })
+
+ it('submits the transaction', async function () {
+ const confirmButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Confirm')]`))
+ await confirmButton.click()
+ await delay(regularDelayMs)
+ })
+
+ it('finds the transaction in the transactions list', async function () {
+ const transactions = await findElements(driver, By.css('.tx-list-item'))
+ assert.equal(transactions.length, 2)
+
+ const txValues = await findElements(driver, By.css('.tx-list-value'))
+ await driver.wait(until.elementTextMatches(txValues[0], /26\sTST/))
+ const txStatuses = await findElements(driver, By.css('.tx-list-status'))
+ await driver.wait(until.elementTextMatches(txStatuses[0], /Confirmed/))
+
+ const walletBalance = await findElement(driver, By.css('.wallet-balance'))
+ await walletBalance.click()
+
+ const tokenListItems = await findElements(driver, By.css('.token-list-item'))
+ await tokenListItems[0].click()
+
+ // test cancelled on firefox until https://github.com/mozilla/geckodriver/issues/906 is resolved,
+ // or possibly until we use latest version of firefox in the tests
+ if (process.env.SELENIUM_BROWSER !== 'firefox') {
+ const tokenBalanceAmount = await findElement(driver, By.css('.token-balance__amount'))
+ assert.equal(await tokenBalanceAmount.getText(), '24')
+ }
+ })
+ })
+
+ describe('Hide token', () => {
+ it('hides the token when clicked', async () => {
+ const [hideTokenEllipsis] = await findElements(driver, By.css('.token-list-item__ellipsis'))
+ await hideTokenEllipsis.click()
+
+ const byTokenMenuDropdownOption = By.css('.menu__item--clickable')
+ const tokenMenuDropdownOption = await driver.wait(until.elementLocated(byTokenMenuDropdownOption))
+
+ await tokenMenuDropdownOption.click()
+
+ const confirmHideModal = await findElement(driver, By.css('span .modal'))
+
+ const byHideTokenConfirmationButton = By.css('.hide-token-confirmation__button')
+ const hideTokenConfirmationButton = await driver.wait(until.elementLocated(byHideTokenConfirmationButton))
+ await hideTokenConfirmationButton.click()
+
+ await driver.wait(until.stalenessOf(confirmHideModal))
+ })
+ })
+
+ describe('Add existing token using search', () => {
+ it('clicks on the Add Token button', async () => {
+ const addToken = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Token')]`))
+ await addToken.click()
+ await delay(regularDelayMs)
+ })
+
+ it('can pick a token from the existing options', async () => {
+ const tokenSearch = await findElement(driver, By.css('#search-tokens'))
+ await tokenSearch.sendKeys('BAT')
+ await delay(regularDelayMs)
+
+ const token = await findElement(driver, By.xpath("//span[contains(text(), 'BAT')]"))
+ await token.click()
+ await delay(regularDelayMs)
+
+ const nextScreen = await findElement(driver, By.xpath(`//button[contains(text(), 'Next')]`))
+ await nextScreen.click()
+ await delay(regularDelayMs)
+
+ const addTokens = await findElement(driver, By.xpath(`//button[contains(text(), 'Add Tokens')]`))
+ await addTokens.click()
+ await delay(largeDelayMs)
+ })
+
+ it('renders the balance for the chosen token', async () => {
+ const balance = await findElement(driver, By.css('.tx-view .balance-display .token-amount'))
+ await driver.wait(until.elementTextMatches(balance, /0\sBAT/))
+ await delay(regularDelayMs)
+ })
+ })
})
diff --git a/test/e2e/beta/run-all.sh b/test/e2e/beta/run-all.sh
index 5916d5614..493e1360a 100755
--- a/test/e2e/beta/run-all.sh
+++ b/test/e2e/beta/run-all.sh
@@ -6,5 +6,5 @@ set -o pipefail
export PATH="$PATH:./node_modules/.bin"
-shell-parallel -s 'npm run ganache:start' -x 'sleep 5 && mocha test/e2e/beta/metamask-beta-ui.spec'
-shell-parallel -s 'npm run ganache:start' -x 'sleep 5 && mocha test/e2e/beta/from-import-beta-ui.spec'
+shell-parallel -s 'npm run ganache:start' -x 'sleep 5 && superstatic test/e2e/beta/contract-test/ --port 8080 --host 127.0.0.1' -x 'sleep 5 && mocha test/e2e/beta/metamask-beta-ui.spec'
+shell-parallel -s 'npm run ganache:start -- -d' -x 'sleep 5 && superstatic test/e2e/beta/contract-test/ --port 8080 --host 127.0.0.1' -x 'sleep 5 && mocha test/e2e/beta/from-import-beta-ui.spec'
diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js
index b0a8fe411..a32b924b8 100644
--- a/test/e2e/metamask.spec.js
+++ b/test/e2e/metamask.spec.js
@@ -4,7 +4,7 @@ const path = require('path')
const assert = require('assert')
const pify = require('pify')
const webdriver = require('selenium-webdriver')
-const { By, Key } = webdriver
+const { By, Key, until } = webdriver
const { delay, buildChromeWebDriver, buildFirefoxWebdriver, installWebExt, getExtensionIdChrome, getExtensionIdFirefox } = require('./func')
describe('Metamask popup page', function () {
@@ -229,7 +229,11 @@ describe('Metamask popup page', function () {
it('confirms transaction', async function () {
await delay(300)
- await driver.findElement(By.css('#pending-tx-form > div.flex-row.flex-space-around.conf-buttons > input')).click()
+ const bySubmitButton = By.css('#pending-tx-form > div.flex-row.flex-space-around.conf-buttons > input')
+ const submitButton = await driver.wait(until.elementLocated(bySubmitButton))
+
+ submitButton.click()
+
await delay(500)
})
@@ -269,7 +273,8 @@ describe('Metamask popup page', function () {
it('confirms transaction in MetaMask popup', async function () {
const windowHandles = await driver.getAllWindowHandles()
await driver.switchTo().window(windowHandles[windowHandles.length - 1])
- const metamaskSubmit = await driver.findElement(By.css('#pending-tx-form > div.flex-row.flex-space-around.conf-buttons > input'))
+ const byMetamaskSubmit = By.css('#pending-tx-form > div.flex-row.flex-space-around.conf-buttons > input')
+ const metamaskSubmit = await driver.wait(until.elementLocated(byMetamaskSubmit))
await metamaskSubmit.click()
await delay(1000)
})
@@ -330,7 +335,7 @@ describe('Metamask popup page', function () {
await driver.executeScript('window.metamask.setProviderType(arguments[0])', type)
}
- async function checkBrowserForConsoleErrors() {
+ async function checkBrowserForConsoleErrors () {
const ignoredLogTypes = ['WARNING']
const ignoredErrorMessages = [
// React throws error warnings on "dataset", but still sets the data-* properties correctly
diff --git a/test/flat.conf.js b/test/flat.conf.js
index cd2dbdcdc..1c9ec3dcd 100644
--- a/test/flat.conf.js
+++ b/test/flat.conf.js
@@ -1,6 +1,6 @@
const getBaseConfig = require('./base.conf.js')
-module.exports = function(config) {
+module.exports = function (config) {
const settings = getBaseConfig(config)
settings.files.push('development/bundle.js')
settings.files.push('test/integration/bundle.js')
diff --git a/test/integration/lib/add-token.js b/test/integration/lib/add-token.js
index 5a08c90cd..6de7574c4 100644
--- a/test/integration/lib/add-token.js
+++ b/test/integration/lib/add-token.js
@@ -75,7 +75,7 @@ async function runAddTokenFlowTest (assert, done) {
tokenWrapper[0].click()
// Click Next button
- let nextButton = await queryAsync($, 'button.btn-primary.btn--large')
+ const nextButton = await queryAsync($, 'button.btn-primary.btn--large')
assert.equal(nextButton[0].textContent, 'Next', 'next button rendered')
nextButton[0].click()
diff --git a/test/integration/lib/confirm-sig-requests.js b/test/integration/lib/confirm-sig-requests.js
index d5ed7c77c..5613c0dcb 100644
--- a/test/integration/lib/confirm-sig-requests.js
+++ b/test/integration/lib/confirm-sig-requests.js
@@ -1,10 +1,7 @@
const reactTriggerChange = require('react-trigger-change')
const {
- timeout,
queryAsync,
- findAsync,
} = require('../../lib/util')
-const PASSWORD = 'password123'
QUnit.module('confirm sig requests')
@@ -16,8 +13,8 @@ QUnit.test('successful confirmation of sig requests', (assert) => {
})
})
-async function runConfirmSigRequestsTest(assert, done) {
- let selectState = await queryAsync($, 'select')
+async function runConfirmSigRequestsTest (assert, done) {
+ const selectState = await queryAsync($, 'select')
selectState.val('confirm sig requests')
reactTriggerChange(selectState[0])
@@ -32,7 +29,7 @@ async function runConfirmSigRequestsTest(assert, done) {
let confirmSigHeadline = await queryAsync($, '.request-signature__headline')
assert.equal(confirmSigHeadline[0].textContent, 'Your signature is being requested')
- let confirmSigMessage = await queryAsync($, '.request-signature__notice')
+ const confirmSigMessage = await queryAsync($, '.request-signature__notice')
assert.ok(confirmSigMessage[0].textContent.match(/^Signing\sthis\smessage/))
let confirmSigRowValue = await queryAsync($, '.request-signature__row-value')
@@ -45,7 +42,7 @@ async function runConfirmSigRequestsTest(assert, done) {
assert.equal(confirmSigHeadline[0].textContent, 'Your signature is being requested')
confirmSigRowValue = await queryAsync($, '.request-signature__row-value')
- assert.ok(confirmSigRowValue[0].textContent.match(/^\#\sTerms\sof\sUse/))
+ assert.ok(confirmSigRowValue[0].textContent.match(/^#\sTerms\sof\sUse/))
confirmSigSignButton = await queryAsync($, 'button.btn-primary.btn--large')
confirmSigSignButton[0].click()
diff --git a/test/integration/lib/currency-localization.js b/test/integration/lib/currency-localization.js
index 7705c9720..3ad1a23e5 100644
--- a/test/integration/lib/currency-localization.js
+++ b/test/integration/lib/currency-localization.js
@@ -15,7 +15,7 @@ QUnit.test('renders localized currency', (assert) => {
})
})
-async function runCurrencyLocalizationTest(assert, done) {
+async function runCurrencyLocalizationTest (assert, done) {
console.log('*** start runCurrencyLocalizationTest')
const selectState = await queryAsync($, 'select')
selectState.val('currency localization')
diff --git a/test/integration/lib/mascara-first-time.js b/test/integration/lib/mascara-first-time.js
index f43a30c74..8bbdb4410 100644
--- a/test/integration/lib/mascara-first-time.js
+++ b/test/integration/lib/mascara-first-time.js
@@ -42,7 +42,7 @@ async function runFirstTimeUsageTest (assert, done) {
assert.equal(created.textContent, 'Your unique account image', 'unique image screen')
// Agree button
- let button = (await findAsync(app, 'button'))[0]
+ const button = (await findAsync(app, 'button'))[0]
assert.ok(button, 'button present')
button.click()
diff --git a/test/integration/lib/send-new-ui.js b/test/integration/lib/send-new-ui.js
index 72e4a8cb1..241358135 100644
--- a/test/integration/lib/send-new-ui.js
+++ b/test/integration/lib/send-new-ui.js
@@ -5,8 +5,6 @@ const {
findAsync,
} = require('../../lib/util')
-const PASSWORD = 'password123'
-
QUnit.module('new ui send flow')
QUnit.test('successful send flow', (assert) => {
@@ -54,7 +52,7 @@ async function customizeGas (assert, price, limit, ethFee, usdFee) {
)
}
-async function runSendFlowTest(assert, done) {
+async function runSendFlowTest (assert, done) {
console.log('*** start runSendFlowTest')
const selectState = await queryAsync($, 'select')
selectState.val('send new ui')
@@ -87,7 +85,7 @@ async function runSendFlowTest(assert, done) {
sendFromFieldItemAddress = await queryAsync($, '.account-list-item__account-name')
assert.equal(sendFromFieldItemAddress[0].textContent, 'Send Account 2', 'send from field dropdown changes account name')
- let sendToFieldInput = await queryAsync($, '.send-v2__to-autocomplete__input')
+ const sendToFieldInput = await queryAsync($, '.send-v2__to-autocomplete__input')
sendToFieldInput[0].focus()
const sendToDropdownList = await queryAsync($, '.send-v2__from-dropdown__list')
diff --git a/test/integration/lib/tx-list-items.js b/test/integration/lib/tx-list-items.js
index 4856b3852..6b67b1d2e 100644
--- a/test/integration/lib/tx-list-items.js
+++ b/test/integration/lib/tx-list-items.js
@@ -1,6 +1,5 @@
const reactTriggerChange = require('../../lib/react-trigger-change')
const {
- timeout,
queryAsync,
findAsync,
} = require('../../lib/util')
@@ -15,7 +14,7 @@ QUnit.test('renders list items successfully', (assert) => {
})
})
-async function runTxListItemsTest(assert, done) {
+async function runTxListItemsTest (assert, done) {
console.log('*** start runTxListItemsTest')
const selectState = await queryAsync($, 'select')
selectState.val('tx list items')
diff --git a/test/lib/mock-encryptor.js b/test/lib/mock-encryptor.js
index ef229a82f..48aa9e52c 100644
--- a/test/lib/mock-encryptor.js
+++ b/test/lib/mock-encryptor.js
@@ -31,6 +31,6 @@ module.exports = {
getRandomValues () {
return 'SOO RANDO!!!1'
- }
+ },
}
diff --git a/test/lib/mock-tx-gen.js b/test/lib/mock-tx-gen.js
index 7aea09c59..106101500 100644
--- a/test/lib/mock-tx-gen.js
+++ b/test/lib/mock-tx-gen.js
@@ -17,14 +17,14 @@ class TxGenerator {
}
generate (tx = {}, opts = {}) {
- let { count, fromNonce } = opts
+ const { count, fromNonce } = opts
let nonce = fromNonce || this.txs.length
- let txs = []
+ const txs = []
for (let i = 0; i < count; i++) {
txs.push(extend(template, {
txParams: {
nonce: hexify(nonce++),
- }
+ },
}, tx))
}
this.txs = this.txs.concat(txs)
diff --git a/test/lib/react-trigger-change.js b/test/lib/react-trigger-change.js
index a25ddff00..d169dd614 100644
--- a/test/lib/react-trigger-change.js
+++ b/test/lib/react-trigger-change.js
@@ -1,7 +1,7 @@
// Trigger React's synthetic change events on input, textarea and select elements
// https://github.com/vitalyq/react-trigger-change
-/******************IMPORTANT NOTE******************/
+/** ****************IMPORTANT NOTE******************/
/* This file is a modification of the */
/* 'react-trigger-change' library linked above. */
/* That library breaks when 'onFocus' events are */
@@ -11,13 +11,13 @@
/* This modification removes the accomodations */
/* 'react-trigger-change' makes for IE to ensure */
/* our tests can pass in chrome and firefox. */
-/**************************************************/
+/** ************************************************/
-'use strict';
+'use strict'
// Constants and functions are declared inside the closure.
// In this way, reactTriggerChange can be passed directly to executeScript in Selenium.
-module.exports = function reactTriggerChange(node) {
+module.exports = function reactTriggerChange (node) {
var supportedInputTypes = {
color: true,
date: true,
@@ -33,47 +33,47 @@ module.exports = function reactTriggerChange(node) {
text: true,
time: true,
url: true,
- week: true
- };
- var nodeName = node.nodeName.toLowerCase();
- var type = node.type;
- var event;
- var descriptor;
- var initialValue;
- var initialChecked;
- var initialCheckedRadio;
+ week: true,
+ }
+ var nodeName = node.nodeName.toLowerCase()
+ var type = node.type
+ var event
+ var descriptor
+ var initialValue
+ var initialChecked
+ var initialCheckedRadio
// Do not try to delete non-configurable properties.
// Value and checked properties on DOM elements are non-configurable in PhantomJS.
- function deletePropertySafe(elem, prop) {
- var desc = Object.getOwnPropertyDescriptor(elem, prop);
+ function deletePropertySafe (elem, prop) {
+ var desc = Object.getOwnPropertyDescriptor(elem, prop)
if (desc && desc.configurable) {
- delete elem[prop];
+ delete elem[prop]
}
}
- function getCheckedRadio(radio) {
- var name = radio.name;
- var radios;
- var i;
+ function getCheckedRadio (radio) {
+ var name = radio.name
+ var radios
+ var i
if (name) {
- radios = document.querySelectorAll('input[type="radio"][name="' + name + '"]');
+ radios = document.querySelectorAll('input[type="radio"][name="' + name + '"]')
for (i = 0; i < radios.length; i += 1) {
if (radios[i].checked) {
- return radios[i] !== radio ? radios[i] : null;
+ return radios[i] !== radio ? radios[i] : null
}
}
}
- return null;
+ return null
}
- function preventChecking(e) {
- e.preventDefault();
+ function preventChecking (e) {
+ e.preventDefault()
if (!initialChecked) {
- e.target.checked = false;
+ e.target.checked = false
}
if (initialCheckedRadio) {
- initialCheckedRadio.checked = true;
+ initialCheckedRadio.checked = true
}
}
@@ -81,81 +81,81 @@ module.exports = function reactTriggerChange(node) {
(nodeName === 'input' && type === 'file')) {
// IE9-IE11, non-IE
// Dispatch change.
- event = document.createEvent('HTMLEvents');
- event.initEvent('change', true, false);
- node.dispatchEvent(event);
+ event = document.createEvent('HTMLEvents')
+ event.initEvent('change', true, false)
+ node.dispatchEvent(event)
} else if ((nodeName === 'input' && supportedInputTypes[type]) ||
nodeName === 'textarea') {
// React 16
// Cache artificial value property descriptor.
// Property doesn't exist in React <16, descriptor is undefined.
- descriptor = Object.getOwnPropertyDescriptor(node, 'value');
+ descriptor = Object.getOwnPropertyDescriptor(node, 'value')
// Update inputValueTracking cached value.
// Remove artificial value property.
// Restore initial value to trigger event with it.
- initialValue = node.value;
- node.value = initialValue + '#';
- deletePropertySafe(node, 'value');
- node.value = initialValue;
+ initialValue = node.value
+ node.value = initialValue + '#'
+ deletePropertySafe(node, 'value')
+ node.value = initialValue
// React 0.14: IE10-IE11, non-IE
// React 15: non-IE
// React 16: IE10-IE11, non-IE
- event = document.createEvent('HTMLEvents');
- event.initEvent('input', true, false);
- node.dispatchEvent(event);
+ event = document.createEvent('HTMLEvents')
+ event.initEvent('input', true, false)
+ node.dispatchEvent(event)
// React 16
// Restore artificial value property descriptor.
if (descriptor) {
- Object.defineProperty(node, 'value', descriptor);
+ Object.defineProperty(node, 'value', descriptor)
}
} else if (nodeName === 'input' && type === 'checkbox') {
// Invert inputValueTracking cached value.
- node.checked = !node.checked;
+ node.checked = !node.checked
// Dispatch click.
// Click event inverts checked value.
- event = document.createEvent('MouseEvents');
- event.initEvent('click', true, true);
- node.dispatchEvent(event);
+ event = document.createEvent('MouseEvents')
+ event.initEvent('click', true, true)
+ node.dispatchEvent(event)
} else if (nodeName === 'input' && type === 'radio') {
// Cache initial checked value.
- initialChecked = node.checked;
+ initialChecked = node.checked
// Find and cache initially checked radio in the group.
- initialCheckedRadio = getCheckedRadio(node);
+ initialCheckedRadio = getCheckedRadio(node)
// React 16
// Cache property descriptor.
// Invert inputValueTracking cached value.
// Remove artificial checked property.
// Restore initial value, otherwise preventDefault will eventually revert the value.
- descriptor = Object.getOwnPropertyDescriptor(node, 'checked');
- node.checked = !initialChecked;
- deletePropertySafe(node, 'checked');
- node.checked = initialChecked;
+ descriptor = Object.getOwnPropertyDescriptor(node, 'checked')
+ node.checked = !initialChecked
+ deletePropertySafe(node, 'checked')
+ node.checked = initialChecked
// Prevent toggling during event capturing phase.
// Set checked value to false if initialChecked is false,
// otherwise next listeners will see true.
// Restore initially checked radio in the group.
- node.addEventListener('click', preventChecking, true);
+ node.addEventListener('click', preventChecking, true)
// Dispatch click.
// Click event inverts checked value.
- event = document.createEvent('MouseEvents');
- event.initEvent('click', true, true);
- node.dispatchEvent(event);
+ event = document.createEvent('MouseEvents')
+ event.initEvent('click', true, true)
+ node.dispatchEvent(event)
// Remove listener to stop further change prevention.
- node.removeEventListener('click', preventChecking, true);
+ node.removeEventListener('click', preventChecking, true)
// React 16
// Restore artificial checked property descriptor.
if (descriptor) {
- Object.defineProperty(node, 'checked', descriptor);
+ Object.defineProperty(node, 'checked', descriptor)
}
}
-};
+}
diff --git a/test/lib/util.js b/test/lib/util.js
index 626280745..858565bb9 100644
--- a/test/lib/util.js
+++ b/test/lib/util.js
@@ -11,7 +11,7 @@ function timeout (time) {
})
}
-async function findAsync(container, selector, opts) {
+async function findAsync (container, selector, opts) {
try {
return await pollUntilTruthy(() => {
const result = container.find(selector)
@@ -22,7 +22,7 @@ async function findAsync(container, selector, opts) {
}
}
-async function queryAsync(jQuery, selector, opts) {
+async function queryAsync (jQuery, selector, opts) {
try {
return await pollUntilTruthy(() => {
const result = jQuery(selector)
@@ -33,7 +33,7 @@ async function queryAsync(jQuery, selector, opts) {
}
}
-async function pollUntilTruthy(fn, opts = {}){
+async function pollUntilTruthy (fn, opts = {}) {
const pollingInterval = opts.pollingInterval || 100
const timeoutInterval = opts.timeoutInterval || 5000
const start = Date.now()
diff --git a/test/mascara.conf.js b/test/mascara.conf.js
index 97e53fc2b..faf3147bd 100644
--- a/test/mascara.conf.js
+++ b/test/mascara.conf.js
@@ -1,13 +1,13 @@
const getBaseConfig = require('./base.conf.js')
-module.exports = function(config) {
+module.exports = function (config) {
const settings = getBaseConfig(config)
// ui and tests
settings.files.push('dist/mascara/ui.js')
settings.files.push('dist/mascara/tests.js')
// service worker background
- settings.files.push({ pattern: 'dist/mascara/background.js', watched: false, included: false, served: true }),
+ settings.files.push({ pattern: 'dist/mascara/background.js', watched: false, included: false, served: true })
settings.proxies['/background.js'] = '/base/dist/mascara/background.js'
// use this to keep the browser open for debugging
diff --git a/test/screens/new-ui.js b/test/screens/new-ui.js
index e3ba7f6ab..92d1b8378 100644
--- a/test/screens/new-ui.js
+++ b/test/screens/new-ui.js
@@ -12,7 +12,7 @@ const pngFileStream = require('png-file-stream')
const sizeOfPng = require('image-size/lib/types/png')
const By = webdriver.By
const localesIndex = require('../../app/_locales/index.json')
-const { delay, buildChromeWebDriver, buildFirefoxWebdriver, installWebExt, getExtensionIdChrome, getExtensionIdFirefox } = require('../e2e/func')
+const { delay, buildChromeWebDriver, getExtensionIdChrome } = require('../e2e/func')
const eth = new Ethjs(new Ethjs.HttpProvider('http://localhost:8545'))
@@ -41,11 +41,9 @@ captureAllScreens()
})
-async function captureAllScreens() {
+async function captureAllScreens () {
// common names
- let button
let tabs
- let element
await cleanScreenShotDir()
@@ -108,7 +106,7 @@ async function captureAllScreens() {
await captureLanguageScreenShots('terms')
await delay(300)
- element = driver.findElement(By.linkText('Attributions'))
+ const element = driver.findElement(By.linkText('Attributions'))
await driver.executeScript('arguments[0].scrollIntoView(true)', element)
await delay(300)
await captureLanguageScreenShots('terms-scrolled')
@@ -134,10 +132,10 @@ async function captureAllScreens() {
// enter seed phrase
const seedPhraseButtons = await driver.findElements(By.css('.backup-phrase__confirm-seed-options > button'))
const seedPhraseButtonWords = await Promise.all(seedPhraseButtons.map(button => button.getText()))
- for (let targetWord of seedPhraseWords) {
+ for (const targetWord of seedPhraseWords) {
const wordIndex = seedPhraseButtonWords.indexOf(targetWord)
if (wordIndex === -1) throw new Error(`Captured seed phrase word "${targetWord}" not in found seed phrase button options ${seedPhraseButtonWords.join(' ')}`)
- await driver.findElement(By.css(`.backup-phrase__confirm-seed-options > button:nth-child(${wordIndex+1})`)).click()
+ await driver.findElement(By.css(`.backup-phrase__confirm-seed-options > button:nth-child(${wordIndex + 1})`)).click()
await delay(100)
}
await captureLanguageScreenShots('confirm secret backup phrase - words selected correctly')
@@ -191,11 +189,11 @@ async function captureAllScreens() {
}
-async function captureLanguageScreenShots(label) {
+async function captureLanguageScreenShots (label) {
const nonEnglishLocales = localesIndex.filter(localeMeta => localeMeta.code !== 'en')
// take english shot
await captureScreenShot(`${label} (en)`)
- for (let localeMeta of nonEnglishLocales) {
+ for (const localeMeta of nonEnglishLocales) {
// set locale and take shot
await setLocale(localeMeta.code)
await delay(300)
@@ -206,19 +204,19 @@ async function captureLanguageScreenShots(label) {
await delay(300)
}
-async function setLocale(code) {
+async function setLocale (code) {
await driver.executeScript('window.metamask.updateCurrentLocale(arguments[0])', code)
}
-async function setProviderType(type) {
+async function setProviderType (type) {
await driver.executeScript('window.metamask.setProviderType(arguments[0])', type)
}
-async function cleanScreenShotDir() {
+async function cleanScreenShotDir () {
await pify(rimraf)(`./test-artifacts/screens/`)
}
-async function captureScreenShot(label) {
+async function captureScreenShot (label) {
const shotIndex = screenshotCount.toString().padStart(4, '0')
screenshotCount++
const artifactDir = `./test-artifacts/screens/`
@@ -228,7 +226,7 @@ async function captureScreenShot(label) {
await pify(fs.writeFile)(`${artifactDir}/${shotIndex} - ${label}.png`, screenshot, { encoding: 'base64' })
}
-async function generateGif(){
+async function generateGif () {
// calculate screenshot size
const screenshot = await driver.takeScreenshot()
const pngBuffer = Buffer.from(screenshot, 'base64')
@@ -244,7 +242,7 @@ async function generateGif(){
await pify(endOfStream)(stream)
}
-async function verboseReportOnFailure(test) {
+async function verboseReportOnFailure (test) {
const artifactDir = `./test-artifacts/${test.title}`
const filepathBase = `${artifactDir}/test-failure`
await pify(mkdirp)(artifactDir)
@@ -256,7 +254,7 @@ async function verboseReportOnFailure(test) {
await pify(fs.writeFile)(`${filepathBase}-dom.html`, htmlSource)
}
-async function requestEther(address) {
+async function requestEther (address) {
const accounts = await eth.accounts()
await eth.sendTransaction({ from: accounts[0], to: address, value: 1 * 1e18, data: '0x0' })
}
diff --git a/test/unit/app/account-import-strategies.spec.js b/test/unit/app/account-import-strategies.spec.js
index 216c2f698..d20ba0f0b 100644
--- a/test/unit/app/account-import-strategies.spec.js
+++ b/test/unit/app/account-import-strategies.spec.js
@@ -1,5 +1,4 @@
const assert = require('assert')
-const path = require('path')
const ethUtil = require('ethereumjs-util')
const accountImporter = require('../../../app/scripts/account-import-strategies/index')
const { assertRejects } = require('../test-utils')
@@ -15,7 +14,7 @@ describe('Account Import Strategies', function () {
})
it('throws an error for empty string private key', async () => {
- assertRejects(async function() {
+ assertRejects(async function () {
await accountImporter.importAccount('Private Key', [ '' ])
}, Error, 'no empty strings')
})
diff --git a/test/unit/app/controllers/address-book-controller.js b/test/unit/app/controllers/address-book-controller.js
index dc4b8e3ff..1350e1a61 100644
--- a/test/unit/app/controllers/address-book-controller.js
+++ b/test/unit/app/controllers/address-book-controller.js
@@ -12,7 +12,7 @@ const stubPreferencesStore = {
},
}
},
-};
+}
describe('address-book-controller', function () {
var addressBookController
diff --git a/test/unit/app/controllers/network-contoller-test.js b/test/unit/app/controllers/network-contoller-test.js
index 789850ef3..e16fb104e 100644
--- a/test/unit/app/controllers/network-contoller-test.js
+++ b/test/unit/app/controllers/network-contoller-test.js
@@ -5,9 +5,6 @@ const {
getNetworkDisplayName,
} = require('../../../../app/scripts/controllers/network/util')
-const { createTestProviderTools } = require('../../../stub/provider')
-const providerResultStub = {}
-
describe('# Network Controller', function () {
let networkController
const noop = () => {}
diff --git a/test/unit/app/controllers/transactions/nonce-tracker-test.js b/test/unit/app/controllers/transactions/nonce-tracker-test.js
index fc852458c..6c0ac759f 100644
--- a/test/unit/app/controllers/transactions/nonce-tracker-test.js
+++ b/test/unit/app/controllers/transactions/nonce-tracker-test.js
@@ -1,12 +1,10 @@
const assert = require('assert')
const NonceTracker = require('../../../../../app/scripts/controllers/transactions/nonce-tracker')
const MockTxGen = require('../../../../lib/mock-tx-gen')
-let providerResultStub = {}
+const providerResultStub = {}
describe('Nonce Tracker', function () {
- let nonceTracker, provider
- let getPendingTransactions, pendingTxs
- let getConfirmedTransactions, confirmedTxs
+ let nonceTracker, pendingTxs, confirmedTxs
describe('#getNonceLock', function () {
@@ -182,8 +180,8 @@ describe('Nonce Tracker', function () {
describe('When all three return different values', function () {
beforeEach(function () {
const txGen = new MockTxGen()
- const confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 10 })
- const pendingTxs = txGen.generate({
+ confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 10 })
+ pendingTxs = txGen.generate({
status: 'submitted',
nonce: 100,
}, { count: 1 })
@@ -202,8 +200,8 @@ describe('Nonce Tracker', function () {
describe('Faq issue 67', function () {
beforeEach(function () {
const txGen = new MockTxGen()
- const confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 64 })
- const pendingTxs = txGen.generate({
+ confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 64 })
+ pendingTxs = txGen.generate({
status: 'submitted',
}, { count: 10 })
// 0x40 is 64 in hex:
diff --git a/test/unit/app/controllers/transactions/pending-tx-test.js b/test/unit/app/controllers/transactions/pending-tx-test.js
index e7705c594..8bf2da6f8 100644
--- a/test/unit/app/controllers/transactions/pending-tx-test.js
+++ b/test/unit/app/controllers/transactions/pending-tx-test.js
@@ -1,20 +1,12 @@
const assert = require('assert')
-const ethUtil = require('ethereumjs-util')
-const EthTx = require('ethereumjs-tx')
-const ObservableStore = require('obs-store')
-const clone = require('clone')
const { createTestProviderTools } = require('../../../../stub/provider')
const PendingTransactionTracker = require('../../../../../app/scripts/controllers/transactions/pending-tx-tracker')
const MockTxGen = require('../../../../lib/mock-tx-gen')
const sinon = require('sinon')
-const noop = () => true
-const currentNetworkId = 42
-const otherNetworkId = 36
-const privKey = new Buffer('8718b9618a37d1fc78c436511fc6df3c8258d3250635bba617f33003270ec03e', 'hex')
describe('PendingTransactionTracker', function () {
- let pendingTxTracker, txMeta, txMetaNoHash, txMetaNoRawTx, providerResultStub,
+ let pendingTxTracker, txMeta, txMetaNoHash, providerResultStub,
provider, txMeta3, txList, knownErrors
this.timeout(10000)
beforeEach(function () {
@@ -34,11 +26,7 @@ describe('PendingTransactionTracker', function () {
status: 'signed',
txParams: { from: '0x1678a085c290ebd122dc42cba69373b5953b831d'},
}
- txMetaNoRawTx = {
- hash: '0x0593ee121b92e10d63150ad08b4b8f9c7857d1bd160195ee648fb9a0f8d00eeb',
- status: 'signed',
- txParams: { from: '0x1678a085c290ebd122dc42cba69373b5953b831d'},
- }
+
providerResultStub = {}
provider = createTestProviderTools({ scaffold: providerResultStub }).provider
@@ -47,10 +35,10 @@ describe('PendingTransactionTracker', function () {
nonceTracker: {
getGlobalLock: async () => {
return { releaseLock: () => {} }
- }
+ },
},
- getPendingTransactions: () => {return []},
- getCompletedTransactions: () => {return []},
+ getPendingTransactions: () => { return [] },
+ getCompletedTransactions: () => { return [] },
publishTransaction: () => {},
})
})
@@ -133,22 +121,20 @@ describe('PendingTransactionTracker', function () {
})
describe('#queryPendingTxs', function () {
it('should call #_checkPendingTxs if their is no oldBlock', function (done) {
- let newBlock, oldBlock
- newBlock = { number: '0x01' }
+ let oldBlock
+ const newBlock = { number: '0x01' }
pendingTxTracker._checkPendingTxs = done
pendingTxTracker.queryPendingTxs({ oldBlock, newBlock })
})
it('should call #_checkPendingTxs if oldBlock and the newBlock have a diff of greater then 1', function (done) {
- let newBlock, oldBlock
- oldBlock = { number: '0x01' }
- newBlock = { number: '0x03' }
+ const oldBlock = { number: '0x01' }
+ const newBlock = { number: '0x03' }
pendingTxTracker._checkPendingTxs = done
pendingTxTracker.queryPendingTxs({ oldBlock, newBlock })
})
it('should not call #_checkPendingTxs if oldBlock and the newBlock have a diff of 1 or less', function (done) {
- let newBlock, oldBlock
- oldBlock = { number: '0x1' }
- newBlock = { number: '0x2' }
+ const oldBlock = { number: '0x1' }
+ const newBlock = { number: '0x2' }
pendingTxTracker._checkPendingTxs = () => {
const err = new Error('should not call #_checkPendingTxs if oldBlock and the newBlock have a diff of 1 or less')
done(err)
@@ -189,7 +175,7 @@ describe('PendingTransactionTracker', function () {
txMeta2.id = 2
txMeta3.id = 3
txList = [txMeta, txMeta2, txMeta3].map((tx) => {
- tx.processed = new Promise ((resolve) => { tx.resolve = resolve })
+ tx.processed = new Promise((resolve) => { tx.resolve = resolve })
return tx
})
})
@@ -197,7 +183,6 @@ describe('PendingTransactionTracker', function () {
it('should warp all txMeta\'s in #_checkPendingTx', function (done) {
pendingTxTracker.getPendingTransactions = () => txList
pendingTxTracker._checkPendingTx = (tx) => { tx.resolve(tx) }
- const list = txList.map
Promise.all(txList.map((tx) => tx.processed))
.then((txCompletedList) => done())
.catch(done)
@@ -207,11 +192,11 @@ describe('PendingTransactionTracker', function () {
})
describe('#resubmitPendingTxs', function () {
- const blockStub = { number: '0x0' };
+ const blockStub = { number: '0x0' }
beforeEach(function () {
const txMeta2 = txMeta3 = txMeta
txList = [txMeta, txMeta2, txMeta3].map((tx) => {
- tx.processed = new Promise ((resolve) => { tx.resolve = resolve })
+ tx.processed = new Promise((resolve) => { tx.resolve = resolve })
return tx
})
})
@@ -228,7 +213,7 @@ describe('PendingTransactionTracker', function () {
pendingTxTracker.resubmitPendingTxs(blockStub)
})
it('should not emit \'tx:failed\' if the txMeta throws a known txError', function (done) {
- knownErrors =[
+ knownErrors = [
// geth
' Replacement transaction Underpriced ',
' known transaction',
@@ -275,7 +260,7 @@ describe('PendingTransactionTracker', function () {
})
describe('#_resubmitTx', function () {
const mockFirstRetryBlockNumber = '0x1'
- let txMetaToTestExponentialBackoff
+ let txMetaToTestExponentialBackoff, enoughBalance
beforeEach(() => {
pendingTxTracker.getBalance = (address) => {
@@ -298,7 +283,7 @@ describe('PendingTransactionTracker', function () {
})
it('should publish the transaction', function (done) {
- const enoughBalance = '0x100000'
+ enoughBalance = '0x100000'
// Stubbing out current account state:
// Adding the fake tx:
@@ -313,7 +298,7 @@ describe('PendingTransactionTracker', function () {
})
it('should not publish the transaction if the limit of retries has been exceeded', function (done) {
- const enoughBalance = '0x100000'
+ enoughBalance = '0x100000'
const mockLatestBlockNumber = '0x5'
pendingTxTracker._resubmitTx(txMetaToTestExponentialBackoff, mockLatestBlockNumber)
@@ -327,7 +312,7 @@ describe('PendingTransactionTracker', function () {
})
it('should publish the transaction if the number of blocks since last retry exceeds the last set limit', function (done) {
- const enoughBalance = '0x100000'
+ enoughBalance = '0x100000'
const mockLatestBlockNumber = '0x11'
pendingTxTracker._resubmitTx(txMetaToTestExponentialBackoff, mockLatestBlockNumber)
@@ -342,8 +327,8 @@ describe('PendingTransactionTracker', function () {
})
describe('#_checkIfNonceIsTaken', function () {
- beforeEach ( function () {
- let confirmedTxList = [{
+ beforeEach(function () {
+ const confirmedTxList = [{
id: 1,
hash: '0x0593ee121b92e10d63150ad08b4b8f9c7857d1bd160195ee648fb9a0f8d00eeb',
status: 'confirmed',
diff --git a/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js b/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js
index 56e8d50db..cb413545f 100644
--- a/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js
+++ b/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js
@@ -28,7 +28,7 @@ describe('Recipient Blacklist Checker', function () {
it('does not fail on test networks', function () {
let callCount = 0
const networks = [ROPSTEN_CODE, RINKEYBY_CODE, KOVAN_CODE]
- for (let networkId in networks) {
+ for (const networkId in networks) {
publicAccounts.forEach((account) => {
recipientBlackListChecker.checkAccount(networkId, account)
callCount++
@@ -61,7 +61,7 @@ describe('Recipient Blacklist Checker', function () {
} catch (err) {
assert.equal(err.message, 'Recipient is a public account')
}
- })
+ })
it('fails for public account - lowercase', async function () {
const mainnetId = 1
@@ -72,6 +72,6 @@ describe('Recipient Blacklist Checker', function () {
} catch (err) {
assert.equal(err.message, 'Recipient is a public account')
}
- })
+ })
})
})
diff --git a/test/unit/app/controllers/transactions/tx-controller-test.js b/test/unit/app/controllers/transactions/tx-controller-test.js
index 9bdfe7c1a..d4c5ff0ec 100644
--- a/test/unit/app/controllers/transactions/tx-controller-test.js
+++ b/test/unit/app/controllers/transactions/tx-controller-test.js
@@ -1,20 +1,17 @@
const assert = require('assert')
const ethUtil = require('ethereumjs-util')
const EthTx = require('ethereumjs-tx')
-const EthjsQuery = require('ethjs-query')
const ObservableStore = require('obs-store')
const sinon = require('sinon')
const TransactionController = require('../../../../../app/scripts/controllers/transactions')
-const TxGasUtils = require('../../../../../app/scripts/controllers/transactions/tx-gas-utils')
const { createTestProviderTools, getTestAccounts } = require('../../../../stub/provider')
const noop = () => true
const currentNetworkId = 42
-const otherNetworkId = 36
describe('Transaction Controller', function () {
- let txController, provider, providerResultStub, query, fromAccount
+ let txController, provider, providerResultStub, fromAccount
beforeEach(function () {
providerResultStub = {
@@ -24,7 +21,6 @@ describe('Transaction Controller', function () {
eth_getCode: '0x',
}
provider = createTestProviderTools({ scaffold: providerResultStub }).provider
- query = new EthjsQuery(provider)
fromAccount = getTestAccounts()[0]
txController = new TransactionController({
@@ -388,7 +384,7 @@ describe('Transaction Controller', function () {
describe('#retryTransaction', function () {
it('should create a new txMeta with the same txParams as the original one', function (done) {
- let txParams = {
+ const txParams = {
nonce: '0x00',
from: '0xB09d8505E1F4EF1CeA089D47094f5DD3464083d4',
to: '0xB09d8505E1F4EF1CeA089D47094f5DD3464083d4',
diff --git a/test/unit/app/controllers/transactions/tx-gas-util-test.js b/test/unit/app/controllers/transactions/tx-gas-util-test.js
index d1ee86033..31defd6ed 100644
--- a/test/unit/app/controllers/transactions/tx-gas-util-test.js
+++ b/test/unit/app/controllers/transactions/tx-gas-util-test.js
@@ -1,6 +1,5 @@
const assert = require('assert')
const Transaction = require('ethereumjs-tx')
-const BN = require('bn.js')
const { hexToBn, bnToHex } = require('../../../../../app/scripts/lib/util')
diff --git a/test/unit/app/controllers/transactions/tx-state-history-helper-test.js b/test/unit/app/controllers/transactions/tx-state-history-helper-test.js
index f4c3a6be1..fba0e7fda 100644
--- a/test/unit/app/controllers/transactions/tx-state-history-helper-test.js
+++ b/test/unit/app/controllers/transactions/tx-state-history-helper-test.js
@@ -2,16 +2,16 @@ const assert = require('assert')
const txStateHistoryHelper = require('../../../../../app/scripts/controllers/transactions/lib/tx-state-history-helper')
const testVault = require('../../../../data/v17-long-history.json')
-describe ('Transaction state history helper', function () {
+describe('Transaction state history helper', function () {
describe('#snapshotFromTxMeta', function () {
it('should clone deep', function () {
const input = {
foo: {
bar: {
- bam: 'baz'
- }
- }
+ bam: 'baz',
+ },
+ },
}
const output = txStateHistoryHelper.snapshotFromTxMeta(input)
assert('foo' in output, 'has a foo key')
@@ -50,14 +50,14 @@ describe ('Transaction state history helper', function () {
it('replaying history does not mutate the original obj', function () {
const initialState = { test: true, message: 'hello', value: 1 }
const diff1 = [{
- "op": "replace",
- "path": "/message",
- "value": "haay",
+ 'op': 'replace',
+ 'path': '/message',
+ 'value': 'haay',
}]
const diff2 = [{
- "op": "replace",
- "path": "/value",
- "value": 2,
+ 'op': 'replace',
+ 'path': '/value',
+ 'value': 2,
}]
const history = [initialState, diff1, diff2]
@@ -72,15 +72,15 @@ describe ('Transaction state history helper', function () {
describe('#generateHistoryEntry', function () {
- function generateHistoryEntryTest(note) {
+ function generateHistoryEntryTest (note) {
const prevState = {
someValue: 'value 1',
foo: {
bar: {
- bam: 'baz'
- }
- }
+ bam: 'baz',
+ },
+ },
}
const nextState = {
@@ -89,9 +89,9 @@ describe ('Transaction state history helper', function () {
foo: {
newPropFirstLevel: 'new property - first level',
bar: {
- bam: 'baz'
- }
- }
+ bam: 'baz',
+ },
+ },
}
const before = new Date().getTime()
@@ -106,8 +106,7 @@ describe ('Transaction state history helper', function () {
assert.equal(result[0].path, expectedEntry1.path)
assert.equal(result[0].value, expectedEntry1.value)
assert.equal(result[0].value, expectedEntry1.value)
- if (note)
- assert.equal(result[0].note, note)
+ if (note) { assert.equal(result[0].note, note) }
assert.ok(result[0].timestamp >= before && result[0].timestamp <= after)
@@ -124,6 +123,6 @@ describe ('Transaction state history helper', function () {
it('should add note to first entry', function () {
generateHistoryEntryTest('custom note')
- })
+ })
})
-}) \ No newline at end of file
+})
diff --git a/test/unit/app/controllers/transactions/tx-state-manager-test.js b/test/unit/app/controllers/transactions/tx-state-manager-test.js
index 20bc08b94..2f91b1545 100644
--- a/test/unit/app/controllers/transactions/tx-state-manager-test.js
+++ b/test/unit/app/controllers/transactions/tx-state-manager-test.js
@@ -1,6 +1,4 @@
const assert = require('assert')
-const clone = require('clone')
-const ObservableStore = require('obs-store')
const TxStateManager = require('../../../../../app/scripts/controllers/transactions/tx-state-manager')
const txStateHistoryHelper = require('../../../../../app/scripts/controllers/transactions/lib/tx-state-history-helper')
const noop = () => true
@@ -16,23 +14,23 @@ describe('TransactionStateManager', function () {
transactions: [],
},
txHistoryLimit: 10,
- getNetwork: () => currentNetworkId
+ getNetwork: () => currentNetworkId,
})
})
describe('#setTxStatusSigned', function () {
it('sets the tx status to signed', function () {
- let tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx, noop)
txStateManager.setTxStatusSigned(1)
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.ok(Array.isArray(result))
assert.equal(result.length, 1)
assert.equal(result[0].status, 'signed')
})
it('should emit a signed event to signal the exciton of callback', (done) => {
- let tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
const noop = function () {
assert(true, 'event listener has been triggered and noop executed')
done()
@@ -46,21 +44,24 @@ describe('TransactionStateManager', function () {
describe('#setTxStatusRejected', function () {
it('sets the tx status to rejected', function () {
- let tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx)
txStateManager.setTxStatusRejected(1)
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.ok(Array.isArray(result))
assert.equal(result.length, 1)
assert.equal(result[0].status, 'rejected')
})
it('should emit a rejected event to signal the exciton of callback', (done) => {
- let tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const tx = { id: 1, status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx)
const noop = function (err, txId) {
- assert(true, 'event listener has been triggered and noop executed')
- done()
+ if (err) {
+ console.log('Error: ', err)
+ }
+ assert(true, 'event listener has been triggered and noop executed')
+ done()
}
txStateManager.on('1:rejected', noop)
txStateManager.setTxStatusRejected(1)
@@ -69,7 +70,7 @@ describe('TransactionStateManager', function () {
describe('#getFullTxList', function () {
it('when new should return empty array', function () {
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.ok(Array.isArray(result))
assert.equal(result.length, 0)
})
@@ -77,7 +78,7 @@ describe('TransactionStateManager', function () {
describe('#getTxList', function () {
it('when new should return empty array', function () {
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.ok(Array.isArray(result))
assert.equal(result.length, 0)
})
@@ -85,21 +86,21 @@ describe('TransactionStateManager', function () {
describe('#addTx', function () {
it('adds a tx returned in getTxList', function () {
- let tx = { id: 1, status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const tx = { id: 1, status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx, noop)
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.ok(Array.isArray(result))
assert.equal(result.length, 1)
assert.equal(result[0].id, 1)
})
it('does not override txs from other networks', function () {
- let tx = { id: 1, status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }
- let tx2 = { id: 2, status: 'confirmed', metamaskNetworkId: otherNetworkId, txParams: {} }
+ const tx = { id: 1, status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const tx2 = { id: 2, status: 'confirmed', metamaskNetworkId: otherNetworkId, txParams: {} }
txStateManager.addTx(tx, noop)
txStateManager.addTx(tx2, noop)
- let result = txStateManager.getFullTxList()
- let result2 = txStateManager.getTxList()
+ const result = txStateManager.getFullTxList()
+ const result2 = txStateManager.getTxList()
assert.equal(result.length, 2, 'txs were deleted')
assert.equal(result2.length, 1, 'incorrect number of txs on network.')
})
@@ -110,7 +111,7 @@ describe('TransactionStateManager', function () {
const tx = { id: i, time: new Date(), status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx, noop)
}
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.equal(result.length, limit, `limit of ${limit} txs enforced`)
assert.equal(result[0].id, 1, 'early txs truncted')
})
@@ -121,20 +122,20 @@ describe('TransactionStateManager', function () {
const tx = { id: i, time: new Date(), status: 'rejected', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx, noop)
}
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.equal(result.length, limit, `limit of ${limit} txs enforced`)
assert.equal(result[0].id, 1, 'early txs truncted')
})
it('cuts off early txs beyond a limit but does not cut unapproved txs', function () {
- let unconfirmedTx = { id: 0, time: new Date(), status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
+ const unconfirmedTx = { id: 0, time: new Date(), status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(unconfirmedTx, noop)
const limit = txStateManager.txHistoryLimit
for (let i = 1; i < limit + 1; i++) {
const tx = { id: i, time: new Date(), status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }
txStateManager.addTx(tx, noop)
}
- let result = txStateManager.getTxList()
+ const result = txStateManager.getTxList()
assert.equal(result.length, limit, `limit of ${limit} txs enforced`)
assert.equal(result[0].id, 0, 'first tx should still be there')
assert.equal(result[0].status, 'unapproved', 'first tx should be unapproved')
@@ -149,7 +150,7 @@ describe('TransactionStateManager', function () {
const txMeta = txStateManager.getTx('1')
txMeta.hash = 'foo'
txStateManager.updateTx(txMeta)
- let result = txStateManager.getTx('1')
+ const result = txStateManager.getTx('1')
assert.equal(result.hash, 'foo')
})
@@ -166,8 +167,6 @@ describe('TransactionStateManager', function () {
},
}
- const updatedMeta = clone(txMeta)
-
txStateManager.addTx(txMeta)
const updatedTx = txStateManager.getTx('1')
// verify tx was initialized correctly
@@ -185,7 +184,7 @@ describe('TransactionStateManager', function () {
// validate history was updated
assert.equal(result.history.length, 2, 'two history items (initial + diff)')
assert.equal(result.history[1].length, 1, 'two history state items (initial + diff)')
-
+
const expectedEntry = { op: 'replace', path: '/txParams/gasPrice', value: desiredGasPrice }
assert.deepEqual(result.history[1][0].op, expectedEntry.op, 'two history items (initial + diff) operation')
assert.deepEqual(result.history[1][0].path, expectedEntry.path, 'two history items (initial + diff) path')
diff --git a/test/unit/app/controllers/transactions/tx-utils-test.js b/test/unit/app/controllers/transactions/tx-utils-test.js
index 115127f85..029fab4d5 100644
--- a/test/unit/app/controllers/transactions/tx-utils-test.js
+++ b/test/unit/app/controllers/transactions/tx-utils-test.js
@@ -27,7 +27,7 @@ describe('txUtils', function () {
describe('#normalizeTxParams', () => {
it('should normalize txParams', () => {
- let txParams = {
+ const txParams = {
chainId: '0x1',
from: 'a7df1beDBF813f57096dF77FCd515f0B3900e402',
to: null,
@@ -91,7 +91,7 @@ describe('txUtils', function () {
assert.throws(() => { txUtils.validateFrom(txParams) }, Error, `Invalid from address`)
// should run
- txParams.from ='0x1678a085c290ebd122dc42cba69373b5953b831d'
+ txParams.from = '0x1678a085c290ebd122dc42cba69373b5953b831d'
txUtils.validateFrom(txParams)
})
})
diff --git a/test/unit/app/edge-encryptor-test.js b/test/unit/app/edge-encryptor-test.js
index cc9777389..1a6255b36 100644
--- a/test/unit/app/edge-encryptor-test.js
+++ b/test/unit/app/edge-encryptor-test.js
@@ -11,7 +11,7 @@ global.crypto = global.crypto || {
array[i] = Math.random() * 100
}
return array
- }
+ },
}
describe('EdgeEncryptor', function () {
@@ -33,10 +33,10 @@ describe('EdgeEncryptor', function () {
it('should return proper format.', function (done) {
edgeEncryptor.encrypt(password, data)
.then(function (encryptedData) {
- let encryptedObject = JSON.parse(encryptedData)
+ const encryptedObject = JSON.parse(encryptedData)
assert.ok(encryptedObject.data, 'there is no data')
- assert.ok(encryptedObject.iv && encryptedObject.iv.length != 0, 'there is no iv')
- assert.ok(encryptedObject.salt && encryptedObject.salt.length != 0, 'there is no salt')
+ assert.ok(encryptedObject.iv && encryptedObject.iv.length !== 0, 'there is no iv')
+ assert.ok(encryptedObject.salt && encryptedObject.salt.length !== 0, 'there is no salt')
done()
}).catch(function (err) {
done(err)
@@ -56,7 +56,7 @@ describe('EdgeEncryptor', function () {
assert.notEqual(encryptedData[1].length, 0)
done()
})
- })
+ })
})
describe('decrypt', function () {
diff --git a/test/unit/app/nodeify-test.js b/test/unit/app/nodeify-test.js
index 901603c8b..938b76c68 100644
--- a/test/unit/app/nodeify-test.js
+++ b/test/unit/app/nodeify-test.js
@@ -13,8 +13,12 @@ describe('nodeify', function () {
it('should retain original context', function (done) {
var nodified = nodeify(obj.promiseFunc, obj)
nodified('baz', function (err, res) {
- assert.equal(res, 'barbaz')
- done()
+ if (!err) {
+ assert.equal(res, 'barbaz')
+ done()
+ } else {
+ done(new Error(err.toString()))
+ }
})
})
diff --git a/test/unit/app/pending-balance-test.js b/test/unit/app/pending-balance-test.js
index 1418e4a4e..508635c46 100644
--- a/test/unit/app/pending-balance-test.js
+++ b/test/unit/app/pending-balance-test.js
@@ -2,7 +2,6 @@ const assert = require('assert')
const PendingBalanceCalculator = require('../../../app/scripts/lib/pending-balance-calculator')
const MockTxGen = require('../../lib/mock-tx-gen')
const BN = require('ethereumjs-util').BN
-let providerResultStub = {}
const zeroBn = new BN(0)
const etherBn = new BN(String(1e18))
@@ -20,7 +19,7 @@ describe('PendingBalanceCalculator', function () {
value: ether,
gasPrice: '0x0',
gas: '0x0',
- }
+ },
}, { count: 1 })
const balanceCalculator = generateBalanceCalcWith([], zeroBn)
@@ -36,7 +35,7 @@ describe('PendingBalanceCalculator', function () {
value: '0x0',
gasPrice: '0x2',
gas: '0x3',
- }
+ },
}, { count: 1 })
const balanceCalculator = generateBalanceCalcWith([], zeroBn)
@@ -66,7 +65,7 @@ describe('PendingBalanceCalculator', function () {
value: ether,
gasPrice: '0x0',
gas: '0x0',
- }
+ },
}, { count: 1 })
balanceCalculator = generateBalanceCalcWith(pendingTxs, etherBn)
diff --git a/test/unit/app/seed-phrase-verifier-test.js b/test/unit/app/seed-phrase-verifier-test.js
index b0da534da..d8720d5a0 100644
--- a/test/unit/app/seed-phrase-verifier-test.js
+++ b/test/unit/app/seed-phrase-verifier-test.js
@@ -9,11 +9,10 @@ describe('SeedPhraseVerifier', function () {
describe('verifyAccounts', function () {
- let password = 'passw0rd1'
- let hdKeyTree = 'HD Key Tree'
+ const password = 'passw0rd1'
+ const hdKeyTree = 'HD Key Tree'
let keyringController
- let vault
let primaryKeyring
beforeEach(async function () {
@@ -24,60 +23,60 @@ describe('SeedPhraseVerifier', function () {
assert(keyringController)
- vault = await keyringController.createNewVaultAndKeychain(password)
+ await keyringController.createNewVaultAndKeychain(password)
primaryKeyring = keyringController.getKeyringsByType(hdKeyTree)[0]
})
it('should be able to verify created account with seed words', async function () {
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 1)
- let serialized = await primaryKeyring.serialize()
- let seedWords = serialized.mnemonic
+ const serialized = await primaryKeyring.serialize()
+ const seedWords = serialized.mnemonic
assert.notEqual(seedWords.length, 0)
-
- let result = await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
+
+ await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
})
it('should be able to verify created account (upper case) with seed words', async function () {
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 1)
- let upperCaseAccounts = [createdAccounts[0].toUpperCase()]
+ const upperCaseAccounts = [createdAccounts[0].toUpperCase()]
- let serialized = await primaryKeyring.serialize()
- let seedWords = serialized.mnemonic
+ const serialized = await primaryKeyring.serialize()
+ const seedWords = serialized.mnemonic
assert.notEqual(seedWords.length, 0)
-
- let result = await seedPhraseVerifier.verifyAccounts(upperCaseAccounts, seedWords)
+
+ await seedPhraseVerifier.verifyAccounts(upperCaseAccounts, seedWords)
})
it('should be able to verify created account (lower case) with seed words', async function () {
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 1)
- let lowerCaseAccounts = [createdAccounts[0].toLowerCase()]
+ const lowerCaseAccounts = [createdAccounts[0].toLowerCase()]
- let serialized = await primaryKeyring.serialize()
- let seedWords = serialized.mnemonic
+ const serialized = await primaryKeyring.serialize()
+ const seedWords = serialized.mnemonic
assert.notEqual(seedWords.length, 0)
-
- let result = await seedPhraseVerifier.verifyAccounts(lowerCaseAccounts, seedWords)
+
+ await seedPhraseVerifier.verifyAccounts(lowerCaseAccounts, seedWords)
})
it('should return error with good but different seed words', async function () {
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 1)
- let serialized = await primaryKeyring.serialize()
- let seedWords = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
-
- try {
- let result = await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
- assert.fail("Should reject")
+ await primaryKeyring.serialize()
+ const seedWords = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
+
+ try {
+ await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
+ assert.fail('Should reject')
} catch (err) {
assert.ok(err.message.indexOf('Not identical accounts!') >= 0, 'Wrong error message')
}
@@ -85,15 +84,15 @@ describe('SeedPhraseVerifier', function () {
it('should return error with undefined existing accounts', async function () {
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 1)
- let serialized = await primaryKeyring.serialize()
- let seedWords = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
+ await primaryKeyring.serialize()
+ const seedWords = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
- try {
- let result = await seedPhraseVerifier.verifyAccounts(undefined, seedWords)
- assert.fail("Should reject")
+ try {
+ await seedPhraseVerifier.verifyAccounts(undefined, seedWords)
+ assert.fail('Should reject')
} catch (err) {
assert.equal(err.message, 'No created accounts defined.')
}
@@ -101,15 +100,15 @@ describe('SeedPhraseVerifier', function () {
it('should return error with empty accounts array', async function () {
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 1)
- let serialized = await primaryKeyring.serialize()
- let seedWords = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
+ await primaryKeyring.serialize()
+ const seedWords = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
- try {
- let result = await seedPhraseVerifier.verifyAccounts([], seedWords)
- assert.fail("Should reject")
+ try {
+ await seedPhraseVerifier.verifyAccounts([], seedWords)
+ assert.fail('Should reject')
} catch (err) {
assert.equal(err.message, 'No created accounts defined.')
}
@@ -117,17 +116,17 @@ describe('SeedPhraseVerifier', function () {
it('should be able to verify more than one created account with seed words', async function () {
- const keyState = await keyringController.addNewAccount(primaryKeyring)
- const keyState2 = await keyringController.addNewAccount(primaryKeyring)
+ await keyringController.addNewAccount(primaryKeyring)
+ await keyringController.addNewAccount(primaryKeyring)
- let createdAccounts = await primaryKeyring.getAccounts()
+ const createdAccounts = await primaryKeyring.getAccounts()
assert.equal(createdAccounts.length, 3)
- let serialized = await primaryKeyring.serialize()
- let seedWords = serialized.mnemonic
+ const serialized = await primaryKeyring.serialize()
+ const seedWords = serialized.mnemonic
assert.notEqual(seedWords.length, 0)
-
- let result = await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
+
+ await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
})
})
})
diff --git a/test/unit/app/util-test.js b/test/unit/app/util-test.js
index 670bc4d22..656b22d92 100644
--- a/test/unit/app/util-test.js
+++ b/test/unit/app/util-test.js
@@ -38,4 +38,4 @@ describe('SufficientBalance', function () {
const result = sufficientBalance(tx, balance)
assert.ok(!result, 'insufficient balance found.')
})
-}) \ No newline at end of file
+})
diff --git a/test/unit/components/balance-component-test.js b/test/unit/components/balance-component-test.js
index 9b1e82acf..81e6fdf9e 100644
--- a/test/unit/components/balance-component-test.js
+++ b/test/unit/components/balance-component-test.js
@@ -8,7 +8,7 @@ const mockState = {
accounts: { abc: {} },
network: 1,
selectedAddress: 'abc',
- }
+ },
}
describe('BalanceComponent', function () {
diff --git a/test/unit/components/bn-as-decimal-input-test.js b/test/unit/components/bn-as-decimal-input-test.js
index 7b9d9814f..fab396548 100644
--- a/test/unit/components/bn-as-decimal-input-test.js
+++ b/test/unit/components/bn-as-decimal-input-test.js
@@ -52,13 +52,13 @@ describe('BnInput', function () {
it('can tolerate wei precision', function (done) {
const renderer = ReactTestUtils.createRenderer()
- let valueStr = '1000000000'
+ const valueStr = '1000000000'
const value = new BN(valueStr, 10)
const inputStr = '1.000000001'
- let targetStr = '1000000001'
+ const targetStr = '1000000001'
const target = new BN(targetStr, 10)
diff --git a/test/unit/components/pending-tx-test.js b/test/unit/components/pending-tx-test.js
index c6c588e1c..c68e013ac 100644
--- a/test/unit/components/pending-tx-test.js
+++ b/test/unit/components/pending-tx-test.js
@@ -13,7 +13,7 @@ const mockState = {
identities,
conversionRate: 10,
selectedAddress: 'abc',
- }
+ },
}
describe('PendingTx', function () {
diff --git a/test/unit/migrations/022-test.js b/test/unit/migrations/022-test.js
index 1333d929d..f8ee00e38 100644
--- a/test/unit/migrations/022-test.js
+++ b/test/unit/migrations/022-test.js
@@ -2,14 +2,14 @@ const assert = require('assert')
const migration22 = require('../../../app/scripts/migrations/022')
const properTime = (new Date()).getTime()
const storage = {
- "meta": {},
- "data": {
- "TransactionController": {
- "transactions": [
- { "status": "submitted" },
- { "status": "submitted", "submittedTime": properTime },
- {"status": "confirmed"},
- ]
+ 'meta': {},
+ 'data': {
+ 'TransactionController': {
+ 'transactions': [
+ { 'status': 'submitted' },
+ { 'status': 'submitted', 'submittedTime': properTime },
+ {'status': 'confirmed'},
+ ],
},
},
}
diff --git a/test/unit/migrations/023-test.js b/test/unit/migrations/023-test.js
index be432d9fa..7da94448d 100644
--- a/test/unit/migrations/023-test.js
+++ b/test/unit/migrations/023-test.js
@@ -1,12 +1,11 @@
const assert = require('assert')
const migration23 = require('../../../app/scripts/migrations/023')
-const properTime = (new Date()).getTime()
const storage = {
- "meta": {},
- "data": {
- "TransactionController": {
- "transactions": [
- ]
+ 'meta': {},
+ 'data': {
+ 'TransactionController': {
+ 'transactions': [
+ ],
},
},
}
@@ -53,7 +52,6 @@ while (transactions20.length < 20) {
}
-
storage.data.TransactionController.transactions = transactions
describe('storage is migrated successfully and the proper transactions are remove from state', () => {
diff --git a/test/unit/migrations/024-test.js b/test/unit/migrations/024-test.js
index c3c03d06b..c7b0611bc 100644
--- a/test/unit/migrations/024-test.js
+++ b/test/unit/migrations/024-test.js
@@ -4,13 +4,12 @@ const firstTimeState = {
meta: {},
data: require('../../../app/scripts/first-time-state'),
}
-const properTime = (new Date()).getTime()
const storage = {
- "meta": {},
- "data": {
- "TransactionController": {
- "transactions": [
- ]
+ 'meta': {},
+ 'data': {
+ 'TransactionController': {
+ 'transactions': [
+ ],
},
},
}
diff --git a/test/unit/migrations/025-test.js b/test/unit/migrations/025-test.js
index 76c25dbb6..1e56913a1 100644
--- a/test/unit/migrations/025-test.js
+++ b/test/unit/migrations/025-test.js
@@ -6,11 +6,11 @@ const firstTimeState = {
}
const storage = {
- "meta": {},
- "data": {
- "TransactionController": {
- "transactions": [
- ]
+ 'meta': {},
+ 'data': {
+ 'TransactionController': {
+ 'transactions': [
+ ],
},
},
}
diff --git a/test/unit/migrations/template-test.js b/test/unit/migrations/template-test.js
index 35060e2fe..0db69d65a 100644
--- a/test/unit/migrations/template-test.js
+++ b/test/unit/migrations/template-test.js
@@ -1,6 +1,5 @@
const assert = require('assert')
const migrationTemplate = require('../../../app/scripts/migrations/template')
-const properTime = (new Date()).getTime()
const storage = {
meta: {},
data: {},
diff --git a/test/unit/responsive/components/dropdown-test.js b/test/unit/responsive/components/dropdown-test.js
index 982d8c6ec..493b01918 100644
--- a/test/unit/responsive/components/dropdown-test.js
+++ b/test/unit/responsive/components/dropdown-test.js
@@ -1,24 +1,24 @@
-const assert = require('assert');
+const assert = require('assert')
-const h = require('react-hyperscript');
-const sinon = require('sinon');
-const path = require('path');
-const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdowns', 'index.js')).Dropdown;
+const h = require('react-hyperscript')
+const sinon = require('sinon')
+const path = require('path')
+const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdowns', 'index.js')).Dropdown
const { createMockStore } = require('redux-test-utils')
const { mountWithStore } = require('../../../lib/shallow-with-store')
const mockState = {
metamask: {
- }
+ },
}
describe('Dropdown components', function () {
- let onClickOutside;
- let closeMenu;
- let onClick;
+ let onClickOutside
+ let closeMenu
+ let onClick
- let dropdownComponentProps = {
+ const dropdownComponentProps = {
isOpen: true,
zIndex: 11,
onClickOutside,
@@ -34,9 +34,9 @@ describe('Dropdown components', function () {
let store
let component
beforeEach(function () {
- onClickOutside = sinon.spy();
- closeMenu = sinon.spy();
- onClick = sinon.spy();
+ onClickOutside = sinon.spy()
+ closeMenu = sinon.spy()
+ onClick = sinon.spy()
store = createMockStore(mockState)
component = mountWithStore(h(
@@ -61,21 +61,21 @@ describe('Dropdown components', function () {
})
it('can render two items', function () {
- const items = dropdownComponent.find('li');
- assert.equal(items.length, 2);
- });
+ const items = dropdownComponent.find('li')
+ assert.equal(items.length, 2)
+ })
- it('closes when item clicked', function() {
- const items = dropdownComponent.find('li');
- const node = items.at(0);
- node.simulate('click');
- assert.equal(node.props().closeMenu, closeMenu);
- });
+ it('closes when item clicked', function () {
+ const items = dropdownComponent.find('li')
+ const node = items.at(0)
+ node.simulate('click')
+ assert.equal(node.props().closeMenu, closeMenu)
+ })
- it('invokes click handler when item clicked', function() {
- const items = dropdownComponent.find('li');
- const node = items.at(0);
- node.simulate('click');
- assert.equal(onClick.calledOnce, true);
- });
-});
+ it('invokes click handler when item clicked', function () {
+ const items = dropdownComponent.find('li')
+ const node = items.at(0)
+ node.simulate('click')
+ assert.equal(onClick.calledOnce, true)
+ })
+})