53
server-node/src/services/smsVerificationService.test.ts
Normal file
53
server-node/src/services/smsVerificationService.test.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import pino from 'pino';
|
||||
|
||||
import type { AppConfig } from '../config.js';
|
||||
import { createSmsVerificationService } from './smsVerificationService.js';
|
||||
|
||||
function createAliyunSmsConfig(): AppConfig {
|
||||
return {
|
||||
smsAuth: {
|
||||
enabled: true,
|
||||
provider: 'aliyun',
|
||||
endpoint: 'dypnsapi.aliyuncs.com',
|
||||
accessKeyId: 'test-access-key-id',
|
||||
accessKeySecret: 'test-access-key-secret',
|
||||
signName: '测试签名',
|
||||
templateCode: 'SMS_100001',
|
||||
templateParamKey: 'code',
|
||||
countryCode: '86',
|
||||
schemeName: '',
|
||||
codeLength: 6,
|
||||
codeType: 1,
|
||||
validTimeSeconds: 300,
|
||||
intervalSeconds: 60,
|
||||
duplicatePolicy: 1,
|
||||
caseAuthPolicy: 1,
|
||||
returnVerifyCode: false,
|
||||
mockVerifyCode: '123456',
|
||||
maxSendPerPhonePerDay: 20,
|
||||
maxSendPerIpPerHour: 30,
|
||||
maxVerifyFailuresPerPhonePerHour: 12,
|
||||
maxVerifyFailuresPerIpPerHour: 24,
|
||||
captchaTtlSeconds: 180,
|
||||
captchaTriggerVerifyFailuresPerPhone: 3,
|
||||
captchaTriggerVerifyFailuresPerIp: 5,
|
||||
blockPhoneFailureThreshold: 6,
|
||||
blockIpFailureThreshold: 10,
|
||||
blockPhoneDurationMinutes: 30,
|
||||
blockIpDurationMinutes: 30,
|
||||
},
|
||||
} as AppConfig;
|
||||
}
|
||||
|
||||
test('createSmsVerificationService initializes aliyun sdk client under tsx esm runtime', () => {
|
||||
const service = createSmsVerificationService(
|
||||
createAliyunSmsConfig(),
|
||||
pino({ enabled: false }),
|
||||
);
|
||||
|
||||
assert.equal(typeof service.sendLoginCode, 'function');
|
||||
assert.equal(typeof service.verifyLoginCode, 'function');
|
||||
});
|
||||
Reference in New Issue
Block a user