0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-13 21:30:30 -05:00
logto/packages/ui/src/apis/index.test.ts
simeng-li 7a17d41acf
fix(ui): fix social bug (#939)
* fix(ui): fix social bug

fix social bug

* fix(ui): align social bind account api path

align social bind account api path
2022-05-24 20:48:12 +08:00

231 lines
5.5 KiB
TypeScript

import ky from 'ky';
import { consent } from './consent';
import {
register,
sendRegisterEmailPasscode,
sendRegisterSmsPasscode,
verifyRegisterEmailPasscode,
verifyRegisterSmsPasscode,
} from './register';
import {
signInBasic,
sendSignInSmsPasscode,
sendSignInEmailPasscode,
verifySignInEmailPasscode,
verifySignInSmsPasscode,
} from './sign-in';
import {
invokeSocialSignIn,
signInWithSocial,
bindSocialAccount,
bindSocialRelatedUser,
registerWithSocial,
} from './social';
jest.mock('ky', () => ({
extend: () => ky,
post: jest.fn(() => ({
json: jest.fn(),
})),
}));
describe('api', () => {
const username = 'username';
const password = 'password';
const phone = '18888888';
const code = '111111';
const email = 'foo@logto.io';
const mockKyPost = ky.post as jest.Mock;
afterEach(() => {
mockKyPost.mockClear();
});
it('signInBasic', async () => {
mockKyPost.mockReturnValueOnce({
json: () => ({
redirectTo: '/',
}),
});
await signInBasic(username, password);
expect(ky.post).toBeCalledWith('/api/session/sign-in/username-password', {
json: {
username,
password,
},
});
});
it('signInBasic with bind social account', async () => {
mockKyPost.mockReturnValueOnce({
json: () => ({
redirectTo: '/',
}),
});
await signInBasic(username, password, 'github');
expect(ky.post).toHaveBeenNthCalledWith(1, '/api/session/sign-in/username-password', {
json: {
username,
password,
},
});
expect(ky.post).toHaveBeenNthCalledWith(2, '/api/session/bind-social', {
json: {
connectorId: 'github',
},
});
});
it('sendSignInSmsPasscode', async () => {
await sendSignInSmsPasscode(phone);
expect(ky.post).toBeCalledWith('/api/session/sign-in/passwordless/sms/send-passcode', {
json: {
phone,
},
});
});
it('verifySignInSmsPasscode', async () => {
mockKyPost.mockReturnValueOnce({
json: () => ({
redirectTo: '/',
}),
});
await verifySignInSmsPasscode(phone, code);
expect(ky.post).toBeCalledWith('/api/session/sign-in/passwordless/sms/verify-passcode', {
json: {
phone,
code,
},
});
});
it('sendSignInEmailPasscode', async () => {
await sendSignInEmailPasscode(email);
expect(ky.post).toBeCalledWith('/api/session/sign-in/passwordless/email/send-passcode', {
json: {
email,
},
});
});
it('verifySignInEmailPasscode', async () => {
mockKyPost.mockReturnValueOnce({
json: () => ({
redirectTo: '/',
}),
});
await verifySignInEmailPasscode(email, code);
expect(ky.post).toBeCalledWith('/api/session/sign-in/passwordless/email/verify-passcode', {
json: {
email,
code,
},
});
});
it('consent', async () => {
await consent();
expect(ky.post).toBeCalledWith('/api/session/consent');
});
it('register', async () => {
await register(username, password);
expect(ky.post).toBeCalledWith('/api/session/register/username-password', {
json: {
username,
password,
},
});
});
it('sendRegisterSmsPasscode', async () => {
await sendRegisterSmsPasscode(phone);
expect(ky.post).toBeCalledWith('/api/session/register/passwordless/sms/send-passcode', {
json: {
phone,
},
});
});
it('verifyRegisterSmsPasscode', async () => {
await verifyRegisterSmsPasscode(phone, code);
expect(ky.post).toBeCalledWith('/api/session/register/passwordless/sms/verify-passcode', {
json: {
phone,
code,
},
});
});
it('sendRegisterEmailPasscode', async () => {
await sendRegisterEmailPasscode(email);
expect(ky.post).toBeCalledWith('/api/session/register/passwordless/email/send-passcode', {
json: {
email,
},
});
});
it('verifyRegisterEmailPasscode', async () => {
await verifyRegisterEmailPasscode(email, code);
expect(ky.post).toBeCalledWith('/api/session/register/passwordless/email/verify-passcode', {
json: {
email,
code,
},
});
});
it('invokeSocialSignIn', async () => {
await invokeSocialSignIn('connectorId', 'state', 'redirectUri');
expect(ky.post).toBeCalledWith('/api/session/sign-in/social', {
json: {
connectorId: 'connectorId',
state: 'state',
redirectUri: 'redirectUri',
},
});
});
it('signInWithSocial', async () => {
const parameters = {
connectorId: 'connectorId',
redirectUri: 'redirectUri',
code: 'code',
};
await signInWithSocial(parameters);
expect(ky.post).toBeCalledWith('/api/session/sign-in/social/auth', {
json: parameters,
});
});
it('bindSocialAccount', async () => {
await bindSocialAccount('connectorId');
expect(ky.post).toBeCalledWith('/api/session/bind-social', {
json: {
connectorId: 'connectorId',
},
});
});
it('bindSocialRelatedUser', async () => {
await bindSocialRelatedUser('connectorId');
expect(ky.post).toBeCalledWith('/api/session/sign-in/bind-social-related-user', {
json: {
connectorId: 'connectorId',
},
});
});
it('registerWithSocial', async () => {
await registerWithSocial('connectorId');
expect(ky.post).toBeCalledWith('/api/session/register/social', {
json: {
connectorId: 'connectorId',
},
});
});
});