2024-01-25 19:44:20 +08:00
|
|
|
import { TemplateType } from '@logto/connector-kit';
|
2023-04-01 15:53:09 +08:00
|
|
|
|
|
|
|
import { mockedConnectorConfig, phoneTest, codeTest } from './mock.js';
|
|
|
|
|
2024-03-28 10:21:50 +08:00
|
|
|
const getConfig = vi.fn().mockResolvedValue(mockedConnectorConfig);
|
2023-04-01 15:53:09 +08:00
|
|
|
|
2024-03-28 10:21:50 +08:00
|
|
|
const sendSms = vi.fn().mockResolvedValue({
|
2023-04-01 15:53:09 +08:00
|
|
|
body: JSON.stringify({ Code: 'OK', RequestId: 'request-id', Message: 'OK' }),
|
|
|
|
statusCode: 200,
|
|
|
|
});
|
|
|
|
|
2024-03-28 10:21:50 +08:00
|
|
|
vi.mock('./single-send-text.js', () => ({
|
2023-04-01 15:53:09 +08:00
|
|
|
sendSms,
|
|
|
|
}));
|
|
|
|
|
|
|
|
const { default: createConnector } = await import('./index.js');
|
|
|
|
|
|
|
|
describe('sendMessage()', () => {
|
|
|
|
afterEach(() => {
|
2024-03-28 10:21:50 +08:00
|
|
|
vi.clearAllMocks();
|
2023-04-01 15:53:09 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should call singleSendMail() and replace code in content', async () => {
|
|
|
|
const connector = await createConnector({ getConfig });
|
|
|
|
await connector.sendMessage({
|
|
|
|
to: phoneTest,
|
2024-01-25 19:44:20 +08:00
|
|
|
type: TemplateType.SignIn,
|
2023-04-01 15:53:09 +08:00
|
|
|
payload: { code: codeTest },
|
|
|
|
});
|
|
|
|
expect(sendSms).toHaveBeenCalledWith(
|
|
|
|
expect.objectContaining({
|
|
|
|
AccessKeyId: mockedConnectorConfig.accessKeyId,
|
|
|
|
PhoneNumbers: phoneTest,
|
|
|
|
SignName: mockedConnectorConfig.signName,
|
|
|
|
TemplateCode: 'TemplateCode',
|
|
|
|
TemplateParam: `{"code":"${codeTest}"}`,
|
|
|
|
}),
|
|
|
|
mockedConnectorConfig.accessKeySecret
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should use template per region', async () => {
|
|
|
|
const connector = await createConnector({ getConfig });
|
|
|
|
|
|
|
|
for (const to of [phoneTest, `86${phoneTest}`, `0086${phoneTest}`, `+86${phoneTest}`]) {
|
|
|
|
// eslint-disable-next-line no-await-in-loop
|
|
|
|
await connector.sendMessage({
|
|
|
|
to,
|
2024-01-25 19:44:20 +08:00
|
|
|
type: TemplateType.Register,
|
2023-04-01 15:53:09 +08:00
|
|
|
payload: { code: codeTest },
|
|
|
|
});
|
|
|
|
expect(sendSms).toHaveBeenCalledWith(
|
|
|
|
expect.objectContaining({
|
|
|
|
TemplateCode: 'TemplateCode1',
|
|
|
|
}),
|
|
|
|
mockedConnectorConfig.accessKeySecret
|
|
|
|
);
|
|
|
|
|
|
|
|
sendSms.mockClear();
|
|
|
|
}
|
|
|
|
|
|
|
|
await connector.sendMessage({
|
|
|
|
to: '+1123123123',
|
2024-01-25 19:44:20 +08:00
|
|
|
type: TemplateType.Register,
|
2023-04-01 15:53:09 +08:00
|
|
|
payload: { code: codeTest },
|
|
|
|
});
|
|
|
|
expect(sendSms).toHaveBeenCalledWith(
|
|
|
|
expect.objectContaining({
|
|
|
|
TemplateCode: 'TemplateCode2',
|
|
|
|
}),
|
|
|
|
mockedConnectorConfig.accessKeySecret
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|