blob: 222d284ce0d60ee8ae61065fa4ab4b8e6f340fff [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import React from "react";
import LoginForm from "../components/loginform";
import {CreateAdminForm} from "../components/createadminform";
import {ChangePasswordForm} from '../components/changepasswordform';
import * as Actions from "../actions";
import { mount } from 'enzyme';
import sinon from "sinon";
describe('Auth -- Components', () => {
describe('LoginForm', () => {
let stub;
beforeEach(() => {
stub = sinon.stub(Actions, 'login');
});
afterEach(() => {
Actions.login.restore();
});
it('should trigger login event when form submitted', () => {
const loginForm = mount(<LoginForm/>);
loginForm.find('#login').simulate('submit');
expect(stub.calledOnce).toBeTruthy();
});
it('in case of nothing in state, should pass actual values to Actions.login()', () => {
const username = 'bob';
const password = 'smith';
const loginForm = mount(
<LoginForm
testBlankUsername={username}
testBlankPassword={password}
/>);
loginForm.find('#login').simulate('submit');
expect(stub.calledOnce).toBeTruthy();
// confirm Actions.login() received the values that weren't in the DOM
expect(stub.args[0][0]).toBe(username);
expect(stub.args[0][1]).toBe(password);
});
});
describe('ChangePasswordForm', () => {
it('should update state on password change', () => {
const changePasswordForm = mount(<ChangePasswordForm />);
changePasswordForm.find('input#password').simulate('change', { target: { value: 'bobsyouruncle' }});
expect(changePasswordForm.state('password')).toEqual('bobsyouruncle');
});
it('should update state on password confirm change', () => {
const changePasswordForm = mount(<ChangePasswordForm />);
changePasswordForm.find('input#password-confirm').simulate('change', { target: { value: 'hotdiggity' }});
expect(changePasswordForm.state('passwordConfirm')).toEqual('hotdiggity');
});
it('should call action to submit form', () => {
const spy = sinon.spy();
const changePasswordForm = mount(<ChangePasswordForm username={"bobsyouruncle"} changePassword={spy} />);
changePasswordForm.find('#change-password').simulate('submit');
expect(spy.calledOnce).toBeTruthy();
});
});
describe('CreateAdminForm', () => {
it('should update username state', () => {
const createAdminForm = mount(<CreateAdminForm loginAfter={false} />);
createAdminForm.find('input#username').simulate('change', { target: { value: 'catsmeow' }});
expect(createAdminForm.state('username')).toEqual('catsmeow');
});
it('should call action to update password confirm on field change', () => {
const createAdminForm = mount(<CreateAdminForm loginAfter={false} />);
createAdminForm.find('input#password').simulate('change', { target: { value: 'topnotch' }});
expect(createAdminForm.state('password')).toEqual('topnotch');
});
});
});