forked from Yara724/api
96 lines
2.9 KiB
TypeScript
96 lines
2.9 KiB
TypeScript
import { SmsSendLogService } from "./sms-send-log.service";
|
|
import {
|
|
SmsSendLogKind,
|
|
SmsSendLogOperation,
|
|
SmsSendLogProvider,
|
|
SmsSendLogStatus,
|
|
} from "../schema/sms-send-log.schema";
|
|
|
|
describe("SmsSendLogService", () => {
|
|
const createMock = jest.fn();
|
|
let service: SmsSendLogService;
|
|
|
|
beforeEach(() => {
|
|
createMock.mockReset();
|
|
createMock.mockResolvedValue({});
|
|
service = new SmsSendLogService({
|
|
create: createMock,
|
|
} as never);
|
|
delete process.env.SMS;
|
|
delete process.env.SMS_PROVIDER;
|
|
process.env.AUTH_SMS_TEMPLATE = "auth-otp";
|
|
process.env.AUTH_SMS_MESSAGE =
|
|
"کاربر محترم رمز یکبار مصرف شما:\nCode: {token}";
|
|
});
|
|
|
|
it("records successful verifyLookup OTP with plain-text code and kavenegar sender", async () => {
|
|
await service.recordGatewayVerifyLookup({
|
|
data: {
|
|
receptor: "09120000000",
|
|
template: "auth-otp",
|
|
token: "54321",
|
|
isOtp: true,
|
|
},
|
|
startedAt: Date.now() - 12,
|
|
result: { return: { status: 200 } },
|
|
});
|
|
|
|
expect(createMock).toHaveBeenCalledTimes(1);
|
|
const doc = createMock.mock.calls[0][0];
|
|
expect(doc).toMatchObject({
|
|
receptor: "09120000000",
|
|
provider: SmsSendLogProvider.KAVENEGAR,
|
|
sender: "10008663",
|
|
operation: SmsSendLogOperation.VERIFY_LOOKUP,
|
|
status: SmsSendLogStatus.SUCCESS,
|
|
kind: SmsSendLogKind.OTP,
|
|
isOtp: true,
|
|
template: "auth-otp",
|
|
tokens: { token: "54321" },
|
|
messageText: "کاربر محترم رمز یکبار مصرف شما:\nCode: 54321",
|
|
});
|
|
expect(doc.providerResponse).toEqual({ return: { status: 200 } });
|
|
});
|
|
|
|
it("records skipped fake OTP as tejaratno provider with plain-text OTP", async () => {
|
|
await service.recordSkippedOtp({
|
|
receptor: "09121111111",
|
|
otp: "12345",
|
|
});
|
|
|
|
expect(createMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
receptor: "09121111111",
|
|
provider: SmsSendLogProvider.TEJARATNO,
|
|
operation: SmsSendLogOperation.SKIPPED,
|
|
status: SmsSendLogStatus.SKIPPED,
|
|
kind: SmsSendLogKind.SKIPPED,
|
|
isOtp: true,
|
|
tokens: { token: "12345" },
|
|
messageText: "کاربر محترم رمز یکبار مصرف شما:\nCode: 12345",
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("records parsian plain send with message text and no sender shortcode", async () => {
|
|
process.env.SMS = "parsian";
|
|
|
|
await service.recordGatewaySend({
|
|
data: { receptor: "09123333333", message: "hello party" },
|
|
startedAt: Date.now(),
|
|
result: { ok: true },
|
|
});
|
|
|
|
expect(createMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
provider: SmsSendLogProvider.PARSIAN,
|
|
sender: undefined,
|
|
operation: SmsSendLogOperation.SEND,
|
|
status: SmsSendLogStatus.SUCCESS,
|
|
kind: SmsSendLogKind.PLAIN,
|
|
messageText: "hello party",
|
|
}),
|
|
);
|
|
});
|
|
});
|