import MockAdapter from 'axios-mock-adapter';
import React from 'react';
import Login from '../../components/LoginPopup';
import { getClientID } from '../../factory/api';
import { instance, instanceBff } from '../../factory/request';
import { shallow } from '../enzyme';
import linkUserRes from '../mock/api/linkUserRes.mock.json';
import { localStorageMock } from '../mock/localStorageMock';
const mockBff = new MockAdapter(instanceBff);
const mockMiniApp = new MockAdapter(instance);
describe('Login', () => {
let signInRes: any, signInSMSRes: any, tree: any;
beforeAll(() => {
Object.defineProperty(window, 'localStorage', { value: localStorageMock });
});
afterAll(() => {
localStorage.clear();
jest.clearAllMocks();
});
describe('Login with same setup', () => {
beforeEach(() => {
signInRes = {
header: {
resultCode: 'S0000',
resultMessage: '',
},
payload: {
accessToken: '9214284d-68d1-4463-9e49-481b00558535',
refreshToken: 'e70b6b52-f7e7-48f3-827d-074168c07d6d',
},
};
mockBff.onPost('/signIn').reply(200, signInRes);
mockMiniApp
.onPost(`/v1/users/link?clientId=${getClientID()}`)
.reply(200, linkUserRes);
mockBff.onPost('/signInWithSms').reply(200, signInRes);
tree = shallow(
test
);
});
it('should be defined', () => {
expect(Login).toBeDefined();
});
it('should render correctly', () => {
expect(tree).toMatchSnapshot();
});
it('update username test', () => {
tree
.find('ForwardRef')
.first()
.simulate('change', { target: { value: 'userNameTest' } });
expect(tree.find('ForwardRef').first().prop('value')).toEqual(
'userNameTest'
);
});
it('update password test', () => {
tree
.find('ForwardRef')
.at(1)
.simulate('change', { target: { value: 'passwordTest' } });
expect(tree.find('ForwardRef').at(1).prop('value')).toEqual(
'passwordTest'
);
});
/*it('update clientId test', () => {
tree
.find('ForwardRef')
.at(2)
.simulate('change', { target: { value: 'clientId' } });
expect(tree.find('ForwardRef').at(2).prop('value')).toEqual('clientId');
});
it('signin with resultcode S0000', () => {
tree.find('Button').at(0).simulate('click');
expect(tree.find('ForwardRef').at(3).prop('value')).toEqual('...');
});*/
});
describe('Login with different setup', () => {
beforeEach(() => {
signInRes = {
header: {
resultCode: 'S1004',
resultMessage: '',
},
payload: {
accessToken: '9214284d-68d1-4463-9e49-481b00558535',
refreshToken: 'e70b6b52-f7e7-48f3-827d-074168c07d6d',
},
error: {
otpReferenceId: '',
},
};
signInSMSRes = {
header: {
resultCode: 'S0000',
resultMessage: '',
},
payload: {
accessToken: '9214284d-68d1-4463-9e49-481b00558535',
refreshToken: 'e70b6b52-f7e7-48f3-827d-074168c07d6d',
},
};
mockBff.onPost('/signIn').reply(200, signInRes);
mockMiniApp
.onPost(`/v1/users/link?clientId=${getClientID()}`)
.reply(200, linkUserRes);
mockBff.onPost('/signInWithSms').reply(200, signInSMSRes);
tree = shallow(
test
);
});
/*it('signin with resultcode S1004', async () => {
tree.find('Button').at(0).simulate('click');
await new Promise((r) => setTimeout(() => r(), 100));
expect(localStorage.getItem('X-USER-AUTH-ID')).toContain(
linkUserRes.unsigned.data.userAuthorizationId
);
});*/
it('signin with resultcode S1004', () => {
linkUserRes.unsigned.resultInfo.code = 'FAILURE';
mockMiniApp
.onPost(`/v1/users/link?clientId=${getClientID()}`)
.reply(200, linkUserRes);
const tree = shallow(
test
);
tree.find('Button').at(0).simulate('click');
expect(true).toBe(true);
});
});
});