Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create New Vault test improvements #18259

Merged
merged 23 commits into from
Apr 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9a68b05
Create New Vault test improvements
tmashuang Mar 21, 2023
47809c9
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 22, 2023
abba078
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
brad-decker Mar 22, 2023
93fab6f
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 24, 2023
f8c2099
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 25, 2023
1dea111
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 28, 2023
fde9f22
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 30, 2023
08e8250
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 31, 2023
dec423b
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Mar 31, 2023
79aae71
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 1, 2023
3ee63f9
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 3, 2023
9aca244
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 5, 2023
a7b765e
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 6, 2023
c54c3ec
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 7, 2023
2e96067
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 12, 2023
0c716e3
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 12, 2023
0756489
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 13, 2023
979b106
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 17, 2023
d111c88
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 17, 2023
065160c
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 17, 2023
6d8d5a8
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 18, 2023
f5c3e32
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 19, 2023
a7643f9
Merge branch 'develop' into 17191/onboarding-unit-tests-create-new-vault
tmashuang Apr 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ui/components/app/create-new-vault/create-new-vault.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export default function CreateNewVault({
<SrpInput onChange={setSeedPhrase} srpText={t('secretRecoveryPhrase')} />
<div className="create-new-vault__create-password">
<TextField
data-testid="create-vault-password"
id="password"
label={t('newPassword')}
type="password"
Expand All @@ -112,6 +113,7 @@ export default function CreateNewVault({
largeLabel
/>
<TextField
data-testid="create-vault-confirm-password"
id="confirm-password"
label={t('confirmPassword')}
type="password"
Expand Down Expand Up @@ -140,6 +142,7 @@ export default function CreateNewVault({
</div>
) : null}
<Button
data-testid="create-new-vault-submit-button"
className="create-new-vault__submit-button"
type="primary"
submit
Expand Down
149 changes: 145 additions & 4 deletions ui/components/app/create-new-vault/create-new-vault.test.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import React from 'react';
import { screen } from '@testing-library/react';
import { renderWithProvider } from '../../../../test/jest';
import { screen, fireEvent } from '@testing-library/react';
import { renderWithProvider } from '../../../../test/lib/render-helpers';
import configureStore from '../../../store/store';
import mockState from '../../../../test/data/mock-state.json';
import CreateNewVault from './create-new-vault';

const TEST_SEED =
'debris dizzy just program just float decrease vacant alarm reduce speak stadium';

const store = configureStore({
metamask: {
...mockState.metamask,
Expand All @@ -13,13 +16,16 @@ const store = configureStore({

describe('CreateNewVault', () => {
it('renders CreateNewVault component and shows Secret Recovery Phrase text', () => {
renderWithProvider(<CreateNewVault submitText="Import" />, store);
renderWithProvider(
<CreateNewVault submitText="Import" onSubmit={jest.fn()} />,
store,
);
expect(screen.getByText('Secret Recovery Phrase')).toBeInTheDocument();
});

it('renders CreateNewVault component and shows You can paste... text', () => {
renderWithProvider(
<CreateNewVault submitText="Import" includeTerms />,
<CreateNewVault submitText="Import" onSubmit={jest.fn()} includeTerms />,
store,
);
expect(
Expand All @@ -28,4 +34,139 @@ describe('CreateNewVault', () => {
),
).toBeInTheDocument();
});

it('should check terms', () => {
const props = {
onSubmit: jest.fn(),
submitText: 'Submit',
includeTerms: true,
};

const { queryByTestId } = renderWithProvider(
<CreateNewVault {...props} />,
store,
);

const terms = queryByTestId('create-new-vault__terms-checkbox');

fireEvent.click(terms);

expect(terms).toBeChecked();
});

it('should error with password length is less than 8', () => {
const props = {
onSubmit: jest.fn(),
submitText: 'Submit',
};

const { queryByTestId, queryByText } = renderWithProvider(
<CreateNewVault {...props} />,
store,
);

const passwordInput = queryByTestId('create-vault-password');

const passwordEvent = {
target: {
value: '1234567',
},
};

fireEvent.change(passwordInput, passwordEvent);

const passwordError = queryByText('Password not long enough');

expect(passwordError).toBeInTheDocument();

const submitButton = queryByTestId('create-new-vault-submit-button');

expect(submitButton).toBeDisabled();
});

it('should error with password and confirm password mismatch', () => {
const props = {
onSubmit: jest.fn(),
submitText: 'Submit',
};

const { queryByTestId, queryByText } = renderWithProvider(
<CreateNewVault {...props} />,
store,
);

const passwordInput = queryByTestId('create-vault-password');
const confirmPasswordInput = queryByTestId('create-vault-confirm-password');

const passwordEvent = {
target: {
value: '12345678',
},
};

const confirmPasswordEvent = {
target: {
value: 'abcdefgh',
},
};

fireEvent.change(passwordInput, passwordEvent);
fireEvent.change(confirmPasswordInput, confirmPasswordEvent);

const passwordError = queryByText(`Passwords don't match`);

expect(passwordError).toBeInTheDocument();

const submitButton = queryByTestId('create-new-vault-submit-button');

expect(submitButton).toBeDisabled();
});

it('should valid', () => {
const props = {
onSubmit: jest.fn(),
submitText: 'Submit',
};

const { queryByTestId } = renderWithProvider(
<CreateNewVault {...props} />,
store,
);

inputSRP(TEST_SEED, queryByTestId);

const passwordInput = queryByTestId('create-vault-password');
const confirmPasswordInput = queryByTestId('create-vault-confirm-password');

const password = '12345678';

const passwordEvent = {
target: {
value: password,
},
};

const confirmPasswordEvent = {
target: {
value: password,
},
};

fireEvent.change(passwordInput, passwordEvent);
fireEvent.change(confirmPasswordInput, confirmPasswordEvent);

const submitButton = queryByTestId('create-new-vault-submit-button');
expect(submitButton).not.toBeDisabled();

fireEvent.click(submitButton);

expect(props.onSubmit).toHaveBeenCalledWith(password, TEST_SEED);
});
});

function inputSRP(seedStr, queryByTestId) {
for (const [index, word] of seedStr.split(' ').entries()) {
const srpInput = queryByTestId(`import-srp__srp-word-${index}`);
fireEvent.change(srpInput, { target: { value: word } });
}
}