77 lines
1.8 KiB
JavaScript
77 lines
1.8 KiB
JavaScript
// Mock data
|
|
|
|
const { data } = require("./utilities/mock-data")
|
|
|
|
const TENANT_ID = "default"
|
|
|
|
const googleConfig = {
|
|
clientID: data.clientID,
|
|
clientSecret: data.clientSecret,
|
|
}
|
|
|
|
const profile = {
|
|
id: "mockId",
|
|
_json: {
|
|
email : data.email
|
|
},
|
|
provider: "google"
|
|
}
|
|
|
|
const user = data.buildThirdPartyUser("google", "google", profile)
|
|
|
|
describe("google", () => {
|
|
describe("strategyFactory", () => {
|
|
// mock passport strategy factory
|
|
jest.mock("passport-google-oauth")
|
|
const mockStrategy = require("passport-google-oauth").OAuth2Strategy
|
|
|
|
it("should create successfully create a google strategy", async () => {
|
|
const google = require("../google")
|
|
|
|
const callbackUrl = `/api/global/auth/${TENANT_ID}/google/callback`
|
|
await google.strategyFactory(googleConfig, callbackUrl)
|
|
|
|
const expectedOptions = {
|
|
clientID: googleConfig.clientID,
|
|
clientSecret: googleConfig.clientSecret,
|
|
callbackURL: callbackUrl,
|
|
}
|
|
|
|
expect(mockStrategy).toHaveBeenCalledWith(
|
|
expectedOptions,
|
|
expect.anything()
|
|
)
|
|
})
|
|
})
|
|
|
|
describe("authenticate", () => {
|
|
afterEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
// mock third party common authentication
|
|
jest.mock("../third-party-common")
|
|
const authenticateThirdParty = require("../third-party-common").authenticateThirdParty
|
|
|
|
// mock the passport callback
|
|
const mockDone = jest.fn()
|
|
|
|
it("delegates authentication to third party common", async () => {
|
|
const google = require("../google")
|
|
|
|
await google.authenticate(
|
|
data.accessToken,
|
|
data.refreshToken,
|
|
profile,
|
|
mockDone
|
|
)
|
|
|
|
expect(authenticateThirdParty).toHaveBeenCalledWith(
|
|
user,
|
|
true,
|
|
mockDone)
|
|
})
|
|
})
|
|
})
|
|
|