* Add default configuration `preserveAuthorization` * Add localStorage to auth plugin * Add persistAuthorization unit tests * Refactor persistAuthorization to use wrapped actions * Upgrade unit tests to be compatible with jest * Add persistAuthorization documentation Co-authored-by: Tim Lai <timothy.lai@gmail.com>
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
import { downloadConfig } from "corePlugins/configs/spec-actions"
|
|
import { loaded } from "corePlugins/configs/actions"
|
|
|
|
describe("configs plugin - actions", () => {
|
|
|
|
describe("downloadConfig", () => {
|
|
it("should call the system fetch helper with a provided request", () => {
|
|
const fetchSpy = jest.fn(async () => {})
|
|
const system = {
|
|
fn: {
|
|
fetch: fetchSpy
|
|
}
|
|
}
|
|
|
|
const req = {
|
|
url: "http://swagger.io/one",
|
|
requestInterceptor: a => a,
|
|
responseInterceptor: a => a,
|
|
}
|
|
|
|
downloadConfig(req)(system)
|
|
|
|
expect(fetchSpy).toHaveBeenCalledWith(req)
|
|
})
|
|
})
|
|
|
|
describe("loaded hook", () => {
|
|
describe("authorization data restoration", () => {
|
|
beforeEach(() => {
|
|
localStorage.clear()
|
|
})
|
|
it("retrieve `authorized` value from `localStorage`", () => {
|
|
const system = {
|
|
getConfigs: () => ({
|
|
persistAuthorization: true
|
|
}),
|
|
authActions: {
|
|
|
|
}
|
|
}
|
|
jest.spyOn(Object.getPrototypeOf(window.localStorage), "getItem")
|
|
loaded()(system)
|
|
expect(localStorage.getItem).toHaveBeenCalled()
|
|
expect(localStorage.getItem).toHaveBeenCalledWith("authorized")
|
|
})
|
|
it("restore authorization data when a value exists", () => {
|
|
const system = {
|
|
getConfigs: () => ({
|
|
persistAuthorization: true
|
|
}),
|
|
authActions: {
|
|
restoreAuthorization: jest.fn(() => {})
|
|
}
|
|
}
|
|
const mockData = {"api_key": {}}
|
|
localStorage.setItem("authorized", JSON.stringify(mockData))
|
|
loaded()(system)
|
|
expect(system.authActions.restoreAuthorization).toHaveBeenCalled()
|
|
expect(system.authActions.restoreAuthorization).toHaveBeenCalledWith({
|
|
authorized: mockData
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|