[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