1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 19:26:13 +02:00

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
This commit is contained in:
Whymarrh Whitby 2019-06-27 14:44:41 -02:30 committed by GitHub
parent a6bfc6f441
commit d566543bf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 93 additions and 4 deletions

View File

@ -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 () {

View File

@ -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), '')
})
})
})