UNPKG

opds-web-client

Version:
94 lines (93 loc) 3.99 kB
"use strict"; jest.dontMock("../DataFetcher"); var DataFetcher_1 = require("../DataFetcher"); var Cookie = require("js-cookie"); describe("DataFetcher", function () { var mockFetch; beforeEach(function () { mockFetch = jest.genMockFunction(); mockFetch.mockReturnValue(new Promise(function (resolve, reject) { resolve({ status: 200 }); })); fetch = mockFetch; }); it("uses fetch()", function () { var options = { method: "POST", data: { test: "test" }, credentials: "same-origin" }; var fetcher = new DataFetcher_1.default(); fetcher.fetch("test url", options); expect(mockFetch.mock.calls.length).toBe(1); expect(mockFetch.mock.calls[0][0]).toBe("test url"); expect(mockFetch.mock.calls[0][1]).toEqual(Object.assign({}, options, { headers: { "X-Requested-With": "XMLHttpRequest" } })); }); it("sends credentials by default", function () { var options = { method: "POST", data: { test: "test" } }; var fetcher = new DataFetcher_1.default(); fetcher.fetch("test url", options); expect(mockFetch.mock.calls.length).toBe(1); expect(mockFetch.mock.calls[0][0]).toBe("test url"); expect(mockFetch.mock.calls[0][1]).toEqual(Object.assign({ credentials: "same-origin", headers: { "X-Requested-With": "XMLHttpRequest" } }, options)); }); it("uses proxy url if provided", function () { var proxyUrl = "http://example.com"; var fetcher = new DataFetcher_1.default({ proxyUrl: proxyUrl }); fetcher.fetch("test url"); var formData = new FormData(); formData.append("url", proxyUrl); expect(mockFetch.mock.calls.length).toBe(1); expect(mockFetch.mock.calls[0][0]).toBe(proxyUrl); expect(mockFetch.mock.calls[0][1].method).toBe("POST"); expect(mockFetch.mock.calls[0][1].body.get("url").value).toEqual("test url"); }); it("prepares basic auth headers", function () { var fetcher = new DataFetcher_1.default(); fetcher.getBasicAuthCredentials = function () { return "credentials"; }; fetcher.fetch("test url"); expect(mockFetch.mock.calls[0][1].headers["Authorization"]).toBe("Basic credentials"); }); it("sets basic auth credentials", function () { var fetcher = new DataFetcher_1.default(); fetcher.setBasicAuthCredentials("credentials"); expect(Cookie.get(fetcher.basicAuthKey)).toBe("credentials"); }); it("gets basic auth credentials", function () { var fetcher = new DataFetcher_1.default(); Cookie.set(fetcher.basicAuthKey, "credentials"); expect(fetcher.getBasicAuthCredentials()).toBe("credentials"); }); it("clears basic auth credentials", function () { var fetcher = new DataFetcher_1.default(); Cookie.set(fetcher.basicAuthKey, "credentials"); fetcher.clearBasicAuthCredentials(); expect(Cookie.get(fetcher.basicAuthKey)).toBe(undefined); }); describe("fetchOPDSData()", function () { it("throws error if response isn't 200", function (done) { mockFetch = jest.genMockFunction(); mockFetch.mockReturnValue(new Promise(function (resolve, reject) { resolve({ status: 401, text: function () { return new Promise(function (resolve, reject) { return resolve("unauthorized"); }); } }); })); fetch = mockFetch; var fetcher = new DataFetcher_1.default(); fetcher.fetchOPDSData("test url").catch(function (err) { expect(err.status).toBe(401); expect(err.response).toBe("unauthorized"); expect(err.url).toBe("test url"); done(); }); }); }); });