* Add the withCredentials configuration key It enables passing credentials in CORS requests. e.g. Cookies and Authorization headers. * Improve withCredentials documentation * Add unit tests for the withCredentials config * Update configuration.md * Update configuration.md * only set `withCredentials` Fetch flag if the config value is truthy there are some workarounds in the wild today that involve setting `withCredentials` on `system.fn.fetch` directly. this approach avoids mangling those existing workarounds! * add more test cases * Update configs-wrap-actions.js * Update index.js
95 lines
2.3 KiB
JavaScript
95 lines
2.3 KiB
JavaScript
import expect, { createSpy } from "expect"
|
|
import { loaded } from "corePlugins/swagger-js/configs-wrap-actions"
|
|
|
|
describe("swagger-js plugin - withCredentials", () => {
|
|
it("should have no effect by default", () => {
|
|
const system = {
|
|
fn: {
|
|
fetch: createSpy().andReturn(Promise.resolve())
|
|
},
|
|
getConfigs: () => ({})
|
|
}
|
|
const oriExecute = createSpy()
|
|
|
|
const loadedFn = loaded(oriExecute, system)
|
|
loadedFn()
|
|
|
|
expect(oriExecute.calls.length).toBe(1)
|
|
expect(system.fn.fetch.withCredentials).toBe(undefined)
|
|
})
|
|
|
|
it("should allow setting flag to true via config", () => {
|
|
const system = {
|
|
fn: {
|
|
fetch: createSpy().andReturn(Promise.resolve())
|
|
},
|
|
getConfigs: () => ({
|
|
withCredentials: true
|
|
})
|
|
}
|
|
const oriExecute = createSpy()
|
|
|
|
const loadedFn = loaded(oriExecute, system)
|
|
loadedFn()
|
|
|
|
expect(oriExecute.calls.length).toBe(1)
|
|
expect(system.fn.fetch.withCredentials).toBe(true)
|
|
})
|
|
|
|
it("should allow setting flag to false via config", () => {
|
|
const system = {
|
|
fn: {
|
|
fetch: createSpy().andReturn(Promise.resolve())
|
|
},
|
|
getConfigs: () => ({
|
|
withCredentials: false
|
|
})
|
|
}
|
|
const oriExecute = createSpy()
|
|
|
|
const loadedFn = loaded(oriExecute, system)
|
|
loadedFn()
|
|
|
|
expect(oriExecute.calls.length).toBe(1)
|
|
expect(system.fn.fetch.withCredentials).toBe(false)
|
|
})
|
|
|
|
it("should allow setting flag to true via config as string", () => {
|
|
// for query string config
|
|
const system = {
|
|
fn: {
|
|
fetch: createSpy().andReturn(Promise.resolve())
|
|
},
|
|
getConfigs: () => ({
|
|
withCredentials: "true"
|
|
})
|
|
}
|
|
const oriExecute = createSpy()
|
|
|
|
const loadedFn = loaded(oriExecute, system)
|
|
loadedFn()
|
|
|
|
expect(oriExecute.calls.length).toBe(1)
|
|
expect(system.fn.fetch.withCredentials).toBe(true)
|
|
})
|
|
|
|
it("should allow setting flag to false via config as string", () => {
|
|
// for query string config
|
|
const system = {
|
|
fn: {
|
|
fetch: createSpy().andReturn(Promise.resolve())
|
|
},
|
|
getConfigs: () => ({
|
|
withCredentials: "false"
|
|
})
|
|
}
|
|
const oriExecute = createSpy()
|
|
|
|
const loadedFn = loaded(oriExecute, system)
|
|
loadedFn()
|
|
|
|
expect(oriExecute.calls.length).toBe(1)
|
|
expect(system.fn.fetch.withCredentials).toBe(false)
|
|
})
|
|
})
|