mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +01: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:
parent
a6bfc6f441
commit
d566543bf5
@ -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…
Reference in New Issue
Block a user