0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-02-17 22:04:19 -05:00

test: integration tests for setting up sign-in methods (#1669)

This commit is contained in:
Xiao Yijun 2022-07-26 16:00:12 +08:00 committed by GitHub
parent 6b128a71cc
commit fe97a657e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 164 additions and 101 deletions

View file

@ -0,0 +1,100 @@
export const facebookConnectorId = 'facebook-universal';
export const facebookConnectorTarget = 'facebook';
export const facebookConnectorConfig = {
clientId: 'application_foo',
clientSecret: 'secret_bar',
};
export const aliyunSmsConnectorId = 'aliyun-short-message-service';
export const aliyunSmsConnectorConfig = {
accessKeyId: 'access-key-id-value',
accessKeySecret: 'access-key-secret-value',
signName: 'sign-name-value',
templates: [
{
usageType: 'SignIn',
templateCode: 'template-code-value',
},
{
usageType: 'Register',
templateCode: 'template-code-value',
},
{
usageType: 'Test',
templateCode: 'template-code-value',
},
],
};
export const twilioSmsConnectorId = 'twilio-short-message-service';
export const twilioSmsConnectorConfig = {
accountSID: 'account-sid-value',
authToken: 'auth-token-value',
fromMessagingServiceSID: 'from-messaging-service-sid-value',
templates: [
{
content: 'This is for sign-in purposes only. Your passcode is {{code}}.',
usageType: 'SignIn',
},
{
content: 'This is for registering purposes only. Your passcode is {{code}}.',
usageType: 'Register',
},
{
content: 'This is for testing purposes only. Your passcode is {{code}}.',
usageType: 'Test',
},
],
};
export const aliyunEmailConnectorId = 'aliyun-direct-mail';
export const aliyunEmailConnectorConfig = {
accessKeyId: 'your-access-key-id-value',
accessKeySecret: 'your-access-key-secret-value',
accountName: 'noreply@logto.io',
fromAlias: 'from-alias-value',
templates: [
{
subject: 'register-template-subject-value',
content: 'Logto: Your passcode is {{code}}. (regitser template)',
usageType: 'Register',
},
{
subject: 'sign-in-template-subject-value',
content: 'Logto: Your passcode is {{code}}. (sign-in template)',
usageType: 'SignIn',
},
{
subject: 'test-template-subject-value',
content: 'Logto: Your passcode is {{code}}. (test template)',
usageType: 'Test',
},
],
};
export const sendgridEmailConnectorId = 'sendgrid-email-service';
export const sendgridEmailConnectorConfig = {
apiKey: 'api-key-value',
fromEmail: 'noreply@logto.test.io',
fromName: 'from-name-value',
templates: [
{
usageType: 'SignIn',
type: 'text/plain',
subject: 'Logto SignIn Template',
content: 'This is for sign-in purposes only. Your passcode is {{code}}.',
},
{
usageType: 'Register',
type: 'text/plain',
subject: 'Logto Register Template',
content: 'This is for registering purposes only. Your passcode is {{code}}.',
},
{
usageType: 'Test',
type: 'text/plain',
subject: 'Logto Test Template',
content: 'This is for testing purposes only. Your passcode is {{code}}.',
},
],
};

View file

@ -8,106 +8,18 @@ import {
listConnectors,
updateConnectorConfig,
} from '@/connector-api';
const facebookConnectorId = 'facebook-universal';
const facebookConnectorConfig = {
clientId: 'application_foo',
clientSecret: 'secret_bar',
};
const aliyunSmsConnectorId = 'aliyun-short-message-service';
const aliyunSmsConnectorConfig = {
accessKeyId: 'access-key-id-value',
accessKeySecret: 'access-key-secret-value',
signName: 'sign-name-value',
templates: [
{
usageType: 'SignIn',
templateCode: 'template-code-value',
},
{
usageType: 'Register',
templateCode: 'template-code-value',
},
{
usageType: 'Test',
templateCode: 'template-code-value',
},
],
};
const twilioSmsConnectorId = 'twilio-short-message-service';
const twilioSmsConnectorConfig = {
accountSID: 'account-sid-value',
authToken: 'auth-token-value',
fromMessagingServiceSID: 'from-messaging-service-sid-value',
templates: [
{
content: 'This is for sign-in purposes only. Your passcode is {{code}}.',
usageType: 'SignIn',
},
{
content: 'This is for registering purposes only. Your passcode is {{code}}.',
usageType: 'Register',
},
{
content: 'This is for testing purposes only. Your passcode is {{code}}.',
usageType: 'Test',
},
],
};
const aliyunEmailConnectorId = 'aliyun-direct-mail';
const aliyunEmailConnectorConfig = {
accessKeyId: 'your-access-key-id-value',
accessKeySecret: 'your-access-key-secret-value',
accountName: 'noreply@logto.io',
fromAlias: 'from-alias-value',
templates: [
{
subject: 'register-template-subject-value',
content: 'Logto: Your passcode is {{code}}. (regitser template)',
usageType: 'Register',
},
{
subject: 'sign-in-template-subject-value',
content: 'Logto: Your passcode is {{code}}. (sign-in template)',
usageType: 'SignIn',
},
{
subject: 'test-template-subject-value',
content: 'Logto: Your passcode is {{code}}. (test template)',
usageType: 'Test',
},
],
};
const sendgridEmailConnectorId = 'sendgrid-email-service';
const sendgridEmailConnectorConfig = {
apiKey: 'api-key-value',
fromEmail: 'noreply@logto.test.io',
fromName: 'from-name-value',
templates: [
{
usageType: 'SignIn',
type: 'text/plain',
subject: 'Logto SignIn Template',
content: 'This is for sign-in purposes only. Your passcode is {{code}}.',
},
{
usageType: 'Register',
type: 'text/plain',
subject: 'Logto Register Template',
content: 'This is for registering purposes only. Your passcode is {{code}}.',
},
{
usageType: 'Test',
type: 'text/plain',
subject: 'Logto Test Template',
content: 'This is for testing purposes only. Your passcode is {{code}}.',
},
],
};
import {
facebookConnectorId,
facebookConnectorConfig,
aliyunSmsConnectorId,
aliyunSmsConnectorConfig,
twilioSmsConnectorId,
twilioSmsConnectorConfig,
aliyunEmailConnectorId,
aliyunEmailConnectorConfig,
sendgridEmailConnectorId,
sendgridEmailConnectorConfig,
} from '@/connectors-mock';
test('connector flow', async () => {
/*

View file

@ -1,6 +1,16 @@
import { BrandingStyle, SignInExperience } from '@logto/schemas';
import { BrandingStyle, SignInExperience, SignInMethods, SignInMethodState } from '@logto/schemas';
import { authedAdminApi } from '@/api';
import { updateConnectorConfig, enableConnector, disableConnector } from '@/connector-api';
import {
facebookConnectorId,
facebookConnectorConfig,
twilioSmsConnectorConfig,
twilioSmsConnectorId,
sendgridEmailConnectorConfig,
sendgridEmailConnectorId,
facebookConnectorTarget,
} from '@/connectors-mock';
describe('admin console sign-in experience', () => {
it('should get sign-in experience successfully', async () => {
@ -36,4 +46,45 @@ describe('admin console sign-in experience', () => {
expect(updatedSignInExperience).toMatchObject(newSignInExperience);
});
it('should be able to setup sign in methods after connectors are enabled', async () => {
// Setup connectors for tests
await Promise.all([
updateConnectorConfig(facebookConnectorId, facebookConnectorConfig),
updateConnectorConfig(twilioSmsConnectorId, twilioSmsConnectorConfig),
updateConnectorConfig(sendgridEmailConnectorId, sendgridEmailConnectorConfig),
]);
await Promise.all([
enableConnector(facebookConnectorId),
enableConnector(twilioSmsConnectorId),
enableConnector(sendgridEmailConnectorId),
]);
// Set up sign-in methods
const newSignInMethods: Partial<SignInMethods> = {
username: SignInMethodState.Primary,
sms: SignInMethodState.Secondary,
email: SignInMethodState.Secondary,
social: SignInMethodState.Secondary,
};
const updatedSignInExperience = await authedAdminApi
.patch('sign-in-exp', {
json: {
socialSignInConnectorTargets: [facebookConnectorTarget],
signInMethods: newSignInMethods,
},
})
.json<SignInExperience>();
expect(updatedSignInExperience.signInMethods).toMatchObject(newSignInMethods);
// Reset connectors
await Promise.all([
disableConnector(facebookConnectorId),
disableConnector(twilioSmsConnectorId),
disableConnector(sendgridEmailConnectorId),
]);
});
});