UNPKG

@nahkies/typescript-fetch-runtime

Version:

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

222 lines 10.7 kB
"use strict"; // 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 ConcreteFetchClient extends main_1.AbstractFetchClient { // 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-fetch-runtime/main", () => { (0, globals_1.describe)("_query", () => { const client = new ConcreteFetchClient({ basePath: "http://localhost:8080", defaultHeaders: { Authorization: "Bearer: default" }, }); (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 ConcreteFetchClient({ 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)(Array.from(actual.entries())).toStrictEqual([ ["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)(Array.from(actual.entries())).toStrictEqual([ ["authorization", "Bearer: route"], ]); }); (0, globals_1.it)("can override default headers with config headers", () => { const actual = getActual({ defaultHeaders: { Authorization: "Bearer: default" }, configHeaders: { Authorization: "Bearer: config" }, }); (0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([ ["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)(Array.from(actual.entries())).toStrictEqual([]); }); (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)(Array.from(actual.entries())).toStrictEqual([]); }); }); (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)(Array.from(actual.entries())).toStrictEqual([ ["x-rate-limit", "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)(Array.from(actual.entries())).toStrictEqual([ ["x-rate-limit", "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)(Array.from(actual.entries())).toStrictEqual([ ["foo", "bar"], ["x-rate-limit", "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, }); (0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([ // Headers that aren't Set-Cookie get concatenated by the Headers built-in. ["foo", "bar, foobar"], ["x-rate-limit", "20"], ]); }); }); (0, globals_1.describe)("config headers", () => { (0, globals_1.it)("can receive a Headers object correctly", () => { const headers = new Headers(); headers.append("Set-Cookie", "one=cookie-1; SameSite=None; Secure"); headers.append("Set-Cookie", "two=cookie-2; SameSite=None; Secure"); const actual = getActual({ defaultHeaders: { "X-Rate-Limit": "10" }, routeHeaders: { "X-Rate-Limit": undefined }, configHeaders: headers, }); (0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([ ["set-cookie", "one=cookie-1; SameSite=None; Secure"], ["set-cookie", "two=cookie-2; SameSite=None; Secure"], ["x-rate-limit", "10"], ]); }); (0, globals_1.it)("can receive a [string, string][] correctly", () => { const headers = [ ["Set-Cookie", "one=cookie-1; SameSite=None; Secure"], ["Set-Cookie", "two=cookie-2; SameSite=None; Secure"], ]; const actual = getActual({ defaultHeaders: { "X-Rate-Limit": "10" }, routeHeaders: { "X-Rate-Limit": undefined }, configHeaders: headers, }); (0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([ ["set-cookie", "one=cookie-1; SameSite=None; Secure"], ["set-cookie", "two=cookie-2; SameSite=None; Secure"], ["x-rate-limit", "10"], ]); }); (0, globals_1.it)("can receive a 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)(Array.from(actual.entries())).toStrictEqual([ ["foo", "bar"], ["set-cookie", "one=cookie-1; SameSite=None; Secure"], ["set-cookie", "two=cookie-2; SameSite=None; Secure"], ["x-rate-limit", "10"], ]); }); (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)(Array.from(actual.entries())).toStrictEqual([ ["foo", "bar"], ["set-cookie", "one=cookie-1; SameSite=None; Secure"], ["set-cookie", "two=cookie-2; SameSite=None; Secure"], ["x-rate-limit", "10"], ]); }); }); }); }); //# sourceMappingURL=main.spec.js.map