aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-04-20 04:03:00 +0800
committerDan Finlay <dan@danfinlay.com>2016-04-20 04:03:00 +0800
commit8fe113e8d93a413c94d315ffeded01d2445b37dd (patch)
tree770e3f1d29cf7c539483534b54b7696d5b678215 /ui
parentb953dc9ae133a83ab37ba664246693e470ee2ed0 (diff)
parentdba41614d014413b6de72a2cb62466765706304d (diff)
downloadtangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.tar
tangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.tar.gz
tangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.tar.bz2
tangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.tar.lz
tangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.tar.xz
tangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.tar.zst
tangerine-wallet-browser-8fe113e8d93a413c94d315ffeded01d2445b37dd.zip
Merge branch 'master' into TransactionList
Diffstat (limited to 'ui')
-rw-r--r--ui/app/config.js3
-rw-r--r--ui/test/setup.js8
-rw-r--r--ui/test/unit/actions/config_test.js43
-rw-r--r--ui/test/unit/actions/restore_vault_test.js54
-rw-r--r--ui/test/unit/actions/set_selected_account_test.js28
-rw-r--r--ui/test/unit/actions/tx_test.js168
-rw-r--r--ui/test/unit/actions/view_info_test.js23
-rw-r--r--ui/test/unit/actions/warning_test.js24
-rw-r--r--ui/test/unit/util_test.js114
9 files changed, 1 insertions, 464 deletions
diff --git a/ui/app/config.js b/ui/app/config.js
index 33d87bcc2..878c9955f 100644
--- a/ui/app/config.js
+++ b/ui/app/config.js
@@ -47,7 +47,6 @@ ConfigScreen.prototype.render = function() {
currentProviderDisplay(metamaskState),
-
h('div', [
h('input', {
placeholder: 'New RPC URL',
@@ -95,7 +94,7 @@ ConfigScreen.prototype.render = function() {
}
function currentProviderDisplay(metamaskState) {
- var rpc = metamaskState.rpcTarget
+ var rpc = metamaskState.provider.rpcTarget
return h('div', [
h('h3', {style: { fontWeight: 'bold' }}, 'Currently using RPC'),
h('p', rpc)
diff --git a/ui/test/setup.js b/ui/test/setup.js
deleted file mode 100644
index 7985e9a00..000000000
--- a/ui/test/setup.js
+++ /dev/null
@@ -1,8 +0,0 @@
-if (typeof process === 'object') {
- // Initialize node environment
- global.expect = require('chai').expect
- require('mocha-jsdom')()
-} else {
- window.expect = window.chai.expect
- window.require = function () { /* noop */ }
-}
diff --git a/ui/test/unit/actions/config_test.js b/ui/test/unit/actions/config_test.js
deleted file mode 100644
index d38210bfc..000000000
--- a/ui/test/unit/actions/config_test.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var jsdom = require('mocha-jsdom')
-var assert = require('assert')
-var freeze = require('deep-freeze-strict')
-var path = require('path')
-
-var actions = require(path.join(__dirname, '..', '..', '..', 'app', 'actions.js'))
-var reducers = require(path.join(__dirname, '..', '..', '..', 'app', 'reducers.js'))
-
-describe ('config view actions', function() {
-
- var initialState = {
- metamask: {
- rpcTarget: 'foo',
- },
- appState: {
- currentView: {
- name: 'accounts',
- }
- }
- }
- freeze(initialState)
-
- describe('SHOW_CONFIG_PAGE', function() {
- it('should set appState.currentView.name to config', function() {
- var result = reducers(initialState, actions.showConfigPage())
- assert.equal(result.appState.currentView.name, 'config')
- })
- })
-
- describe('SET_RPC_TARGET', function() {
-
- it('sets the state.metamask.rpcTarget property of the state to the action.value', function() {
- const action = {
- type: actions.SET_RPC_TARGET,
- value: 'bar',
- }
-
- var result = reducers(initialState, action)
- assert.equal(result.metamask.rpcTarget, action.value)
- })
- })
-})
-
diff --git a/ui/test/unit/actions/restore_vault_test.js b/ui/test/unit/actions/restore_vault_test.js
deleted file mode 100644
index da0d71ce7..000000000
--- a/ui/test/unit/actions/restore_vault_test.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var jsdom = require('mocha-jsdom')
-var assert = require('assert')
-var freeze = require('deep-freeze-strict')
-var path = require('path')
-var sinon = require('sinon')
-
-var actions = require(path.join(__dirname, '..', '..', '..', 'app', 'actions.js'))
-var reducers = require(path.join(__dirname, '..', '..', '..', 'app', 'reducers.js'))
-
-describe('#recoverFromSeed(password, seed)', function() {
-
- beforeEach(function() {
- // sinon allows stubbing methods that are easily verified
- this.sinon = sinon.sandbox.create()
- })
-
- afterEach(function() {
- // sinon requires cleanup otherwise it will overwrite context
- this.sinon.restore()
- })
-
- // stub out account manager
- actions._setAccountManager({
- recoverFromSeed(pw, seed, cb) { cb() },
- })
-
- it('sets metamask.isUnlocked to true', function() {
- var initialState = {
- metamask: {
- isUnlocked: false,
- isInitialized: false,
- }
- }
- freeze(initialState)
-
- const restorePhrase = 'invite heavy among daring outdoor dice jelly coil stable note seat vicious'
- const password = 'foo'
- const dispatchFunc = actions.recoverFromSeed(password, restorePhrase)
-
- var dispatchStub = this.sinon.stub()
- dispatchStub.withArgs({ TYPE: actions.unlockMetamask() }).onCall(0)
- dispatchStub.withArgs({ TYPE: actions.showAccountsPage() }).onCall(1)
-
- var action
- var resultingState = initialState
- dispatchFunc((newAction) => {
- action = newAction
- resultingState = reducers(resultingState, action)
- })
-
- assert.equal(resultingState.metamask.isUnlocked, true, 'was unlocked')
- assert.equal(resultingState.metamask.isInitialized, true, 'was initialized')
- });
-});
diff --git a/ui/test/unit/actions/set_selected_account_test.js b/ui/test/unit/actions/set_selected_account_test.js
deleted file mode 100644
index 1af6c964f..000000000
--- a/ui/test/unit/actions/set_selected_account_test.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var jsdom = require('mocha-jsdom')
-var assert = require('assert')
-var freeze = require('deep-freeze-strict')
-var path = require('path')
-
-var actions = require(path.join(__dirname, '..', '..', '..', 'app', 'actions.js'))
-var reducers = require(path.join(__dirname, '..', '..', '..', 'app', 'reducers.js'))
-
-describe('SET_SELECTED_ACCOUNT', function() {
-
- it('sets the state.appState.activeAddress property of the state to the action.value', function() {
- var initialState = {
- appState: {
- activeAddress: 'foo',
- }
- }
- freeze(initialState)
-
- const action = {
- type: actions.SET_SELECTED_ACCOUNT,
- value: 'bar',
- }
- freeze(action)
-
- var resultingState = reducers(initialState, action)
- assert.equal(resultingState.appState.activeAddress, action.value)
- });
-});
diff --git a/ui/test/unit/actions/tx_test.js b/ui/test/unit/actions/tx_test.js
deleted file mode 100644
index d83ae16c0..000000000
--- a/ui/test/unit/actions/tx_test.js
+++ /dev/null
@@ -1,168 +0,0 @@
-var jsdom = require('mocha-jsdom')
-var assert = require('assert')
-var freeze = require('deep-freeze-strict')
-var path = require('path')
-
-var actions = require(path.join(__dirname, '..', '..', '..', 'app', 'actions.js'))
-var reducers = require(path.join(__dirname, '..', '..', '..', 'app', 'reducers.js'))
-
-describe('tx confirmation screen', function() {
- var initialState, result
-
- describe('when there is only one tx', function() {
- var firstTxId = 1457634084250832
-
- beforeEach(function() {
-
- initialState = {
- appState: {
- currentView: {
- name: 'confTx',
- },
- },
- metamask: {
- unconfTxs: {
- '1457634084250832': {
- id: 1457634084250832,
- status: "unconfirmed",
- time: 1457634084250,
- }
- },
- }
- }
- freeze(initialState)
- })
-
- describe('cancelTx', function() {
-
- before(function(done) {
- actions._setAccountManager({
- approveTransaction(txId, cb) { cb('An error!') },
- cancelTransaction(txId) { /* noop */ },
- clearSeedWordCache(cb) { cb() },
- })
-
- actions.cancelTx({id: firstTxId})(function(action) {
- result = reducers(initialState, action)
- done()
- })
- })
-
- it('should transition to the accounts list', function() {
- assert.equal(result.appState.currentView.name, 'accounts')
- })
-
- it('should have no unconfirmed txs remaining', function() {
- var count = getUnconfirmedTxCount(result)
- assert.equal(count, 0)
- })
- })
-
- describe('sendTx', function() {
- var result
-
- describe('when there is an error', function() {
-
- before(function(done) {
- alert = () => {/* noop */}
-
- actions._setAccountManager({
- approveTransaction(txId, cb) { cb('An error!') },
- })
-
- actions.sendTx({id: firstTxId})(function(action) {
- result = reducers(initialState, action)
- done()
- })
- })
-
- it('should stay on the page', function() {
- assert.equal(result.appState.currentView.name, 'confTx')
- })
-
- it('should set errorMessage on the currentView', function() {
- assert(result.appState.currentView.errorMessage)
- })
- })
-
- describe('when there is success', function() {
- before(function(done) {
- actions._setAccountManager({
- approveTransaction(txId, cb) { cb() },
- })
-
- actions.sendTx({id: firstTxId})(function(action) {
- result = reducers(initialState, action)
- done()
- })
- })
-
- it('should navigate away from the tx page', function() {
- assert.equal(result.appState.currentView.name, 'accounts')
- })
-
- it('should clear the tx from the unconfirmed transactions', function() {
- assert(!(firstTxId in result.metamask.unconfTxs), 'tx is cleared')
- })
- })
- })
-
- describe('when there are two pending txs', function() {
- var firstTxId = 1457634084250832
- var result, initialState
- before(function(done) {
- initialState = {
- appState: {
- currentView: {
- name: 'confTx',
- },
- },
- metamask: {
- unconfTxs: {
- '1457634084250832': {
- id: 1457634084250832,
- status: "unconfirmed",
- time: 1457634084250,
- },
- '1457634084250833': {
- id: 1457634084250833,
- status: "unconfirmed",
- time: 1457634084255,
- },
- },
- }
- }
- freeze(initialState)
-
-
- actions._setAccountManager({
- approveTransaction(txId, cb) { cb() },
- })
-
- actions.sendTx({id: firstTxId})(function(action) {
- result = reducers(initialState, action)
- done()
- })
- })
-
- it('should stay on the confTx view', function() {
- assert.equal(result.appState.currentView.name, 'confTx')
- })
-
- it('should transition to the first tx', function() {
- assert.equal(result.appState.currentView.context, 0)
- })
-
- it('should only have one unconfirmed tx remaining', function() {
- var count = getUnconfirmedTxCount(result)
- assert.equal(count, 1)
- })
- })
- })
-});
-
-function getUnconfirmedTxCount(state) {
- var txs = state.metamask.unconfTxs
- var count = Object.keys(txs).length
- return count
-}
diff --git a/ui/test/unit/actions/view_info_test.js b/ui/test/unit/actions/view_info_test.js
deleted file mode 100644
index 888712c67..000000000
--- a/ui/test/unit/actions/view_info_test.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var jsdom = require('mocha-jsdom')
-var assert = require('assert')
-var freeze = require('deep-freeze-strict')
-var path = require('path')
-
-var actions = require(path.join(__dirname, '..', '..', '..', 'app', 'actions.js'))
-var reducers = require(path.join(__dirname, '..', '..', '..', 'app', 'reducers.js'))
-
-describe('SHOW_INFO_PAGE', function() {
-
- it('sets the state.appState.currentView.name property to info', function() {
- var initialState = {
- appState: {
- activeAddress: 'foo',
- }
- }
- freeze(initialState)
-
- const action = actions.showInfoPage()
- var resultingState = reducers(initialState, action)
- assert.equal(resultingState.appState.currentView.name, 'info')
- });
-});
diff --git a/ui/test/unit/actions/warning_test.js b/ui/test/unit/actions/warning_test.js
deleted file mode 100644
index eee198656..000000000
--- a/ui/test/unit/actions/warning_test.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var jsdom = require('mocha-jsdom')
-var assert = require('assert')
-var freeze = require('deep-freeze-strict')
-var path = require('path')
-
-var actions = require(path.join(__dirname, '..', '..', '..', 'app', 'actions.js'))
-var reducers = require(path.join(__dirname, '..', '..', '..', 'app', 'reducers.js'))
-
-describe('action DISPLAY_WARNING', function() {
-
- it('sets appState.warning to provided value', function() {
- var initialState = {
- appState: {},
- }
- freeze(initialState)
-
- const warningText = 'This is a sample warning message'
-
- const action = actions.displayWarning(warningText)
- const resultingState = reducers(initialState, action)
-
- assert.equal(resultingState.appState.warning, warningText, 'warning text set')
- });
-});
diff --git a/ui/test/unit/util_test.js b/ui/test/unit/util_test.js
deleted file mode 100644
index b35d60812..000000000
--- a/ui/test/unit/util_test.js
+++ /dev/null
@@ -1,114 +0,0 @@
-var assert = require('assert')
-var sinon = require('sinon')
-const ethUtil = require('ethereumjs-util')
-
-var path = require('path')
-var util = require(path.join(__dirname, '..', '..', 'app', 'util.js'))
-
-describe('util', function() {
- var ethInWei = '1'
- for (var i = 0; i < 18; i++ ) { ethInWei += '0' }
-
- beforeEach(function() {
- this.sinon = sinon.sandbox.create()
- })
-
- afterEach(function() {
- this.sinon.restore()
- })
-
- describe('numericBalance', function() {
-
- it('should return a BN 0 if given nothing', function() {
- var result = util.numericBalance()
- assert.equal(result.toString(10), 0)
- })
-
- it('should work with hex prefix', function() {
- var result = util.numericBalance('0x012')
- assert.equal(result.toString(10), '18')
- })
-
- it('should work with no hex prefix', function() {
- var result = util.numericBalance('012')
- assert.equal(result.toString(10), '18')
- })
-
- })
-
- describe('#ethToWei', function() {
-
- it('should take an eth BN, returns wei BN', function() {
- var input = new ethUtil.BN(1, 10)
- var result = util.ethToWei(input)
- assert.equal(result, ethInWei, '18 zeroes')
- })
-
- })
-
- describe('#weiToEth', function() {
-
- it('should take a wei BN and return an eth BN', function() {
- var result = util.weiToEth(new ethUtil.BN(ethInWei))
- assert.equal(result, '1', 'equals 1 eth')
- })
-
- })
-
- describe('#formatBalance', function() {
-
- it('when given nothing', function() {
- var result = util.formatBalance()
- assert.equal(result, 'None', 'should return "None"')
- })
-
- it('should return eth as string followed by ETH', function() {
- var input = new ethUtil.BN(ethInWei, 10).toJSON()
- var result = util.formatBalance(input)
- assert.equal(result, '1.0000 ETH')
- })
-
- it('should return eth as string followed by ETH', function() {
- var input = new ethUtil.BN(ethInWei, 10).div(new ethUtil.BN('2', 10)).toJSON()
- var result = util.formatBalance(input)
- assert.equal(result, '0.5000 ETH')
- })
-
- it('should display four decimal points', function() {
- var input = "0x128dfa6a90b28000"
- var result = util.formatBalance(input)
- assert.equal(result, '1.3370 ETH')
- })
-
- })
-
- describe('#normalizeToWei', function() {
- it('should convert an eth to the appropriate equivalent values', function() {
- var valueTable = {
- wei: '1000000000000000000',
- kwei: '1000000000000000',
- mwei: '1000000000000',
- gwei: '1000000000',
- szabo: '1000000',
- finney:'1000',
- ether: '1',
- kether:'0.001',
- mether:'0.000001',
- // AUDIT: We're getting BN numbers on these ones.
- // I think they're big enough to ignore for now.
- // gether:'0.000000001',
- // tether:'0.000000000001',
- }
- var oneEthBn = new ethUtil.BN(ethInWei, 10)
-
- for(var currency in valueTable) {
-
- var value = new ethUtil.BN(valueTable[currency], 10)
- var output = util.normalizeToWei(value, currency)
- assert.equal(output.toString(10), valueTable.wei, `value of ${output.toString(10)} ${currency} should convert to ${oneEthBn}`)
-
- }
- })
- })
-
-})