35 行
1.2 KiB
TypeScript
35 行
1.2 KiB
TypeScript
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
|
|
describe('后台登录临时关闭图片验证码', () => {
|
|
const root = path.resolve(__dirname, '../../..');
|
|
const loginSrc = fs.readFileSync(
|
|
path.join(root, 'src/modules/base/service/sys/login.ts'),
|
|
'utf8'
|
|
);
|
|
const dtoSrc = fs.readFileSync(
|
|
path.join(root, 'src/modules/base/dto/login.ts'),
|
|
'utf8'
|
|
);
|
|
|
|
it('login 不得再强制 captchaCheck,且不得抛出验证码不正确', () => {
|
|
expect(loginSrc).toMatch(/临时.*验证码/);
|
|
expect(loginSrc).not.toMatch(
|
|
/const checkV = await this\.captchaCheck\(captchaId, verifyCode\)/
|
|
);
|
|
expect(loginSrc).not.toMatch("验证码不正确");
|
|
});
|
|
|
|
it('LoginDTO 的 captchaId / verifyCode 必须改为可选,避免前端不传被校验拦截', () => {
|
|
expect(dtoSrc).toMatch(/optional\(\)[\s\S]{0,40}captchaId/);
|
|
expect(dtoSrc).toMatch(/optional\(\)[\s\S]{0,40}verifyCode/);
|
|
});
|
|
|
|
it('captchaCheck 仍保留给用户端短信等场景,不得被全局短路', () => {
|
|
expect(loginSrc).toContain('async captchaCheck');
|
|
expect(loginSrc).toMatch(
|
|
/if \(!rv \|\| !value \|\| value\.toLowerCase\(\) !== rv\)/
|
|
);
|
|
});
|
|
});
|