15803: Updating tests WIP
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 14 Nov 2019 22:47:15 +0000 (17:47 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 14 Nov 2019 22:47:15 +0000 (17:47 -0500)
src/services/services.ts
src/store/auth/auth-action.test.ts
src/store/auth/auth-action.ts
src/store/auth/auth-reducer.test.ts

index 89b3d0ff0d3cad1d5c5b312c13e30288c82735ee..af547deccfd81c8f8a00af0a3d2a35cbd0c81b82 100644 (file)
@@ -3,6 +3,7 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import Axios from "axios";
+import { AxiosInstance } from "axios";
 import { ApiClientAuthorizationService } from '~/services/api-client-authorization-service/api-client-authorization-service';
 import { AuthService } from "./auth-service/auth-service";
 import { GroupsService } from "./groups-service/groups-service";
@@ -49,12 +50,12 @@ export function removeAuthorizationHeader(services: ServiceRepository) {
     delete services.webdavClient.defaults.headers.common;
 }
 
-export const createServices = (config: Config, actions: ApiActions) => {
+export const createServices = (config: Config, actions: ApiActions, useApiClient?: AxiosInstance) => {
     // Need to give empty 'headers' object or it will create an
     // instance with a reference to the global default headers object,
     // which is very bad because that means setAuthorizationHeader
     // would update the global default instead of the instance default.
-    const apiClient = Axios.create({ headers: {} });
+    const apiClient = useApiClient || Axios.create({ headers: {} });
     apiClient.defaults.baseURL = config.baseUrl;
 
     const webdavClient = new WebDAV();
index a543fc18dccadd57c31043d8ecd1f99c84fe0330..b0449c0aa8474b398edcbac41ddae3096bc1f1a7 100644 (file)
@@ -18,41 +18,53 @@ import {
 } from "~/services/auth-service/auth-service";
 
 import 'jest-localstorage-mock';
-import { createServices } from "~/services/services";
+import { ServiceRepository, createServices } from "~/services/services";
 import { configureStore, RootStore } from "../store";
 import createBrowserHistory from "history/createBrowserHistory";
 import { mockConfig } 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 MockAdapter from "axios-mock-adapter";
 
 describe('auth-actions', () => {
+    const axiosMock = new MockAdapter(axios);
+
     let reducer: (state: AuthState | undefined, action: AuthAction) => any;
     let store: RootStore;
+    let services: ServiceRepository;
     const actions: ApiActions = {
         progressFn: (id: string, working: boolean) => { },
         errorFn: (id: string, message: string) => { }
     };
 
     beforeEach(() => {
-        store = configureStore(createBrowserHistory(), createServices(mockConfig({}), actions));
+        axiosMock.reset();
+        services = createServices(mockConfig({}), actions, axios);
+        store = configureStore(createBrowserHistory(), services);
         localStorage.clear();
-        reducer = authReducer(createServices(mockConfig({}), actions));
+        reducer = authReducer(services);
     });
 
     it('should initialise state with user and api token from local storage', () => {
 
+        axiosMock
+            .onGet("/users/current")
+            .reply(200, {
+                email: "test@test.com",
+                first_name: "John",
+                last_name: "Doe",
+                uuid: "zzzzz-tpzed-abcefg",
+                ownerUuid: "ownerUuid",
+                is_admin: false,
+                is_active: true,
+                username: "jdoe",
+                prefs: {}
+            });
+
         // Only test the case when a link account operation is not being cancelled
         sessionStorage.setItem(ACCOUNT_LINK_STATUS_KEY, "0");
         localStorage.setItem(API_TOKEN_KEY, "token");
-        localStorage.setItem(USER_EMAIL_KEY, "test@test.com");
-        localStorage.setItem(USER_FIRST_NAME_KEY, "John");
-        localStorage.setItem(USER_LAST_NAME_KEY, "Doe");
-        localStorage.setItem(USER_UUID_KEY, "zzzzz-tpzed-abcefg");
-        localStorage.setItem(USER_USERNAME, "username");
-        localStorage.setItem(USER_PREFS, JSON.stringify({}));
-        localStorage.setItem(USER_OWNER_UUID_KEY, "ownerUuid");
-        localStorage.setItem(USER_IS_ADMIN, JSON.stringify(false));
-        localStorage.setItem(USER_IS_ACTIVE, JSON.stringify(true));
 
         const config: any = {
             rootUrl: "https://zzzzz.arvadosapi.com",
@@ -110,7 +122,7 @@ describe('auth-actions', () => {
                 lastName: "Doe",
                 uuid: "zzzzz-tpzed-abcefg",
                 ownerUuid: "ownerUuid",
-                username: "username",
+                username: "jdoe",
                 prefs: {},
                 isAdmin: false,
                 isActive: true
index 41245751ebb178b5d53e9bfd43753fc1969aa230..8fb5c5e9d2c2b280a1a3fd595afa002dd6adcfca 100644 (file)
@@ -59,7 +59,9 @@ const init = (config: Config) => (dispatch: Dispatch, getState: () => RootState,
 
     if (token && token !== "undefined") {
         dispatch(progressIndicatorActions.START_WORKING(WORKBENCH_LOADING_SCREEN));
-        dispatch<any>(saveApiToken(token)).finally(() => {
+        dispatch<any>(saveApiToken(token)).then(() => {
+            dispatch(progressIndicatorActions.STOP_WORKING(WORKBENCH_LOADING_SCREEN));
+        }).catch(() => {
             dispatch(progressIndicatorActions.STOP_WORKING(WORKBENCH_LOADING_SCREEN));
         });
     }
index 30bee3bc1b7e9d49abcbf787c7a6c98d3bf754bf..e862a313d0f3dbbeddea3e71c36dbf68247ccb07 100644 (file)
@@ -69,7 +69,7 @@ describe('auth-reducer', () => {
             apiToken: undefined,
             sshKeys: [],
             sessions: [],
-            homeCluster: "",
+            homeCluster: "uuid",
             localCluster: "",
             loginCluster: "",
             remoteHosts: {},