mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 09:57:02 +01:00
eslint --fix .
This commit is contained in:
parent
cc11a62397
commit
a8f745f9fe
@ -115,8 +115,8 @@ function logStreamDisconnectWarning (remoteLabel, err) {
|
||||
* @returns {boolean} {@code true} if Web3 should be injected
|
||||
*/
|
||||
function shouldInjectWeb3 () {
|
||||
return doctypeCheck() && suffixCheck()
|
||||
&& documentElementCheck() && !blacklistedDomainCheck()
|
||||
return doctypeCheck() && suffixCheck() &&
|
||||
documentElementCheck() && !blacklistedDomainCheck()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -111,9 +111,9 @@ class PreferencesController {
|
||||
* @returns {Promise<string>} selectedAddress the selected address.
|
||||
*/
|
||||
syncAddresses (addresses) {
|
||||
let { identities, lostIdentities } = this.store.getState()
|
||||
const { identities, lostIdentities } = this.store.getState()
|
||||
|
||||
let newlyLost = {}
|
||||
const newlyLost = {}
|
||||
Object.keys(identities).forEach((identity) => {
|
||||
if (!addresses.includes(identity)) {
|
||||
newlyLost[identity] = identities[identity]
|
||||
@ -128,7 +128,7 @@ class PreferencesController {
|
||||
if (this.diagnostics) this.diagnostics.reportOrphans(newlyLost)
|
||||
|
||||
// store lost accounts
|
||||
for (let key in newlyLost) {
|
||||
for (const key in newlyLost) {
|
||||
lostIdentities[key] = newlyLost[key]
|
||||
}
|
||||
}
|
||||
|
@ -405,7 +405,6 @@ module.exports = class MetamaskController extends EventEmitter {
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// VAULT / KEYRING RELATED METHODS
|
||||
//=============================================================================
|
||||
|
@ -35,10 +35,10 @@ function transformState (state) {
|
||||
|
||||
if (transactions.length <= 40) return newState
|
||||
|
||||
let reverseTxList = transactions.reverse()
|
||||
const reverseTxList = transactions.reverse()
|
||||
let stripping = true
|
||||
while (reverseTxList.length > 40 && stripping) {
|
||||
let txIndex = reverseTxList.findIndex((txMeta) => {
|
||||
const txIndex = reverseTxList.findIndex((txMeta) => {
|
||||
return (txMeta.status === 'failed' ||
|
||||
txMeta.status === 'rejected' ||
|
||||
txMeta.status === 'confirmed' ||
|
||||
|
@ -7,6 +7,6 @@ var changelog = fs.readFileSync(path.join(__dirname, '..', 'CHANGELOG.md')).toSt
|
||||
|
||||
var log = changelog.split(version)[1].split('##')[0].trim()
|
||||
|
||||
let msg = `*MetaMask ${version}* now published! It should auto-update soon!\n${log}`
|
||||
const msg = `*MetaMask ${version}* now published! It should auto-update soon!\n${log}`
|
||||
|
||||
console.log(msg)
|
||||
|
@ -1,5 +1,5 @@
|
||||
module.exports = {
|
||||
"confirm sig requests": {
|
||||
'confirm sig requests': {
|
||||
signMessage: (msgData, cb) => {
|
||||
const stateUpdate = {
|
||||
unapprovedMsgs: {},
|
||||
|
@ -6,12 +6,12 @@ const path = require('path')
|
||||
const port = 8124
|
||||
|
||||
const handler = beefy({
|
||||
entries: {'mocker.js': 'bundle.js'}
|
||||
, cwd: __dirname
|
||||
, live: true
|
||||
, open: true
|
||||
, quiet: false
|
||||
, bundlerFlags: ['-t', 'brfs']
|
||||
entries: {'mocker.js': 'bundle.js'},
|
||||
cwd: __dirname,
|
||||
live: true,
|
||||
open: true,
|
||||
quiet: false,
|
||||
bundlerFlags: ['-t', 'brfs'],
|
||||
})
|
||||
|
||||
|
||||
|
@ -81,7 +81,7 @@ const controller = new MetamaskController({
|
||||
initState: firstTimeState,
|
||||
})
|
||||
global.metamaskController = controller
|
||||
global.platform = new ExtensionPlatform
|
||||
global.platform = new ExtensionPlatform()
|
||||
|
||||
//
|
||||
// User Interface
|
||||
|
@ -39,6 +39,6 @@ extension.runtime.reload = noop
|
||||
extension.tabs.create = noop
|
||||
extension.runtime.getManifest = function () {
|
||||
return {
|
||||
version: 'development'
|
||||
version: 'development',
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@ function NewComponent () {
|
||||
|
||||
NewComponent.prototype.render = function () {
|
||||
const props = this.props
|
||||
let {
|
||||
const {
|
||||
states,
|
||||
selectedKey,
|
||||
actions,
|
||||
|
@ -43,7 +43,7 @@ async function start() {
|
||||
}
|
||||
|
||||
function indicesOf (substring, string) {
|
||||
var a=[],i=-1;
|
||||
while((i=string.indexOf(substring,i+1)) >= 0) a.push(i);
|
||||
return a;
|
||||
var a = [], i = -1
|
||||
while ((i = string.indexOf(substring, i + 1)) >= 0) a.push(i)
|
||||
return a
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ log.setDefaultLevel(1)
|
||||
|
||||
// Query String
|
||||
const qs = require('qs')
|
||||
let queryString = qs.parse(window.location.href.split('#')[1])
|
||||
const queryString = qs.parse(window.location.href.split('#')[1])
|
||||
let selectedView = queryString.view || 'first time'
|
||||
const firstState = states[selectedView]
|
||||
updateQueryParams(selectedView)
|
||||
|
@ -30,14 +30,13 @@ if (specifiedLocale) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
function verifyLocale ({ localeMeta }) {
|
||||
const localeCode = localeMeta.code
|
||||
const localeName = localeMeta.name
|
||||
|
||||
try {
|
||||
const localeFilePath = path.join(process.cwd(), 'app', '_locales', localeCode, 'messages.json')
|
||||
targetLocale = JSON.parse(fs.readFileSync(localeFilePath, 'utf8'));
|
||||
targetLocale = JSON.parse(fs.readFileSync(localeFilePath, 'utf8'))
|
||||
} catch (e) {
|
||||
if (e.code == 'ENOENT') {
|
||||
console.log('Locale file not found')
|
||||
@ -49,7 +48,7 @@ function verifyLocale({ localeMeta }) {
|
||||
|
||||
try {
|
||||
const englishFilePath = path.join(process.cwd(), 'app', '_locales', 'en', 'messages.json')
|
||||
englishLocale = JSON.parse(fs.readFileSync(englishFilePath, 'utf8'));
|
||||
englishLocale = JSON.parse(fs.readFileSync(englishFilePath, 'utf8'))
|
||||
} catch (e) {
|
||||
if (e.code == 'ENOENT') {
|
||||
console.log('English File not found')
|
||||
|
@ -19,13 +19,13 @@ async function versionBump(bumpType, changelog, oldManifest) {
|
||||
return {
|
||||
version: newVersion,
|
||||
manifest: manifest,
|
||||
changelog: logLines.join('\n')
|
||||
changelog: logLines.join('\n'),
|
||||
}
|
||||
}
|
||||
|
||||
function newVersionFrom (manifest, bumpType) {
|
||||
const string = manifest.version
|
||||
let segments = string.split('.').map((str) => parseInt(str))
|
||||
const segments = string.split('.').map((str) => parseInt(str))
|
||||
|
||||
switch (bumpType) {
|
||||
case 'major':
|
||||
|
14
gentests.js
14
gentests.js
@ -31,7 +31,7 @@ async function start (fileRegEx, testGenerator) {
|
||||
let sFileMethodNames
|
||||
let testFilePath
|
||||
async.each(sFiles, async (sFile, cb) => {
|
||||
let [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
|
||||
const [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
|
||||
sFileMethodNames = Object.keys(require(__dirname + '/' + sFile))
|
||||
|
||||
testFilePath = sPath.replace('.', '-').replace('.', '.test.')
|
||||
@ -53,16 +53,16 @@ async function startContainer (fileRegEx, testGenerator) {
|
||||
|
||||
let sFileMethodNames
|
||||
async.each(sFiles, async (sFile, cb) => {
|
||||
console.log(`sFile`, sFile);
|
||||
let [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
|
||||
console.log(`sFile`, sFile)
|
||||
const [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
|
||||
|
||||
let testFilePath = sPath.replace('.', '-').replace('.', '.test.')
|
||||
const testFilePath = sPath.replace('.', '-').replace('.', '.test.')
|
||||
|
||||
await promisify(fs.readFile)(
|
||||
__dirname + '/' + sFile,
|
||||
'utf8',
|
||||
async (err, result) => {
|
||||
console.log(`result`, result.length);
|
||||
console.log(`result`, result.length)
|
||||
const returnObjectStrings = result
|
||||
.match(/return\s(\{[\s\S]+?})\n}/g)
|
||||
.map(str => {
|
||||
@ -113,8 +113,8 @@ async function startContainer (fileRegEx, testGenerator) {
|
||||
})
|
||||
// console.log(`containerTest`, `${__dirname}/${sRootPath}tests/${testFilePath}`, containerTest);
|
||||
console.log('----')
|
||||
console.log(`sRootPath`, sRootPath);
|
||||
console.log(`testFilePath`, testFilePath);
|
||||
console.log(`sRootPath`, sRootPath)
|
||||
console.log(`testFilePath`, testFilePath)
|
||||
await promisify(fs.writeFile)(
|
||||
`${__dirname}/${sRootPath}tests/${testFilePath}`,
|
||||
containerTest,
|
||||
|
24
gulpfile.js
24
gulpfile.js
@ -42,7 +42,7 @@ const commonPlatforms = [
|
||||
// browser webapp
|
||||
'mascara',
|
||||
// browser extensions
|
||||
...browserPlatforms
|
||||
...browserPlatforms,
|
||||
]
|
||||
|
||||
// browser reload
|
||||
@ -159,11 +159,11 @@ gulp.task('manifest:opera', function() {
|
||||
return gulp.src('./dist/opera/manifest.json')
|
||||
.pipe(jsoneditor(function (json) {
|
||||
json.permissions = [
|
||||
"storage",
|
||||
"tabs",
|
||||
"clipboardWrite",
|
||||
"clipboardRead",
|
||||
"http://localhost:8545/"
|
||||
'storage',
|
||||
'tabs',
|
||||
'clipboardWrite',
|
||||
'clipboardRead',
|
||||
'http://localhost:8545/',
|
||||
]
|
||||
return json
|
||||
}))
|
||||
@ -248,17 +248,17 @@ gulp.task('lint-scss', function() {
|
||||
.src('ui/app/css/itcss/**/*.scss')
|
||||
.pipe(gulpStylelint({
|
||||
reporters: [
|
||||
{ formatter: 'string', console: true }
|
||||
{ formatter: 'string', console: true },
|
||||
],
|
||||
fix: true,
|
||||
}));
|
||||
});
|
||||
}))
|
||||
})
|
||||
|
||||
gulp.task('fmt-scss', function () {
|
||||
return gulp.src('ui/app/css/itcss/**/*.scss')
|
||||
.pipe(stylefmt())
|
||||
.pipe(gulp.dest('ui/app/css/itcss'));
|
||||
});
|
||||
.pipe(gulp.dest('ui/app/css/itcss'))
|
||||
})
|
||||
|
||||
// build js
|
||||
|
||||
@ -533,7 +533,7 @@ function bundleTask(opts) {
|
||||
buildStream = buildStream
|
||||
.pipe(uglify({
|
||||
mangle: {
|
||||
reserved: [ 'MetamaskInpageProvider' ]
|
||||
reserved: [ 'MetamaskInpageProvider' ],
|
||||
},
|
||||
}))
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ export default class Breadcrumbs extends Component {
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ class BuyEtherScreen extends Component {
|
||||
|
||||
return (
|
||||
<div
|
||||
className='buy-ether__do-it-later'
|
||||
className="buy-ether__do-it-later"
|
||||
onClick={() => showAccountDetail(address)}
|
||||
>
|
||||
Do it later
|
||||
@ -64,17 +64,17 @@ class BuyEtherScreen extends Component {
|
||||
|
||||
renderCoinbaseLogo () {
|
||||
return (
|
||||
<svg width='140px' height='49px' viewBox='0 0 579 126' version='1.1'>
|
||||
<g id='Page-1' stroke='none' strokeWidth={1} fill='none' fillRule='evenodd'>
|
||||
<g id='Imported-Layers' fill='#0081C9'>
|
||||
<path d='M37.752,125.873 C18.824,125.873 0.369,112.307 0.369,81.549 C0.369,50.79 18.824,37.382 37.752,37.382 C47.059,37.382 54.315,39.749 59.52,43.219 L53.841,55.68 C50.371,53.156 45.166,51.579 39.961,51.579 C28.604,51.579 18.193,60.57 18.193,81.391 C18.193,102.212 28.919,111.361 39.961,111.361 C45.166,111.361 50.371,109.783 53.841,107.26 L59.52,120.036 C54.157,123.664 47.059,125.873 37.752,125.873' id='Fill-1' />
|
||||
<path d='M102.898,125.873 C78.765,125.873 65.515,106.786 65.515,81.549 C65.515,56.311 78.765,37.382 102.898,37.382 C127.032,37.382 140.282,56.311 140.282,81.549 C140.282,106.786 127.032,125.873 102.898,125.873 L102.898,125.873 Z M102.898,51.105 C89.491,51.105 82.866,63.093 82.866,81.391 C82.866,99.688 89.491,111.834 102.898,111.834 C116.306,111.834 122.931,99.688 122.931,81.391 C122.931,63.093 116.306,51.105 102.898,51.105 L102.898,51.105 Z' id='Fill-2' />
|
||||
<path d='M163.468,23.659 C157.79,23.659 153.215,19.243 153.215,13.88 C153.215,8.517 157.79,4.1 163.468,4.1 C169.146,4.1 173.721,8.517 173.721,13.88 C173.721,19.243 169.146,23.659 163.468,23.659 L163.468,23.659 Z M154.793,39.118 L172.144,39.118 L172.144,124.138 L154.793,124.138 L154.793,39.118 Z' id='Fill-3' />
|
||||
<path d='M240.443,124.137 L240.443,67.352 C240.443,57.415 234.449,51.263 222.619,51.263 C216.31,51.263 210.473,52.367 207.003,53.787 L207.003,124.137 L189.81,124.137 L189.81,43.376 C198.328,39.906 209.212,37.382 222.461,37.382 C246.28,37.382 257.794,47.793 257.794,65.775 L257.794,124.137 L240.443,124.137' id='Fill-4' />
|
||||
<path d='M303.536,125.873 C292.494,125.873 281.611,123.191 274.986,119.879 L274.986,0.314 L292.179,0.314 L292.179,41.326 C296.28,39.433 302.905,37.856 308.741,37.856 C330.667,37.856 345.494,53.629 345.494,79.656 C345.494,111.676 328.931,125.873 303.536,125.873 L303.536,125.873 Z M305.744,51.263 C301.012,51.263 295.491,52.367 292.179,54.103 L292.179,109.941 C294.703,111.045 299.593,112.149 304.482,112.149 C318.205,112.149 328.301,102.685 328.301,80.918 C328.301,62.305 319.467,51.263 305.744,51.263 L305.744,51.263 Z' id='Fill-5' />
|
||||
<path d='M392.341,125.873 C367.892,125.873 355.589,115.935 355.589,99.215 C355.589,75.555 380.826,71.296 406.537,69.876 L406.537,64.513 C406.537,53.787 399.439,50.001 388.555,50.001 C380.511,50.001 370.731,52.525 365.053,55.207 L360.636,43.376 C367.419,40.379 378.933,37.382 390.29,37.382 C410.638,37.382 422.942,45.269 422.942,66.248 L422.942,119.879 C416.79,123.191 404.329,125.873 392.341,125.873 L392.341,125.873 Z M406.537,81.391 C389.186,82.337 371.835,83.757 371.835,98.9 C371.835,107.89 378.776,113.411 391.868,113.411 C397.389,113.411 403.856,112.465 406.537,111.203 L406.537,81.391 L406.537,81.391 Z' id='Fill-6' />
|
||||
<path d='M461.743,125.873 C451.806,125.873 441.395,123.191 435.244,119.879 L441.08,106.629 C445.496,109.31 454.803,112.149 461.27,112.149 C470.576,112.149 476.728,107.575 476.728,100.477 C476.728,92.748 470.261,89.751 461.586,86.596 C450.228,82.337 437.452,77.132 437.452,61.201 C437.452,47.162 448.336,37.382 467.264,37.382 C477.517,37.382 486.035,39.906 492.029,43.376 L486.665,55.364 C482.88,52.998 475.309,50.317 469.157,50.317 C460.166,50.317 455.118,55.049 455.118,61.201 C455.118,68.93 461.428,71.611 469.788,74.766 C481.618,79.183 494.71,84.072 494.71,100.635 C494.71,115.935 483.038,125.873 461.743,125.873' id='Fill-7' />
|
||||
<path d='M578.625,81.233 L522.155,89.12 C523.89,104.42 533.828,112.149 548.182,112.149 C556.699,112.149 565.848,110.099 571.684,106.944 L576.732,119.879 C570.107,123.349 558.75,125.873 547.078,125.873 C520.262,125.873 505.277,108.679 505.277,81.549 C505.277,55.522 519.789,37.382 543.607,37.382 C565.69,37.382 578.782,51.894 578.782,74.766 C578.782,76.816 578.782,79.025 578.625,81.233 L578.625,81.233 Z M543.292,50.001 C530.042,50.001 521.367,60.097 521.051,77.763 L562.22,72.084 C562.062,57.257 554.649,50.001 543.292,50.001 L543.292,50.001 Z' id='Fill-8' />
|
||||
<svg width="140px" height="49px" viewBox="0 0 579 126" version="1.1">
|
||||
<g id="Page-1" stroke="none" strokeWidth={1} fill="none" fillRule="evenodd">
|
||||
<g id="Imported-Layers" fill="#0081C9">
|
||||
<path d="M37.752,125.873 C18.824,125.873 0.369,112.307 0.369,81.549 C0.369,50.79 18.824,37.382 37.752,37.382 C47.059,37.382 54.315,39.749 59.52,43.219 L53.841,55.68 C50.371,53.156 45.166,51.579 39.961,51.579 C28.604,51.579 18.193,60.57 18.193,81.391 C18.193,102.212 28.919,111.361 39.961,111.361 C45.166,111.361 50.371,109.783 53.841,107.26 L59.52,120.036 C54.157,123.664 47.059,125.873 37.752,125.873" id="Fill-1" />
|
||||
<path d="M102.898,125.873 C78.765,125.873 65.515,106.786 65.515,81.549 C65.515,56.311 78.765,37.382 102.898,37.382 C127.032,37.382 140.282,56.311 140.282,81.549 C140.282,106.786 127.032,125.873 102.898,125.873 L102.898,125.873 Z M102.898,51.105 C89.491,51.105 82.866,63.093 82.866,81.391 C82.866,99.688 89.491,111.834 102.898,111.834 C116.306,111.834 122.931,99.688 122.931,81.391 C122.931,63.093 116.306,51.105 102.898,51.105 L102.898,51.105 Z" id="Fill-2" />
|
||||
<path d="M163.468,23.659 C157.79,23.659 153.215,19.243 153.215,13.88 C153.215,8.517 157.79,4.1 163.468,4.1 C169.146,4.1 173.721,8.517 173.721,13.88 C173.721,19.243 169.146,23.659 163.468,23.659 L163.468,23.659 Z M154.793,39.118 L172.144,39.118 L172.144,124.138 L154.793,124.138 L154.793,39.118 Z" id="Fill-3" />
|
||||
<path d="M240.443,124.137 L240.443,67.352 C240.443,57.415 234.449,51.263 222.619,51.263 C216.31,51.263 210.473,52.367 207.003,53.787 L207.003,124.137 L189.81,124.137 L189.81,43.376 C198.328,39.906 209.212,37.382 222.461,37.382 C246.28,37.382 257.794,47.793 257.794,65.775 L257.794,124.137 L240.443,124.137" id="Fill-4" />
|
||||
<path d="M303.536,125.873 C292.494,125.873 281.611,123.191 274.986,119.879 L274.986,0.314 L292.179,0.314 L292.179,41.326 C296.28,39.433 302.905,37.856 308.741,37.856 C330.667,37.856 345.494,53.629 345.494,79.656 C345.494,111.676 328.931,125.873 303.536,125.873 L303.536,125.873 Z M305.744,51.263 C301.012,51.263 295.491,52.367 292.179,54.103 L292.179,109.941 C294.703,111.045 299.593,112.149 304.482,112.149 C318.205,112.149 328.301,102.685 328.301,80.918 C328.301,62.305 319.467,51.263 305.744,51.263 L305.744,51.263 Z" id="Fill-5" />
|
||||
<path d="M392.341,125.873 C367.892,125.873 355.589,115.935 355.589,99.215 C355.589,75.555 380.826,71.296 406.537,69.876 L406.537,64.513 C406.537,53.787 399.439,50.001 388.555,50.001 C380.511,50.001 370.731,52.525 365.053,55.207 L360.636,43.376 C367.419,40.379 378.933,37.382 390.29,37.382 C410.638,37.382 422.942,45.269 422.942,66.248 L422.942,119.879 C416.79,123.191 404.329,125.873 392.341,125.873 L392.341,125.873 Z M406.537,81.391 C389.186,82.337 371.835,83.757 371.835,98.9 C371.835,107.89 378.776,113.411 391.868,113.411 C397.389,113.411 403.856,112.465 406.537,111.203 L406.537,81.391 L406.537,81.391 Z" id="Fill-6" />
|
||||
<path d="M461.743,125.873 C451.806,125.873 441.395,123.191 435.244,119.879 L441.08,106.629 C445.496,109.31 454.803,112.149 461.27,112.149 C470.576,112.149 476.728,107.575 476.728,100.477 C476.728,92.748 470.261,89.751 461.586,86.596 C450.228,82.337 437.452,77.132 437.452,61.201 C437.452,47.162 448.336,37.382 467.264,37.382 C477.517,37.382 486.035,39.906 492.029,43.376 L486.665,55.364 C482.88,52.998 475.309,50.317 469.157,50.317 C460.166,50.317 455.118,55.049 455.118,61.201 C455.118,68.93 461.428,71.611 469.788,74.766 C481.618,79.183 494.71,84.072 494.71,100.635 C494.71,115.935 483.038,125.873 461.743,125.873" id="Fill-7" />
|
||||
<path d="M578.625,81.233 L522.155,89.12 C523.89,104.42 533.828,112.149 548.182,112.149 C556.699,112.149 565.848,110.099 571.684,106.944 L576.732,119.879 C570.107,123.349 558.75,125.873 547.078,125.873 C520.262,125.873 505.277,108.679 505.277,81.549 C505.277,55.522 519.789,37.382 543.607,37.382 C565.69,37.382 578.782,51.894 578.782,74.766 C578.782,76.816 578.782,79.025 578.625,81.233 L578.625,81.233 Z M543.292,50.001 C530.042,50.001 521.367,60.097 521.051,77.763 L562.22,72.084 C562.062,57.257 554.649,50.001 543.292,50.001 L543.292,50.001 Z" id="Fill-8" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
@ -85,13 +85,13 @@ class BuyEtherScreen extends Component {
|
||||
const {goToCoinbase, address} = this.props
|
||||
|
||||
return (
|
||||
<div className='buy-ether__action-content-wrapper'>
|
||||
<div className="buy-ether__action-content-wrapper">
|
||||
<div>{this.renderCoinbaseLogo()}</div>
|
||||
<div className='buy-ether__body-text'>Coinbase is the world’s most popular way to buy and sell bitcoin, ethereum, and litecoin.</div>
|
||||
<a className='first-time-flow__link buy-ether__faq-link'>What is Ethereum?</a>
|
||||
<div className='buy-ether__buttons'>
|
||||
<div className="buy-ether__body-text">Coinbase is the world’s most popular way to buy and sell bitcoin, ethereum, and litecoin.</div>
|
||||
<a className="first-time-flow__link buy-ether__faq-link">What is Ethereum?</a>
|
||||
<div className="buy-ether__buttons">
|
||||
<button
|
||||
className='first-time-flow__button'
|
||||
className="first-time-flow__button"
|
||||
onClick={() => goToCoinbase(address)}
|
||||
>
|
||||
Buy
|
||||
@ -114,23 +114,23 @@ class BuyEtherScreen extends Component {
|
||||
return this.renderCoinbaseForm()
|
||||
case OPTION_VALUES.SHAPESHIFT:
|
||||
return (
|
||||
<div className='buy-ether__action-content-wrapper'>
|
||||
<div className='shapeshift-logo' />
|
||||
<div className='buy-ether__body-text'>
|
||||
<div className="buy-ether__action-content-wrapper">
|
||||
<div className="shapeshift-logo" />
|
||||
<div className="buy-ether__body-text">
|
||||
Trade any leading blockchain asset for any other. Protection by Design. No Account Needed.
|
||||
</div>
|
||||
<ShapeShiftForm btnClass='first-time-flow__button' />
|
||||
<ShapeShiftForm btnClass="first-time-flow__button" />
|
||||
</div>
|
||||
)
|
||||
case OPTION_VALUES.QR_CODE:
|
||||
return (
|
||||
<div className='buy-ether__action-content-wrapper'>
|
||||
<div className="buy-ether__action-content-wrapper">
|
||||
<div dangerouslySetInnerHTML={{ __html: qrImage.createTableTag(4) }} />
|
||||
<div className='buy-ether__body-text'>Deposit Ether directly into your account.</div>
|
||||
<div className='buy-ether__small-body-text'>(This is the account address that MetaMask created for you to recieve funds.)</div>
|
||||
<div className='buy-ether__buttons'>
|
||||
<div className="buy-ether__body-text">Deposit Ether directly into your account.</div>
|
||||
<div className="buy-ether__small-body-text">(This is the account address that MetaMask created for you to recieve funds.)</div>
|
||||
<div className="buy-ether__buttons">
|
||||
<button
|
||||
className='first-time-flow__button'
|
||||
className="first-time-flow__button"
|
||||
onClick={this.copyToClipboard}
|
||||
disabled={justCopied}
|
||||
>
|
||||
@ -149,19 +149,19 @@ class BuyEtherScreen extends Component {
|
||||
const { selectedOption } = this.state
|
||||
|
||||
return (
|
||||
<div className='buy-ether'>
|
||||
<div className="buy-ether">
|
||||
<Identicon address={this.props.address} diameter={70} />
|
||||
<div className='buy-ether__title'>Deposit Ether</div>
|
||||
<div className='buy-ether__body-text'>
|
||||
<div className="buy-ether__title">Deposit Ether</div>
|
||||
<div className="buy-ether__body-text">
|
||||
MetaMask works best if you have Ether in your account to pay for transaction gas fees and more. To get Ether, choose from one of these methods.
|
||||
</div>
|
||||
<div className='buy-ether__content-wrapper'>
|
||||
<div className='buy-ether__content-headline-wrapper'>
|
||||
<div className='buy-ether__content-headline'>Deposit Options</div>
|
||||
<div className="buy-ether__content-wrapper">
|
||||
<div className="buy-ether__content-headline-wrapper">
|
||||
<div className="buy-ether__content-headline">Deposit Options</div>
|
||||
{this.renderSkip()}
|
||||
</div>
|
||||
<div className='buy-ether__content'>
|
||||
<div className='buy-ether__side-panel'>
|
||||
<div className="buy-ether__content">
|
||||
<div className="buy-ether__side-panel">
|
||||
{OPTIONS.map(({ name, value }) => (
|
||||
<div
|
||||
key={value}
|
||||
@ -170,16 +170,16 @@ class BuyEtherScreen extends Component {
|
||||
})}
|
||||
onClick={() => this.setState({ selectedOption: value })}
|
||||
>
|
||||
<div className='buy-ether__side-panel-item-name'>{name}</div>
|
||||
<div className="buy-ether__side-panel-item-name">{name}</div>
|
||||
{value === selectedOption && (
|
||||
<svg viewBox='0 0 574 1024' id='si-ant-right' width='15px' height='15px'>
|
||||
<path d='M10 9Q0 19 0 32t10 23l482 457L10 969Q0 979 0 992t10 23q10 9 24 9t24-9l506-480q10-10 10-23t-10-23L58 9Q48 0 34 0T10 9z' />
|
||||
<svg viewBox="0 0 574 1024" id="si-ant-right" width="15px" height="15px">
|
||||
<path d="M10 9Q0 19 0 32t10 23l482 457L10 969Q0 979 0 992t10 23q10 9 24 9t24-9l506-480q10-10 10-23t-10-23L58 9Q48 0 34 0T10 9z" />
|
||||
</svg>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div className='buy-ether__action-content'>
|
||||
<div className="buy-ether__action-content">
|
||||
{this.renderContent()}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -79,11 +79,11 @@ export class ShapeShiftForm extends Component {
|
||||
|
||||
renderMetadata (label, value) {
|
||||
return (
|
||||
<div className='shapeshift-form__metadata-wrapper'>
|
||||
<div className='shapeshift-form__metadata-label'>
|
||||
<div className="shapeshift-form__metadata-wrapper">
|
||||
<div className="shapeshift-form__metadata-label">
|
||||
{label}:
|
||||
</div>
|
||||
<div className='shapeshift-form__metadata-value'>
|
||||
<div className="shapeshift-form__metadata-value">
|
||||
{value}
|
||||
</div>
|
||||
</div>
|
||||
@ -101,7 +101,7 @@ export class ShapeShiftForm extends Component {
|
||||
} = tokenExchangeRates[coinPair] || {}
|
||||
|
||||
return (
|
||||
<div className='shapeshift-form__metadata'>
|
||||
<div className="shapeshift-form__metadata">
|
||||
{this.renderMetadata('Status', limit ? 'Available' : 'Unavailable')}
|
||||
{this.renderMetadata('Limit', limit)}
|
||||
{this.renderMetadata('Exchange Rate', rate)}
|
||||
@ -117,13 +117,13 @@ export class ShapeShiftForm extends Component {
|
||||
qrImage.make()
|
||||
|
||||
return (
|
||||
<div className='shapeshift-form'>
|
||||
<div className='shapeshift-form__deposit-instruction'>
|
||||
<div className="shapeshift-form">
|
||||
<div className="shapeshift-form__deposit-instruction">
|
||||
Deposit your BTC to the address bellow:
|
||||
</div>
|
||||
<div className='shapeshift-form__qr-code'>
|
||||
<div className="shapeshift-form__qr-code">
|
||||
{isLoading
|
||||
? <img src='images/loading.svg' style={{ width: '60px' }} />
|
||||
? <img src="images/loading.svg" style={{ width: '60px' }} />
|
||||
: <div dangerouslySetInnerHTML={{ __html: qrImage.createTableTag(4) }} />
|
||||
}
|
||||
</div>
|
||||
@ -141,14 +141,14 @@ export class ShapeShiftForm extends Component {
|
||||
|
||||
return showQrCode ? this.renderQrCode() : (
|
||||
<div>
|
||||
<div className='shapeshift-form'>
|
||||
<div className='shapeshift-form__selectors'>
|
||||
<div className='shapeshift-form__selector'>
|
||||
<div className='shapeshift-form__selector-label'>
|
||||
<div className="shapeshift-form">
|
||||
<div className="shapeshift-form__selectors">
|
||||
<div className="shapeshift-form__selector">
|
||||
<div className="shapeshift-form__selector-label">
|
||||
Deposit
|
||||
</div>
|
||||
<select
|
||||
className='shapeshift-form__selector-input'
|
||||
className="shapeshift-form__selector-input"
|
||||
value={this.state.depositCoin}
|
||||
onChange={this.onCoinChange}
|
||||
>
|
||||
@ -160,14 +160,14 @@ export class ShapeShiftForm extends Component {
|
||||
</select>
|
||||
</div>
|
||||
<div
|
||||
className='icon shapeshift-form__caret'
|
||||
className="icon shapeshift-form__caret"
|
||||
style={{ backgroundImage: 'url(images/caret-right.svg)'}}
|
||||
/>
|
||||
<div className='shapeshift-form__selector'>
|
||||
<div className='shapeshift-form__selector-label'>
|
||||
<div className="shapeshift-form__selector">
|
||||
<div className="shapeshift-form__selector-label">
|
||||
Receive
|
||||
</div>
|
||||
<div className='shapeshift-form__selector-input'>
|
||||
<div className="shapeshift-form__selector-input">
|
||||
ETH
|
||||
</div>
|
||||
</div>
|
||||
@ -177,18 +177,18 @@ export class ShapeShiftForm extends Component {
|
||||
'shapeshift-form__address-input-wrapper--error': errorMessage,
|
||||
})}
|
||||
>
|
||||
<div className='shapeshift-form__address-input-label'>
|
||||
<div className="shapeshift-form__address-input-label">
|
||||
Your Refund Address
|
||||
</div>
|
||||
<input
|
||||
type='text'
|
||||
className='shapeshift-form__address-input'
|
||||
type="text"
|
||||
className="shapeshift-form__address-input"
|
||||
onChange={e => this.setState({
|
||||
refundAddress: e.target.value,
|
||||
errorMessage: '',
|
||||
})}
|
||||
/>
|
||||
<div className='shapeshift-form__address-input-error-message'>
|
||||
<div className="shapeshift-form__address-input-error-message">
|
||||
{errorMessage}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,9 +1,9 @@
|
||||
var fs = require('fs')
|
||||
var path = require('path')
|
||||
var browserify = require('browserify');
|
||||
var browserify = require('browserify')
|
||||
var tests = fs.readdirSync(path.join(__dirname, 'lib'))
|
||||
var bundlePath = path.join(__dirname, 'test-bundle.js')
|
||||
var b = browserify();
|
||||
var b = browserify()
|
||||
|
||||
// Remove old bundle
|
||||
try {
|
||||
@ -18,5 +18,5 @@ tests.forEach(function(fileName) {
|
||||
b.add(path.join(__dirname, 'lib', fileName))
|
||||
})
|
||||
|
||||
b.bundle().pipe(writeStream);
|
||||
b.bundle().pipe(writeStream)
|
||||
|
||||
|
@ -16,9 +16,10 @@ module.exports = class Helper extends EventEmitter {
|
||||
unregister () {
|
||||
return global.navigator.serviceWorker.getRegistration()
|
||||
.then((registration) => {
|
||||
if (registration) return registration.unregister()
|
||||
if (registration) {
|
||||
return registration.unregister()
|
||||
.then((b) => b ? Promise.resolve() : Promise.reject())
|
||||
else return Promise.resolve()
|
||||
} else return Promise.resolve()
|
||||
})
|
||||
}
|
||||
clearDb () {
|
||||
@ -33,7 +34,7 @@ module.exports = class Helper extends EventEmitter {
|
||||
const db = new IDB({
|
||||
version: 2,
|
||||
key: KEY,
|
||||
initialState: state
|
||||
initialState: state,
|
||||
})
|
||||
return db.open()
|
||||
}
|
||||
|
@ -30,5 +30,5 @@ module.exports = [
|
||||
date: 'Wed Jun 13 2018',
|
||||
title: 'Phishing Warning',
|
||||
body: fs.readFileSync(__dirname + '/archive/notice_4.md', 'utf8'),
|
||||
}
|
||||
},
|
||||
]
|
||||
|
@ -40,8 +40,8 @@ TransactionListItem.prototype.showRetryButton = function () {
|
||||
const currentNonceTxs = transactions.filter(tx => tx.txParams.nonce === currentNonce)
|
||||
const currentNonceSubmittedTxs = currentNonceTxs.filter(tx => tx.status === 'submitted')
|
||||
const lastSubmittedTxWithCurrentNonce = currentNonceSubmittedTxs[0]
|
||||
const currentTxIsLatestWithNonce = lastSubmittedTxWithCurrentNonce
|
||||
&& lastSubmittedTxWithCurrentNonce.id === transaction.id
|
||||
const currentTxIsLatestWithNonce = lastSubmittedTxWithCurrentNonce &&
|
||||
lastSubmittedTxWithCurrentNonce.id === transaction.id
|
||||
|
||||
return currentTxIsLatestWithNonce && Date.now() - submittedTime > 30000
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ The `piggybankContract` is compiled from:
|
||||
}
|
||||
*/
|
||||
|
||||
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"}]);
|
||||
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'}])
|
||||
|
||||
deployButton.addEventListener('click', function (event) {
|
||||
|
||||
@ -36,13 +36,13 @@ deployButton.addEventListener('click', function (event) {
|
||||
{
|
||||
from: web3.eth.accounts[0],
|
||||
data: '0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808190555061023b806100686000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461005c5780638da5cb5b1461009d578063d0e30db0146100f4575b600080fd5b34801561006857600080fd5b5061008760048036038101908080359060200190929190505050610112565b6040518082815260200191505060405180910390f35b3480156100a957600080fd5b506100b26101d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100fc6101f6565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017057600080fd5b8160008082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156101c5573d6000803e3d6000fd5b506000549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003460008082825401925050819055506000549050905600a165627a7a72305820f237db3ec816a52589d82512117bc85bc08d3537683ffeff9059108caf3e5d400029',
|
||||
gas: '4700000'
|
||||
gas: '4700000',
|
||||
}, function (e, contract) {
|
||||
console.log(e, contract);
|
||||
console.log(e, contract)
|
||||
if (typeof contract.address !== 'undefined') {
|
||||
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
|
||||
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash)
|
||||
|
||||
console.log(`contract`, contract);
|
||||
console.log(`contract`, contract)
|
||||
|
||||
depositButton.addEventListener('click', function (event) {
|
||||
contract.deposit({ from: web3.eth.accounts[0], value: '0x29a2241af62c0000' }, function (result) {
|
||||
|
@ -100,7 +100,7 @@ describe('MetaMask', function () {
|
||||
await delay(regularDelayMs)
|
||||
|
||||
// Close all other tabs
|
||||
let [oldUi, tab1, tab2] = await driver.getAllWindowHandles()
|
||||
const [oldUi, tab1, tab2] = await driver.getAllWindowHandles()
|
||||
await driver.switchTo().window(oldUi)
|
||||
await driver.close()
|
||||
|
||||
@ -281,7 +281,7 @@ describe('MetaMask', function () {
|
||||
await driver.findElement(By.css('.qr-wrapper')).isDisplayed()
|
||||
await delay(regularDelayMs)
|
||||
|
||||
let accountModal = await driver.findElement(By.css('span .modal'))
|
||||
const accountModal = await driver.findElement(By.css('span .modal'))
|
||||
|
||||
await driver.executeScript("document.querySelector('.account-modal-close').click()")
|
||||
|
||||
@ -499,7 +499,7 @@ describe('MetaMask', function () {
|
||||
await configureGas.click()
|
||||
await delay(regularDelayMs)
|
||||
|
||||
let gasModal = await driver.findElement(By.css('span .modal'))
|
||||
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'))
|
||||
|
@ -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()
|
||||
|
||||
|
@ -17,7 +17,7 @@ QUnit.test('successful confirmation of sig requests', (assert) => {
|
||||
})
|
||||
|
||||
async function runConfirmSigRequestsTest (assert, done) {
|
||||
let selectState = await queryAsync($, 'select')
|
||||
const selectState = await queryAsync($, 'select')
|
||||
selectState.val('confirm sig requests')
|
||||
reactTriggerChange(selectState[0])
|
||||
|
||||
@ -32,7 +32,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')
|
||||
|
@ -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()
|
||||
|
||||
|
@ -87,7 +87,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')
|
||||
|
@ -31,6 +31,6 @@ module.exports = {
|
||||
|
||||
getRandomValues () {
|
||||
return 'SOO RANDO!!!1'
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
|
@ -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)
|
||||
|
100
test/lib/react-trigger-change.js
vendored
100
test/lib/react-trigger-change.js
vendored
@ -13,7 +13,7 @@
|
||||
/* 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.
|
||||
@ -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);
|
||||
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;
|
||||
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();
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -134,7 +134,7 @@ 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()
|
||||
@ -195,7 +195,7 @@ 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)
|
||||
|
@ -12,7 +12,7 @@ const stubPreferencesStore = {
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
describe('address-book-controller', function () {
|
||||
var addressBookController
|
||||
|
@ -1,7 +1,7 @@
|
||||
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
|
||||
|
@ -47,7 +47,7 @@ describe('PendingTransactionTracker', function () {
|
||||
nonceTracker: {
|
||||
getGlobalLock: async () => {
|
||||
return { releaseLock: () => {} }
|
||||
}
|
||||
},
|
||||
},
|
||||
getPendingTransactions: () => { return [] },
|
||||
getCompletedTransactions: () => { return [] },
|
||||
@ -207,7 +207,7 @@ 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) => {
|
||||
@ -343,7 +343,7 @@ describe('PendingTransactionTracker', function () {
|
||||
|
||||
describe('#_checkIfNonceIsTaken', function () {
|
||||
beforeEach(function () {
|
||||
let confirmedTxList = [{
|
||||
const confirmedTxList = [{
|
||||
id: 1,
|
||||
hash: '0x0593ee121b92e10d63150ad08b4b8f9c7857d1bd160195ee648fb9a0f8d00eeb',
|
||||
status: 'confirmed',
|
||||
|
@ -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++
|
||||
|
@ -388,7 +388,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',
|
||||
|
@ -9,9 +9,9 @@ describe ('Transaction state history helper', 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]
|
||||
|
||||
@ -78,9 +78,9 @@ describe ('Transaction state history helper', function () {
|
||||
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)
|
||||
|
||||
|
@ -16,23 +16,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,17 +46,17 @@ 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')
|
||||
@ -69,7 +69,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 +77,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 +85,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 +110,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 +121,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 +149,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')
|
||||
})
|
||||
|
||||
|
@ -27,7 +27,7 @@ describe('txUtils', function () {
|
||||
|
||||
describe('#normalizeTxParams', () => {
|
||||
it('should normalize txParams', () => {
|
||||
let txParams = {
|
||||
const txParams = {
|
||||
chainId: '0x1',
|
||||
from: 'a7df1beDBF813f57096dF77FCd515f0B3900e402',
|
||||
to: null,
|
||||
|
@ -11,7 +11,7 @@ global.crypto = global.crypto || {
|
||||
array[i] = Math.random() * 100
|
||||
}
|
||||
return array
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
describe('EdgeEncryptor', function () {
|
||||
@ -33,7 +33,7 @@ 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')
|
||||
|
@ -2,7 +2,7 @@ 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 providerResultStub = {}
|
||||
|
||||
const zeroBn = new BN(0)
|
||||
const etherBn = new BN(String(1e18))
|
||||
@ -20,7 +20,7 @@ describe('PendingBalanceCalculator', function () {
|
||||
value: ether,
|
||||
gasPrice: '0x0',
|
||||
gas: '0x0',
|
||||
}
|
||||
},
|
||||
}, { count: 1 })
|
||||
|
||||
const balanceCalculator = generateBalanceCalcWith([], zeroBn)
|
||||
@ -36,7 +36,7 @@ describe('PendingBalanceCalculator', function () {
|
||||
value: '0x0',
|
||||
gasPrice: '0x2',
|
||||
gas: '0x3',
|
||||
}
|
||||
},
|
||||
}, { count: 1 })
|
||||
|
||||
const balanceCalculator = generateBalanceCalcWith([], zeroBn)
|
||||
@ -66,7 +66,7 @@ describe('PendingBalanceCalculator', function () {
|
||||
value: ether,
|
||||
gasPrice: '0x0',
|
||||
gas: '0x0',
|
||||
}
|
||||
},
|
||||
}, { count: 1 })
|
||||
|
||||
balanceCalculator = generateBalanceCalcWith(pendingTxs, etherBn)
|
||||
|
@ -9,8 +9,8 @@ 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
|
||||
@ -30,54 +30,54 @@ describe('SeedPhraseVerifier', function () {
|
||||
|
||||
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)
|
||||
const result = 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)
|
||||
const result = 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)
|
||||
const result = 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'
|
||||
const serialized = await primaryKeyring.serialize()
|
||||
const 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")
|
||||
const result = 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 +85,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'
|
||||
const serialized = 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")
|
||||
const result = await seedPhraseVerifier.verifyAccounts(undefined, seedWords)
|
||||
assert.fail('Should reject')
|
||||
} catch (err) {
|
||||
assert.equal(err.message, 'No created accounts defined.')
|
||||
}
|
||||
@ -101,15 +101,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'
|
||||
const serialized = 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")
|
||||
const result = await seedPhraseVerifier.verifyAccounts([], seedWords)
|
||||
assert.fail('Should reject')
|
||||
} catch (err) {
|
||||
assert.equal(err.message, 'No created accounts defined.')
|
||||
}
|
||||
@ -120,14 +120,14 @@ describe('SeedPhraseVerifier', function () {
|
||||
const keyState = await keyringController.addNewAccount(primaryKeyring)
|
||||
const keyState2 = 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)
|
||||
const result = await seedPhraseVerifier.verifyAccounts(createdAccounts, seedWords)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -8,7 +8,7 @@ const mockState = {
|
||||
accounts: { abc: {} },
|
||||
network: 1,
|
||||
selectedAddress: 'abc',
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
describe('BalanceComponent', function () {
|
||||
|
@ -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)
|
||||
|
||||
|
@ -13,7 +13,7 @@ const mockState = {
|
||||
identities,
|
||||
conversionRate: 10,
|
||||
selectedAddress: 'abc',
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
describe('PendingTx', function () {
|
||||
|
@ -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'},
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -2,11 +2,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 +53,6 @@ while (transactions20.length < 20) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
storage.data.TransactionController.transactions = transactions
|
||||
|
||||
describe('storage is migrated successfully and the proper transactions are remove from state', () => {
|
||||
|
@ -6,11 +6,11 @@ const firstTimeState = {
|
||||
}
|
||||
const properTime = (new Date()).getTime()
|
||||
const storage = {
|
||||
"meta": {},
|
||||
"data": {
|
||||
"TransactionController": {
|
||||
"transactions": [
|
||||
]
|
||||
'meta': {},
|
||||
'data': {
|
||||
'TransactionController': {
|
||||
'transactions': [
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -6,11 +6,11 @@ const firstTimeState = {
|
||||
}
|
||||
|
||||
const storage = {
|
||||
"meta": {},
|
||||
"data": {
|
||||
"TransactionController": {
|
||||
"transactions": [
|
||||
]
|
||||
'meta': {},
|
||||
'data': {
|
||||
'TransactionController': {
|
||||
'transactions': [
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -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);
|
||||
});
|
||||
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);
|
||||
});
|
||||
});
|
||||
const items = dropdownComponent.find('li')
|
||||
const node = items.at(0)
|
||||
node.simulate('click')
|
||||
assert.equal(onClick.calledOnce, true)
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user