Handle invalid strings during seed phrase import (#6743)

* Add tests for ImportWithSeedPhrase#parseSeedPhrase

* Handle importing whitespace-only seed phrases

Fixes #6694

This changeset fixes our parsing of seed phrases during import to handle the
case where a user tries to import a seed phrase that consists solely of whitespace.
We no longer produce an error and instead treat it as an incorrect seed phrase.

* Handle importing more invalid seed phrases
feature/default_network_editable
Whymarrh Whitby 6 years ago committed by GitHub
parent a6bfc6f441
commit d566543bf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js
  2. 78
      ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/tests/import-with-seed-phrase.component.test.js

@ -30,10 +30,21 @@ export default class ImportWithSeedPhrase extends PureComponent {
}
parseSeedPhrase = (seedPhrase) => {
return seedPhrase
.trim()
.match(/\w+/g)
.join(' ')
if (!seedPhrase) {
return ''
}
const trimmed = seedPhrase.trim()
if (!trimmed) {
return ''
}
const words = trimmed.match(/\w+/g)
if (!words) {
return ''
}
return words.join(' ')
}
componentWillMount () {

@ -0,0 +1,78 @@
import React from 'react'
import assert from 'assert'
import { shallow } from 'enzyme'
import sinon from 'sinon'
import ImportWithSeedPhrase from '../import-with-seed-phrase.component'
function shallowRender (props = {}, context = {}) {
return shallow(<ImportWithSeedPhrase {...props} />, {
context: {
t: str => str + '_t',
metricsEvent: sinon.spy(),
...context,
},
})
}
describe('ImportWithSeedPhrase Component', () => {
it('should render without error', () => {
const root = shallowRender({
onSubmit: sinon.spy(),
})
const textareaCount = root.find('.first-time-flow__textarea').length
assert.equal(textareaCount, 1, 'should render 12 seed phrases')
})
describe('parseSeedPhrase', () => {
it('should handle a regular seed phrase', () => {
const root = shallowRender({
onSubmit: sinon.spy(),
})
const {parseSeedPhrase} = root.instance()
assert.deepEqual(parseSeedPhrase('foo bar baz'), 'foo bar baz')
})
it('should trim extraneous whitespace from the given seed phrase', () => {
const root = shallowRender({
onSubmit: sinon.spy(),
})
const {parseSeedPhrase} = root.instance()
assert.deepEqual(parseSeedPhrase(' foo bar baz '), 'foo bar baz')
})
it('should return an empty string when given a whitespace-only string', () => {
const root = shallowRender({
onSubmit: sinon.spy(),
})
const {parseSeedPhrase} = root.instance()
assert.deepEqual(parseSeedPhrase(' '), '')
})
it('should return an empty string when given a string with only symbols', () => {
const root = shallowRender({
onSubmit: sinon.spy(),
})
const {parseSeedPhrase} = root.instance()
assert.deepEqual(parseSeedPhrase('$'), '')
})
it('should return an empty string for both null and undefined', () => {
const root = shallowRender({
onSubmit: sinon.spy(),
})
const {parseSeedPhrase} = root.instance()
assert.deepEqual(parseSeedPhrase(undefined), '')
assert.deepEqual(parseSeedPhrase(null), '')
})
})
})
Loading…
Cancel
Save