23 lines
1.6 KiB
TypeScript
23 lines
1.6 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import test from "node:test";
|
|
|
|
const consultRoute = readFileSync(new URL("../src/app/api/consult/route.ts", import.meta.url), "utf8");
|
|
const reportsRoute = readFileSync(new URL("../src/app/api/reports/route.ts", import.meta.url), "utf8");
|
|
const safeResponse = /error: "计费配置不可用",\s*message: "当前服务的计费配置尚未完成,请联系支持人员,本次不会扣点。",\s*code: "pricing_configuration_unavailable"/;
|
|
|
|
test("consult pricing failures log FeaturePricingError.code and return an actionable safe response", () => {
|
|
assert.match(consultRoute, /import \{ FeaturePricingError, resolveFeaturePricing \} from "@\/lib\/feature-pricing"/);
|
|
assert.match(consultRoute, /error instanceof FeaturePricingError[\s\S]*reason=\$\{error\.code\}/);
|
|
assert.match(consultRoute, safeResponse);
|
|
assert.doesNotMatch(consultRoute, /pricing_configuration_unavailable[\s\S]{0,300}error\.message/);
|
|
});
|
|
|
|
test("reports pricing failures preserve the internal code while returning the same safe response", () => {
|
|
assert.match(reportsRoute, /import \{ FeaturePricingError, resolveFeaturePricing \} from "@\/lib\/feature-pricing"/);
|
|
assert.match(reportsRoute, /error instanceof FeaturePricingError[\s\S]*pricingConfigurationErrorCode = error\.code[\s\S]*reason=\$\{error\.code\}/);
|
|
assert.match(reportsRoute, /if \(pricingConfigurationErrorCode\)/);
|
|
assert.match(reportsRoute, safeResponse);
|
|
assert.doesNotMatch(reportsRoute, /pricing_configuration_unavailable[\s\S]{0,300}error\.message/);
|
|
});
|