Files
tyx_AI_xhs/tests/api/wp7-04-amap-production-adapter.test.ts
T
suyx 8c349fb56c
Dada P0-A isolated Windows CI / validate-and-package (push) Failing after 1m47s
fix: wire production Amap adapter
2026-08-04 17:09:04 +08:00

48 lines
1.9 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { RealAmapAdapter } from "../../apps/api/src/amap-adapter.js";
import { initializeApiCredentialClients } from "../../apps/api/src/supervisor-channel.js";
describe("TDD-WP7-EXT-003 production Amap adapter", () => {
it("uses the fixed HTTPS provider boundary and returns only the formatted location", async () => {
const request = vi.fn(async () => ({
regeocode: { formatted_address: "模拟省模拟市" },
status: "1",
}));
const adapter = new RealAmapAdapter("fixture-amap-value", { request });
await expect(adapter.reverseGeocode({ latitude: 12.3456, longitude: 65.4321 })).resolves.toEqual({
formattedValue: "模拟省模拟市",
serviceMode: "real",
});
expect(request).toHaveBeenCalledOnce();
expect(request.mock.calls[0]?.[0]).toMatchObject({
allowRedirects: false,
hostname: "restapi.amap.com",
maxResponseBytes: 65_536,
method: "GET",
protocol: "https:",
rejectUnauthorized: true,
timeoutMs: 15_000,
});
expect(request.mock.calls[0]?.[0].path).toContain("/v3/geocode/regeo?");
expect(request.mock.calls[0]?.[0].path).toContain("location=65.4321%2C12.3456");
adapter.dispose();
await expect(adapter.reverseGeocode({ latitude: 0, longitude: 0 })).rejects.toThrow("amap_adapter_disposed");
});
it("constructs the real client from the API credential channel and clears the source values", () => {
const credentials = {
"Dada/P0A/admin/pepper": "fixture-admin-value",
"Dada/P0A/api/amap": "fixture-amap-value",
"Dada/P0A/api/resend": "fixture-resend-value",
};
const clients = initializeApiCredentialClients(credentials);
expect(clients.amap).toBeInstanceOf(RealAmapAdapter);
expect(Object.values(credentials)).toEqual(["", "", ""]);
clients.amap.dispose();
clients.adminAllowlistPepper.fill(0);
});
});