/*
* Copyright OpenSearch Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the "license" file accompanying this file. This file 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 { mount, shallow } from 'enzyme';
import React from 'react';
import { PasswordEditPanel } from '../password-edit-panel';
import { getDashboardsInfo } from '../../../../utils/dashboards-info-utils';
const mockDashboardsInfo = {
multitenancy_enabled: true,
private_tenant_enabled: true,
default_tenant: '',
password_validation_error_message:
'Password must be minimum 5 characters long and must contain at least one uppercase letter, one lowercase letter, one digit, and one special character.',
};
jest.mock('../../../../utils/dashboards-info-utils', () => ({
getDashboardsInfo: jest.fn().mockImplementation(() => {
return mockDashboardsInfo;
}),
}));
describe('Password edit panel', () => {
let component;
const setState = jest.fn();
const updatePassword = jest.fn();
const updateIsInvalid = jest.fn();
const useState = jest.spyOn(React, 'useState');
const useEffect = jest.spyOn(React, 'useEffect');
const mockCoreStart = {
http: 1,
};
beforeEach(() => {
useEffect.mockImplementationOnce((f) => f());
useState.mockImplementation((initialValue) => [initialValue, setState]);
});
afterEach(() => {
jest.clearAllMocks();
});
it('renders', (done) => {
mount(
);
process.nextTick(() => {
expect(updatePassword).toHaveBeenCalledTimes(1);
expect(updateIsInvalid).toHaveBeenCalledTimes(1);
expect(setState).toBeCalledWith(mockDashboardsInfo.password_validation_error_message);
done();
});
});
it('password field update', () => {
component = shallow(
);
const event = {
target: { value: 'dummy' },
} as React.ChangeEvent;
component.find('[data-test-subj="password"]').simulate('change', event);
expect(setState).toBeCalledWith('dummy');
});
it('repeat password field update', () => {
component = shallow(
);
const event = {
target: { value: 'dummy' },
} as React.ChangeEvent;
component.find('[data-test-subj="re-enter-password"]').simulate('change', event);
expect(setState).toBeCalledWith('dummy');
});
});