I want to test the following function
export async function getIdToken() {
const currentUser = firebase.auth().currentUser;
if (currentUser) {
return currentUser.getIdToken();
} else {
return undefined;
}
}
export async function getSomethingViaHTTPS() {
const idToken = await getIdToken();
const response = await fetch("https://someURL.com", {
method: "GET",
headers: { Authorization: "Bearer " + idToken }
});
if (response.status === 200) {
return await response.json();
}
throw new Error("failed to fetch data breaches: " + response.status + ": " + (await response.text()));
}
Now I dont know how I can test it since during test the current user would be undefined. Is there a way to mock the current user? This is my test function:
describe("something via https", () => {
const mockGetSomethingAPI = responseBody => {
fetchMock.once(req => {
if (req.url !== "https://someURL.com") {
return Promise.reject({});
}
return Promise.resolve(JSON.stringify(responseBody));
});
};
it("get something", async () => {
mockGetSomethingAPI({ "something": "some text" });
expect(await mockGetSomethingAPI()).toEqual({ something: "testestest" });
});
});