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\)/ ); }); });