[ARVADOS-WORKBENCH2] updated: 49102c744e277370da62c279d25563d633295cc2

Git user git at public.curoverse.com
Wed Jun 6 11:39:54 EDT 2018


Summary of changes:
 package.json                              |  5 +-
 src/services/auth-service/auth-service.ts |  8 +--
 src/store/auth/auth-reducer.test.ts       | 83 +++++++++++++++++++++++++++++++
 yarn.lock                                 |  4 ++
 4 files changed, 94 insertions(+), 6 deletions(-)
 create mode 100644 src/store/auth/auth-reducer.test.ts

       via  49102c744e277370da62c279d25563d633295cc2 (commit)
      from  16b7bebe83b28b5622f23385df5cacbd66bc425b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 49102c744e277370da62c279d25563d633295cc2
Author: Daniel Kos <daniel.kos at contractors.roche.com>
Date:   Wed Jun 6 17:33:40 2018 +0200

    Add auth reducer tests
    
    Feature #13563
    
    Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos at contractors.roche.com>:

diff --git a/package.json b/package.json
index 9a31c4e..ac890d8 100644
--- a/package.json
+++ b/package.json
@@ -34,8 +34,9 @@
     "@types/react-router-dom": "4.2.7",
     "@types/react-router-redux": "5.0.15",
     "@types/redux-devtools": "3.0.44",
-    "typescript": "2.9.1",
-    "redux-devtools": "3.4.1"
+    "jest-localstorage-mock": "2.2.0",
+    "redux-devtools": "3.4.1",
+    "typescript": "2.9.1"
   },
   "moduleNameMapper": {
     "^~/(.*)$": "<rootDir>/src/$1"
diff --git a/src/services/auth-service/auth-service.ts b/src/services/auth-service/auth-service.ts
index 12c5b68..9e75c72 100644
--- a/src/services/auth-service/auth-service.ts
+++ b/src/services/auth-service/auth-service.ts
@@ -5,10 +5,10 @@
 import { API_HOST } from "../../common/server-api";
 import { User } from "../../models/user";
 
-const API_TOKEN_KEY = 'apiToken';
-const USER_EMAIL_KEY = 'userEmail';
-const USER_FIRST_NAME_KEY = 'userFirstName';
-const USER_LAST_NAME_KEY = 'userLastName';
+export const API_TOKEN_KEY = 'apiToken';
+export const USER_EMAIL_KEY = 'userEmail';
+export const USER_FIRST_NAME_KEY = 'userFirstName';
+export const USER_LAST_NAME_KEY = 'userLastName';
 
 export default class AuthService {
 
diff --git a/src/store/auth/auth-reducer.test.ts b/src/store/auth/auth-reducer.test.ts
new file mode 100644
index 0000000..3d60c4f
--- /dev/null
+++ b/src/store/auth/auth-reducer.test.ts
@@ -0,0 +1,83 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import authReducer from "./auth-reducer";
+import actions from "./auth-action";
+import {
+    API_TOKEN_KEY,
+    USER_EMAIL_KEY,
+    USER_FIRST_NAME_KEY,
+    USER_LAST_NAME_KEY
+} from "../../services/auth-service/auth-service";
+
+require('jest-localstorage-mock');
+
+describe('auth-reducer', () => {
+    beforeAll(() => {
+        localStorage.clear();
+    });
+
+    it('should return default state on initialisation', () => {
+        const initialState = undefined;
+        const state = authReducer(initialState, actions.INIT());
+        expect(state).toEqual({
+            apiToken: undefined,
+            user: undefined
+        });
+    });
+
+    it('should read user and api token from local storage on init if they are there', () => {
+        const initialState = undefined;
+
+        localStorage.setItem(API_TOKEN_KEY, "token");
+        localStorage.setItem(USER_EMAIL_KEY, "test at test.com");
+        localStorage.setItem(USER_FIRST_NAME_KEY, "John");
+        localStorage.setItem(USER_LAST_NAME_KEY, "Doe");
+
+        const state = authReducer(initialState, actions.INIT());
+        expect(state).toEqual({
+            apiToken: "token",
+            user: {
+                email: "test at test.com",
+                firstName: "John",
+                lastName: "Doe"
+            }
+        });
+    });
+
+    it('should store token in local storage', () => {
+        const initialState = undefined;
+
+        const state = authReducer(initialState, actions.SAVE_API_TOKEN("token"));
+        expect(state).toEqual({
+            apiToken: "token",
+            user: undefined
+        });
+
+        expect(localStorage.getItem(API_TOKEN_KEY)).toBe("token");
+    });
+
+    it('should set user details on success fetch', () => {
+        const initialState = undefined;
+
+        const userDetails = {
+            email: "test at test.com",
+            first_name: "John",
+            last_name: "Doe",
+            is_admin: true
+        };
+
+        const state = authReducer(initialState, actions.USER_DETAILS_SUCCESS(userDetails));
+        expect(state).toEqual({
+            apiToken: undefined,
+            user: {
+                email: "test at test.com",
+                firstName: "John",
+                lastName: "Doe"
+            }
+        });
+
+        expect(localStorage.getItem(API_TOKEN_KEY)).toBe("token");
+    });
+});
diff --git a/yarn.lock b/yarn.lock
index 2d6ca3c..17549e0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4003,6 +4003,10 @@ jest-leak-detector@^22.4.0:
   dependencies:
     pretty-format "^22.4.3"
 
+jest-localstorage-mock@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/jest-localstorage-mock/-/jest-localstorage-mock-2.2.0.tgz#ce9a9de01dfdde2ad8aa08adf73acc7e5cc394cf"
+
 jest-matcher-utils@^22.4.0, jest-matcher-utils@^22.4.3:
   version "22.4.3"
   resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff"

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list