48 lines
1.9 KiB
TypeScript
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);
|
|
});
|
|
});
|