/* * Copyright (C) 2025 TomTom Navigation B.V. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { describe, it, expect } from "vitest"; import { resolveFixedBackend, resolveBackendFromHeader } from "./indexHttp"; describe("resolveFixedBackend", () => { it("returns 'tomtom-orbis-maps' when MAPS=tomtom-orbis-maps", () => { expect(resolveFixedBackend("tomtom-orbis-maps")).toBe("tomtom-orbis-maps"); expect(resolveFixedBackend("TOMTOM-ORBIS-MAPS")).toBe("tomtom-orbis-maps"); expect(resolveFixedBackend("TomTom-Orbis-Maps")).toBe("tomtom-orbis-maps"); }); it("returns 'tomtom-maps' when MAPS=tomtom-maps", () => { expect(resolveFixedBackend("tomtom-maps")).toBe("tomtom-maps"); expect(resolveFixedBackend("TOMTOM-MAPS")).toBe("tomtom-maps"); expect(resolveFixedBackend("TomTom-Maps")).toBe("tomtom-maps"); }); it("returns null for undefined/empty/invalid values (dual mode)", () => { expect(resolveFixedBackend(undefined)).toBeNull(); expect(resolveFixedBackend("")).toBeNull(); expect(resolveFixedBackend("invalid")).toBeNull(); expect(resolveFixedBackend("both")).toBeNull(); expect(resolveFixedBackend("orbis")).toBeNull(); expect(resolveFixedBackend("genesis")).toBeNull(); }); }); describe("resolveBackendFromHeader", () => { describe("fixed backend mode (env var set)", () => { it("always returns fixed backend regardless of header", () => { expect(resolveBackendFromHeader("tomtom-orbis-maps", "tomtom-maps")).toBe( "tomtom-orbis-maps" ); expect(resolveBackendFromHeader("tomtom-orbis-maps", undefined)).toBe("tomtom-orbis-maps"); expect(resolveBackendFromHeader("tomtom-maps", "tomtom-orbis-maps")).toBe("tomtom-maps"); expect(resolveBackendFromHeader("tomtom-maps", undefined)).toBe("tomtom-maps"); }); }); describe("dual backend mode (env var not set)", () => { it("returns 'tomtom-orbis-maps' when header is 'tomtom-orbis-maps'", () => { expect(resolveBackendFromHeader(null, "tomtom-orbis-maps")).toBe("tomtom-orbis-maps"); expect(resolveBackendFromHeader(null, "TOMTOM-ORBIS-MAPS")).toBe("tomtom-orbis-maps"); expect(resolveBackendFromHeader(null, "TomTom-Orbis-Maps")).toBe("tomtom-orbis-maps"); }); it("returns 'tomtom-maps' when header is 'tomtom-maps'", () => { expect(resolveBackendFromHeader(null, "tomtom-maps")).toBe("tomtom-maps"); expect(resolveBackendFromHeader(null, "TOMTOM-MAPS")).toBe("tomtom-maps"); }); it("returns default backend when header is missing or invalid", () => { expect(resolveBackendFromHeader(null, undefined)).toBe("tomtom-maps"); expect(resolveBackendFromHeader(null, "")).toBe("tomtom-maps"); expect(resolveBackendFromHeader(null, "invalid")).toBe("tomtom-maps"); }); it("respects custom default backend", () => { expect(resolveBackendFromHeader(null, undefined, "tomtom-orbis-maps")).toBe( "tomtom-orbis-maps" ); expect(resolveBackendFromHeader(null, "invalid", "tomtom-orbis-maps")).toBe( "tomtom-orbis-maps" ); }); }); });