diff --git a/src/core/oauth2-authorize.js b/src/core/oauth2-authorize.js index 2e36010e..fd3a4afc 100644 --- a/src/core/oauth2-authorize.js +++ b/src/core/oauth2-authorize.js @@ -64,7 +64,8 @@ export default function authorize ( { auth, authActions, errActions, configs, au } } - let url = [schema.get("authorizationUrl"), query.join("&")].join("?") + let authorizationUrl = schema.get("authorizationUrl") + let url = [authorizationUrl, query.join("&")].join(authorizationUrl.indexOf("?") === -1 ? "?" : "&") // pass action authorizeOauth2 and authentication data through window // to authorize with oauth2 diff --git a/test/core/oauth2-authorize.js b/test/core/oauth2-authorize.js new file mode 100644 index 00000000..c4fed4ba --- /dev/null +++ b/test/core/oauth2-authorize.js @@ -0,0 +1,39 @@ +/* eslint-env mocha */ +import expect, { createSpy } from "expect" +import { fromJS } from "immutable" +import win from "core/window" +import oauth2Authorize from "core/oauth2-authorize" + +describe("oauth2", function () { + + let mockSchema = { + flow: "accessCode", + authorizationUrl: "https://testAuthorizationUrl" + } + + let authConfig = { + auth: { schema: { get: (key)=> mockSchema[key] } }, + authActions: {}, + errActions: {}, + configs: { oauth2RedirectUrl: "" }, + authConfigs: {} + } + + describe("authorize redirect", function () { + + it("should build authorize url", function() { + win.open = createSpy() + oauth2Authorize(authConfig) + expect(win.open.calls.length).toEqual(1) + expect(win.open.calls[0].arguments[0]).toMatch("https://testAuthorizationUrl?response_type=code&redirect_uri=&state=") + }) + + it("should append query paramters to authorizeUrl with query parameters", function() { + win.open = createSpy() + mockSchema.authorizationUrl = "https://testAuthorizationUrl?param=1" + oauth2Authorize(authConfig) + expect(win.open.calls.length).toEqual(1) + expect(win.open.calls[0].arguments[0]).toMatch("https://testAuthorizationUrl?param=1&response_type=code&redirect_uri=&state=") + }) + }) +})