text: /* eslint-env mocha */
  import expect, { createSpy } from "expect"
  import { Map, fromJS } from "immutable"
  import {
    definitionsToAuthorize
  } from "corePlugins/oas3/auth-extensions/wrap-selectors"
  
  describe("oas3 plugin - auth extensions - wrapSelectors", function(){
  
    describe("execute", function(){
  
      it("should add `securities` to the oriAction call", function(){
        // Given
        const system = {
          getSystem: () => system,
          specSelectors: {
            specJson: () => fromJS({
              openapi: "3.0.0"
            }),
            securityDefinitions: () => {
              return fromJS({
                "oauth2AuthorizationCode": {
                  "type": "oauth2",
                  "flows": {
                    "authorizationCode": {
                      "authorizationUrl": "http://google.com/",
                      "tokenUrl": "http://google.com/",
                      "scopes": {
                        "myScope": "our only scope"
                      }
                    }
                  }
                },
                "oauth2Multiflow": {
                  "type": "oauth2",
                  "flows": {
                    "clientCredentials": {
                      "tokenUrl": "http://google.com/",
                      "scopes": {
                        "myScope": "our only scope"
                      }
                    },
                    "password": {
                      "tokenUrl": "http://google.com/",
                      "scopes": {
                        "myScope": "our only scope"
                      }
                    },
                    "authorizationCode": {
                      "authorizationUrl": "http://google.com/",
                      "tokenUrl": "http://google.com/",
                      "scopes": {
                        "myScope": "our only scope"
                      }
                    }
                  }
                }
              })
            }
          }
        }
  
        // When
        let res = definitionsToAuthorize(() => null, system)()
  
        // Then
        expect(res.toJS()).toEqual([
          {
            oauth2AuthorizationCode: {
              flow: "authorizationCode",
              authorizationUrl: "http://google.com/",
              tokenUrl: "http://google.com/",
              scopes: {
                "myScope": "our only scope"
              },
              type: "oauth2"
            }
          },
          {
            oauth2Multiflow: {
              flow: "clientCredentials",
              tokenUrl: "http://google.com/",
              scopes: {
                "myScope": "our only scope"
              },
              type: "oauth2"
            }
          },
          {
            oauth2Multiflow: {
              flow: "password",
              tokenUrl: "http://google.com/",
              scopes: {
                "myScope": "our only scope"
              },
              type: "oauth2"
            }
          },
          {
            oauth2Multiflow: {
              flow: "authorizationCode",
              authorizationUrl: "http://google.com/",
              tokenUrl: "http://google.com/",
              scopes: {
                "myScope": "our only scope"
              },
              type: "oauth2"
            }
          },
        ])
  
      })
  
    })
  
  })
  