134 lines
3.2 KiB
JavaScript
134 lines
3.2 KiB
JavaScript
/* eslint-env mocha */
|
|
import expect from "expect"
|
|
import { fromJS } from "immutable"
|
|
import { definitionsToAuthorize, definitionsForRequirements } from "corePlugins/auth/selectors"
|
|
|
|
describe("auth plugin - selectors", () => {
|
|
describe("definitionsToAuthorize", () => {
|
|
it("should return securityDefinitions as a List", () => {
|
|
const securityDefinitions = {
|
|
"petstore_auth": {
|
|
"type": "oauth2",
|
|
"authorizationUrl": "http://petstore.swagger.io/oauth/dialog",
|
|
"flow": "implicit",
|
|
"scopes": {
|
|
"write:pets": "modify pets in your account",
|
|
"read:pets": "read your pets"
|
|
}
|
|
},
|
|
"api_key": {
|
|
"type": "apiKey",
|
|
"name": "api_key",
|
|
"in": "header"
|
|
}
|
|
}
|
|
|
|
const system = {
|
|
specSelectors: {
|
|
securityDefinitions() {
|
|
return fromJS(securityDefinitions)
|
|
}
|
|
}
|
|
}
|
|
|
|
const res = definitionsToAuthorize({})(system)
|
|
|
|
expect(res.toJS()).toEqual([
|
|
{
|
|
"petstore_auth": securityDefinitions["petstore_auth"]
|
|
},
|
|
{
|
|
"api_key": securityDefinitions["api_key"]
|
|
},
|
|
])
|
|
})
|
|
|
|
it("should fail gracefully with bad data", () => {
|
|
const securityDefinitions = null
|
|
|
|
const system = {
|
|
specSelectors: {
|
|
securityDefinitions() {
|
|
return fromJS(securityDefinitions)
|
|
}
|
|
}
|
|
}
|
|
|
|
const res = definitionsToAuthorize({})(system)
|
|
|
|
expect(res.toJS()).toEqual([])
|
|
})
|
|
})
|
|
|
|
describe("definitionsForRequirements", () => {
|
|
it("should return applicable securityDefinitions as a List", () => {
|
|
const securityDefinitions = {
|
|
"petstore_auth": {
|
|
"type": "oauth2",
|
|
"authorizationUrl": "http://petstore.swagger.io/oauth/dialog",
|
|
"flow": "implicit",
|
|
"scopes": {
|
|
"write:pets": "modify pets in your account",
|
|
"read:pets": "read your pets"
|
|
}
|
|
},
|
|
"api_key": {
|
|
"type": "apiKey",
|
|
"name": "api_key",
|
|
"in": "header"
|
|
}
|
|
}
|
|
|
|
const system = {
|
|
authSelectors: {
|
|
definitionsToAuthorize() {
|
|
return fromJS([
|
|
{
|
|
"petstore_auth": securityDefinitions["petstore_auth"]
|
|
},
|
|
{
|
|
"api_key": securityDefinitions["api_key"]
|
|
},
|
|
])
|
|
}
|
|
}
|
|
}
|
|
|
|
const securities = fromJS([
|
|
{
|
|
"petstore_auth": [
|
|
"write:pets",
|
|
"read:pets"
|
|
]
|
|
}
|
|
])
|
|
|
|
const res = definitionsForRequirements({}, securities)(system)
|
|
|
|
expect(res.toJS()).toEqual([
|
|
{
|
|
"petstore_auth": securityDefinitions["petstore_auth"]
|
|
}
|
|
])
|
|
})
|
|
|
|
it("should fail gracefully with bad data", () => {
|
|
const securityDefinitions = null
|
|
|
|
const system = {
|
|
authSelectors: {
|
|
definitionsToAuthorize() {
|
|
return null
|
|
}
|
|
}
|
|
}
|
|
|
|
const securities = null
|
|
|
|
const res = definitionsForRequirements({}, securities)(system)
|
|
|
|
expect(res.toJS()).toEqual([])
|
|
})
|
|
})
|
|
})
|