X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/707b848245596bd4f25d497b45c1c3e501785ee4..1d4e548cf6c8f11d939712ea5f4df06786a89d64:/src/store/auth/auth-action.test.ts diff --git a/src/store/auth/auth-action.test.ts b/src/store/auth/auth-action.test.ts index 48f06d95..83a699a7 100644 --- a/src/store/auth/auth-action.test.ts +++ b/src/store/auth/auth-action.test.ts @@ -2,24 +2,24 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { authReducer, AuthState } from "./auth-reducer"; -import { AuthAction, initAuth } from "./auth-action"; +import { initAuth } from "./auth-action"; import { API_TOKEN_KEY } from "~/services/auth-service/auth-service"; import 'jest-localstorage-mock'; import { ServiceRepository, createServices } from "~/services/services"; import { configureStore, RootStore } from "../store"; -import createBrowserHistory from "history/createBrowserHistory"; -import { mockConfig } from '~/common/config'; +import { createBrowserHistory } from "history"; +import { mockConfig, DISCOVERY_DOC_PATH, } from '~/common/config'; import { ApiActions } from "~/services/api/api-actions"; import { ACCOUNT_LINK_STATUS_KEY } from '~/services/link-account-service/link-account-service'; -import axios from "axios"; +import Axios from "axios"; import MockAdapter from "axios-mock-adapter"; import { ImportMock } from 'ts-mock-imports'; import * as servicesModule from "~/services/services"; describe('auth-actions', () => { - const axiosMock = new MockAdapter(axios); + const axiosInst = Axios.create({ headers: {} }); + const axiosMock = new MockAdapter(axiosInst); let store: RootStore; let services: ServiceRepository; @@ -27,12 +27,18 @@ describe('auth-actions', () => { progressFn: (id: string, working: boolean) => { }, errorFn: (id: string, message: string) => { } }; + let importMocks: any[]; beforeEach(() => { axiosMock.reset(); - services = createServices(mockConfig({}), actions, axios); + services = createServices(mockConfig({}), actions, axiosInst); store = configureStore(createBrowserHistory(), services); localStorage.clear(); + importMocks = []; + }); + + afterEach(() => { + importMocks.map(m => m.restore()); }); it('should initialise state with user and api token from local storage', (done) => { @@ -51,7 +57,21 @@ describe('auth-actions', () => { prefs: {} }); - ImportMock.mockFunction(servicesModule, 'createServices', services); + axiosMock + .onGet("https://xc59z.arvadosapi.com/discovery/v1/apis/arvados/v1/rest") + .reply(200, { + baseUrl: "https://xc59z.arvadosapi.com/arvados/v1", + keepWebServiceUrl: "", + remoteHosts: {}, + rootUrl: "https://xc59z.arvadosapi.com", + uuidPrefix: "xc59z", + websocketUrl: "", + workbenchUrl: "", + workbench2Url: "", + revision: 12345678 + }); + + importMocks.push(ImportMock.mockFunction(servicesModule, 'createServices', services)); // Only test the case when a link account operation is not being cancelled sessionStorage.setItem(ACCOUNT_LINK_STATUS_KEY, "0"); @@ -61,6 +81,7 @@ describe('auth-actions', () => { rootUrl: "https://zzzzz.arvadosapi.com", uuidPrefix: "zzzzz", remoteHosts: { xc59z: "xc59z.arvadosapi.com" }, + apiRevision: 12345678, }; store.dispatch(initAuth(config)); @@ -70,23 +91,38 @@ describe('auth-actions', () => { if (auth.apiToken === "token" && auth.sessions.length === 2 && auth.sessions[0].status === 2 && - auth.sessions[1].status === 2 + auth.sessions[1].status === 2 ) { try { expect(auth).toEqual({ apiToken: "token", + config: { + apiRevision: 12345678, + remoteHosts: { + "xc59z": "xc59z.arvadosapi.com", + }, + rootUrl: "https://zzzzz.arvadosapi.com", + uuidPrefix: "zzzzz", + }, sshKeys: [], homeCluster: "zzzzz", localCluster: "zzzzz", loginCluster: undefined, remoteHostsConfig: { "zzzzz": { + "apiRevision": 12345678, "remoteHosts": { "xc59z": "xc59z.arvadosapi.com", }, "rootUrl": "https://zzzzz.arvadosapi.com", "uuidPrefix": "zzzzz", }, + "xc59z": mockConfig({ + apiRevision: 12345678, + baseUrl: "https://xc59z.arvadosapi.com/arvados/v1", + rootUrl: "https://xc59z.arvadosapi.com", + uuidPrefix: "xc59z" + }) }, remoteHosts: { zzzzz: "zzzzz.arvadosapi.com", @@ -101,8 +137,10 @@ describe('auth-actions', () => { "remoteHost": "https://zzzzz.arvadosapi.com", "status": 2, "token": "token", - "name": "John Doe" - "uuid": "zzzzz-tpzed-abcefg", + "name": "John Doe", + "apiRevision": 12345678, + "uuid": "zzzzz-tpzed-abcefg", + "userIsActive": true }, { "active": false, "baseUrl": "", @@ -114,6 +152,7 @@ describe('auth-actions', () => { "token": "", "name": "", "uuid": "", + "apiRevision": 0, }], user: { email: "test@test.com", @@ -138,22 +177,22 @@ describe('auth-actions', () => { // TODO: Add remaining action tests /* - it('should fire external url to login', () => { - const initialState = undefined; - window.location.assign = jest.fn(); - reducer(initialState, authActions.LOGIN()); - expect(window.location.assign).toBeCalledWith( - `/login?return_to=${window.location.protocol}//${window.location.host}/token` - ); - }); + it('should fire external url to login', () => { + const initialState = undefined; + window.location.assign = jest.fn(); + reducer(initialState, authActions.LOGIN()); + expect(window.location.assign).toBeCalledWith( + `/login?return_to=${window.location.protocol}//${window.location.host}/token` + ); + }); - it('should fire external url to logout', () => { - const initialState = undefined; - window.location.assign = jest.fn(); - reducer(initialState, authActions.LOGOUT()); - expect(window.location.assign).toBeCalledWith( - `/logout?return_to=${location.protocol}//${location.host}` - ); - }); - */ + it('should fire external url to logout', () => { + const initialState = undefined; + window.location.assign = jest.fn(); + reducer(initialState, authActions.LOGOUT()); + expect(window.location.assign).toBeCalledWith( + `/logout?return_to=${location.protocol}//${location.host}` + ); + }); + */ });