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:
parent
6b128a71cc
commit
fe97a657e2
3 changed files with 164 additions and 101 deletions
100
packages/integration-tests/src/connectors-mock.ts
Normal file
100
packages/integration-tests/src/connectors-mock.ts
Normal 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}}.',
|
||||
},
|
||||
],
|
||||
};
|
|
@ -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 () => {
|
||||
/*
|
||||
|
|
|
@ -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),
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue