|
|
@@ -0,0 +1,133 @@ |
|
|
|
/* eslint-env mocha */ |
|
|
|
import expect from "expect" |
|
|
|
import { fromJS } from "immutable" |
|
|
|
import { definitionsToAuthorize, definitionsForRequirements } from "corePlugins/auth/selectors" |
|
|
|
|
|
|
|
describe.only("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([]) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |