@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
JavaScript
;
// 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