UNPKG

@nahkies/typescript-axios-runtime

Version:

Runtime package for code generated by @nahkies/openapi-code-generator using the typescript-axios template

154 lines 7.74 kB
"use strict"; // biome-ignore-all lint/complexity/useLiteralKeys: tests // biome-ignore-all lint/suspicious/noExplicitAny: tests Object.defineProperty(exports, "__esModule", { value: true }); const globals_1 = require("@jest/globals"); const main_1 = require("./main"); class ConcreteAxiosClient extends main_1.AbstractAxiosClient { // biome-ignore lint/complexity/noUselessConstructor: make public constructor(config) { super(config); } query(params) { return this._query(params); } headers(paramHeaders = {}, optsHeaders = {}) { return this._headers(paramHeaders, optsHeaders); } } (0, globals_1.describe)("typescript-axios-runtime/main", () => { (0, globals_1.describe)("_query", () => { const client = new ConcreteAxiosClient({ basePath: "", defaultHeaders: {} }); (0, globals_1.it)("returns an empty string when all params are undefined", () => { (0, globals_1.expect)(client.query({ foo: undefined, bar: undefined })).toBe(""); }); (0, globals_1.it)("returns the defined params in a simple case", () => { (0, globals_1.expect)(client.query({ foo: undefined, bar: "baz", foobar: "value" })).toBe("?bar=baz&foobar=value"); }); (0, globals_1.it)("repeats array params", () => { (0, globals_1.expect)(client.query({ foo: ["bar", "baz"] })).toBe("?foo=bar&foo=baz"); }); (0, globals_1.it)("handles objects", () => { (0, globals_1.expect)(client.query({ foo: { bar: "baz" } })).toBe(`?${encodeURIComponent("foo[bar]")}=baz`); }); (0, globals_1.it)("handles arrays of objects with multiple properties", () => { (0, globals_1.expect)(client.query({ foo: [ { prop1: "one", prop2: "two" }, { prop1: "foo", prop2: "bar" }, ], limit: 10, undefined: undefined, includeSomething: false, })).toBe(`?${encodeURIComponent("foo[prop1]")}=one&${encodeURIComponent("foo[prop2]")}=two&${encodeURIComponent("foo[prop1]")}=foo&${encodeURIComponent("foo[prop2]")}=bar&limit=10&includeSomething=false`); }); }); (0, globals_1.describe)("_headers", () => { function getActual({ defaultHeaders, routeHeaders, configHeaders, }) { const client = new ConcreteAxiosClient({ basePath: "", defaultHeaders: defaultHeaders ?? {}, }); return client.headers(routeHeaders, configHeaders); } (0, globals_1.describe)("default headers", () => { (0, globals_1.it)("can set default headers", () => { const actual = getActual({ defaultHeaders: { Authorization: "Bearer: default" }, }); (0, globals_1.expect)(actual).toMatchObject({ authorization: "Bearer: default", }); }); (0, globals_1.it)("can override default headers with route headers", () => { const actual = getActual({ defaultHeaders: { Authorization: "Bearer: default" }, routeHeaders: { Authorization: "Bearer: route" }, }); (0, globals_1.expect)(actual).toMatchObject({ authorization: "Bearer: route" }); }); (0, globals_1.it)("can override default headers with config headers", () => { const actual = getActual({ defaultHeaders: { Authorization: "Bearer: default" }, routeHeaders: { Authorization: "Bearer: route" }, configHeaders: { Authorization: "Bearer: config" }, }); (0, globals_1.expect)(actual).toMatchObject({ authorization: "Bearer: config" }); }); (0, globals_1.it)("can clear default headers with route headers", () => { const actual = getActual({ defaultHeaders: { Authorization: "Bearer: default" }, routeHeaders: { Authorization: null }, }); (0, globals_1.expect)(actual.Authorization).toStrictEqual(undefined); }); (0, globals_1.it)("can clear default headers with config headers", () => { const actual = getActual({ defaultHeaders: { Authorization: "Bearer: default" }, routeHeaders: { Authorization: "Bearer: route" }, configHeaders: { Authorization: null }, }); (0, globals_1.expect)(actual.Authorization).toStrictEqual(undefined); }); }); (0, globals_1.describe)("route headers", () => { (0, globals_1.it)("applies number route headers", () => { const actual = getActual({ routeHeaders: { "X-Rate-Limit": 10 }, }); (0, globals_1.expect)(actual["x-rate-limit"]).toStrictEqual("10"); }); (0, globals_1.it)("ignores undefined values and lets the default apply", () => { const actual = getActual({ defaultHeaders: { "X-Rate-Limit": "10" }, routeHeaders: { "X-Rate-Limit": undefined }, }); (0, globals_1.expect)(actual["x-rate-limit"]).toStrictEqual("10"); }); (0, globals_1.it)("applies tuple array headers", () => { const actual = getActual({ defaultHeaders: { "X-Rate-Limit": "10" }, routeHeaders: [ ["X-Rate-Limit", 20], ["Foo", "bar"], ], }); (0, globals_1.expect)(actual["foo"]).toStrictEqual("bar"); (0, globals_1.expect)(actual["x-rate-limit"]).toStrictEqual("20"); }); (0, globals_1.it)("applies Headers", () => { const headers = new Headers(); headers.append("X-Rate-Limit", "20"); headers.append("Foo", "bar"); headers.append("Foo", "foobar"); const actual = getActual({ defaultHeaders: { "X-Rate-Limit": "10" }, routeHeaders: headers, }); // Headers that aren't Set-Cookie get concatenated by the Headers built-in. (0, globals_1.expect)(actual["foo"]).toStrictEqual("bar, foobar"); (0, globals_1.expect)(actual["x-rate-limit"]).toStrictEqual("20"); }); }); (0, globals_1.describe)("config headers", () => { (0, globals_1.it)("can receive a Record<string, string|string[]> correctly", () => { const headers = { "Set-Cookie": [ "one=cookie-1; SameSite=None; Secure", "two=cookie-2; SameSite=None; Secure", ], Foo: "bar", }; const actual = getActual({ defaultHeaders: { "X-Rate-Limit": "10" }, routeHeaders: { "X-Rate-Limit": undefined }, configHeaders: headers, }); (0, globals_1.expect)(actual["foo"]).toStrictEqual("bar"); (0, globals_1.expect)(actual["set-cookie"]).toStrictEqual("one=cookie-1; SameSite=None; Secure,two=cookie-2; SameSite=None; Secure"); (0, globals_1.expect)(actual["x-rate-limit"]).toStrictEqual("10"); }); }); }); }); //# sourceMappingURL=main.spec.js.map