forked from swagger-api/swagger-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feature: add
withCredentials
configuration key (via swagger-api#5149)
* 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
- Loading branch information
1 parent
38def57
commit be72c29
Showing
6 changed files
with
118 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
export const loaded = (ori, system) => (...args) => { | ||
ori(...args) | ||
const value = system.getConfigs().withCredentials | ||
|
||
if(value !== undefined) { | ||
system.fn.fetch.withCredentials = typeof value === "string" ? (value === "true") : !!value | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
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) | ||
}) | ||
}) |