补齐平台订阅、外部登录、CRM 同步与用户端页面;Nginx 转发用户端接口,登录页使用 Google 与 Apple 标志。 Co-authored-by: Cursor <cursoragent@cursor.com>
91 行
2.7 KiB
TypeScript
91 行
2.7 KiB
TypeScript
import { CoolCommException } from '@cool-midway/core';
|
||
import { AdminCardInfoController } from '../../../src/modules/card/controller/admin/info';
|
||
import { CardInfoService } from '../../../src/modules/card/service/info';
|
||
|
||
/**
|
||
* R35:生产环境禁止 POST /admin/card/info/seed 写入演示名片
|
||
*/
|
||
describe('AdminCardInfoController seed 生产守卫', () => {
|
||
const originalNodeEnv = process.env.NODE_ENV;
|
||
|
||
afterEach(() => {
|
||
process.env.NODE_ENV = originalNodeEnv;
|
||
});
|
||
|
||
function createController(env: {
|
||
nodeEnv?: string;
|
||
midwayEnv?: string;
|
||
}): {
|
||
controller: AdminCardInfoController;
|
||
seedMockCards: jest.Mock;
|
||
} {
|
||
if (env.nodeEnv !== undefined) {
|
||
process.env.NODE_ENV = env.nodeEnv;
|
||
}
|
||
const seedMockCards = jest.fn().mockResolvedValue(6);
|
||
const controller = new AdminCardInfoController();
|
||
controller.cardInfoService = {
|
||
seedMockCards,
|
||
} as unknown as CardInfoService;
|
||
controller.ok = jest.fn((data: unknown) => ({
|
||
code: 1000,
|
||
data,
|
||
})) as never;
|
||
if (env.midwayEnv !== undefined) {
|
||
(controller as { app?: { getEnv: () => string } }).app = {
|
||
getEnv: () => env.midwayEnv as string,
|
||
};
|
||
}
|
||
return { controller, seedMockCards };
|
||
}
|
||
|
||
it('NODE_ENV=production 时应抛明确错误且不调用 seedMockCards', async () => {
|
||
const { controller, seedMockCards } = createController({
|
||
nodeEnv: 'production',
|
||
});
|
||
|
||
await expect(controller.seed()).rejects.toThrow(CoolCommException);
|
||
await expect(controller.seed()).rejects.toThrow(
|
||
/生产|production|禁止|不可用|不允许/i
|
||
);
|
||
expect(seedMockCards).not.toHaveBeenCalled();
|
||
expect(controller.ok).not.toHaveBeenCalled();
|
||
});
|
||
|
||
it('Midway getEnv()=prod 时应拒绝且不播种', async () => {
|
||
const { controller, seedMockCards } = createController({
|
||
nodeEnv: 'local',
|
||
midwayEnv: 'prod',
|
||
});
|
||
|
||
await expect(controller.seed()).rejects.toThrow(CoolCommException);
|
||
expect(seedMockCards).not.toHaveBeenCalled();
|
||
});
|
||
|
||
it('非生产环境应调用 seedMockCards 并正常返回', async () => {
|
||
const { controller, seedMockCards } = createController({
|
||
nodeEnv: 'local',
|
||
midwayEnv: 'local',
|
||
});
|
||
|
||
const result = await controller.seed();
|
||
|
||
expect(seedMockCards).toHaveBeenCalledTimes(1);
|
||
expect(controller.ok).toHaveBeenCalled();
|
||
expect(result).toEqual({
|
||
code: 1000,
|
||
data: expect.objectContaining({ count: 6 }),
|
||
});
|
||
});
|
||
|
||
it('unittest 环境允许播种(本地测试)', async () => {
|
||
const { controller, seedMockCards } = createController({
|
||
nodeEnv: 'unittest',
|
||
midwayEnv: 'unittest',
|
||
});
|
||
|
||
await controller.seed();
|
||
expect(seedMockCards).toHaveBeenCalledTimes(1);
|
||
});
|
||
});
|