数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
// 回归测试 #1 / #4:生产环境下,忘记密码/短信验证码绝不出现在响应里(fail-closed)。
|
||||
// NODE_ENV 必须在 import config 之前设定,故用动态 import。
|
||||
process.env.NODE_ENV = 'production';
|
||||
process.env.EMAIL_PROVIDER = 'stub'; // 无真实邮件 provider
|
||||
process.env.SMS_PROVIDER = 'stub'; // 无真实短信 provider
|
||||
// ⚠ 必须显式钉死:开发机的 .env 里常有 ALLOW_STUB_LOGIN=true(内测放开手机/微信登录),
|
||||
// dotenv 不覆盖已存在的 process.env,但【没设过的】变量会被 .env 灌进来 →
|
||||
// 这条回归测试会被本地 .env 污染:它本想验证"没开 stub 时必须 fail-closed",
|
||||
// 结果读到 allowStubLogin=true 走了另一条分支,长期红着、没人当回事。
|
||||
process.env.ALLOW_STUB_LOGIN = 'false';
|
||||
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
const { sendResetCode, sendSmsCode } = await import('../src/services/altauth.js');
|
||||
|
||||
test('prod: 忘记密码验证码不回传(无 devCode),fail-closed', async () => {
|
||||
const r = await sendResetCode('victim@example.com');
|
||||
assert.ok(!('devCode' in r) || !r.devCode, `不应泄露 devCode,实际:${JSON.stringify(r)}`);
|
||||
assert.equal(r.error, 'email-send-failed');
|
||||
});
|
||||
|
||||
test('prod: 短信验证码不回传(无 devCode),fail-closed', async () => {
|
||||
const r = await sendSmsCode('13800138000');
|
||||
assert.ok(!('devCode' in r) || !r.devCode, `不应泄露 devCode,实际:${JSON.stringify(r)}`);
|
||||
assert.equal(r.error, 'sms-send-failed');
|
||||
});
|
||||
Reference in New Issue
Block a user