forked from Yara724/api
sms logging in mongo part was added
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
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",
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user