1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { linkAccountPanelReducer, LinkAccountPanelError, LinkAccountPanelStatus, OriginatingUser } from "~/store/link-account-panel/link-account-panel-reducer";
6 import { linkAccountPanelActions } from "~/store/link-account-panel/link-account-panel-actions";
7 import { UserResource } from "~/models/user";
9 describe('link-account-panel-reducer', () => {
10 const initialState = undefined;
12 it('handles initial link account state', () => {
13 const targetUser = { } as any;
14 targetUser.username = "targetUser";
16 const state = linkAccountPanelReducer(initialState, linkAccountPanelActions.LINK_INIT({targetUser}));
17 expect(state).toEqual({
20 selectedCluster: undefined,
21 targetUserToken: undefined,
22 userToLink: undefined,
23 userToLinkToken: undefined,
24 originatingUser: OriginatingUser.NONE,
25 error: LinkAccountPanelError.NONE,
26 status: LinkAccountPanelStatus.INITIAL
30 it('handles loaded link account state', () => {
31 const targetUser = { } as any;
32 targetUser.username = "targetUser";
33 const targetUserToken = "targettoken";
35 const userToLink = { } as any;
36 userToLink.username = "userToLink";
37 const userToLinkToken = "usertoken";
39 const originatingUser = OriginatingUser.TARGET_USER;
41 const state = linkAccountPanelReducer(initialState, linkAccountPanelActions.LINK_LOAD({
42 originatingUser, targetUser, targetUserToken, userToLink, userToLinkToken}));
43 expect(state).toEqual({
47 selectedCluster: undefined,
50 originatingUser: OriginatingUser.TARGET_USER,
51 error: LinkAccountPanelError.NONE,
52 status: LinkAccountPanelStatus.LINKING
56 it('handles loaded invalid account state', () => {
57 const targetUser = { } as any;
58 targetUser.username = "targetUser";
60 const userToLink = { } as any;
61 userToLink.username = "userToLink";
63 const originatingUser = OriginatingUser.TARGET_USER;
64 const error = LinkAccountPanelError.NON_ADMIN;
66 const state = linkAccountPanelReducer(initialState, linkAccountPanelActions.LINK_INVALID({targetUser, userToLink, originatingUser, error}));
67 expect(state).toEqual({
69 targetUserToken: undefined,
71 selectedCluster: undefined,
73 userToLinkToken: undefined,
74 originatingUser: OriginatingUser.TARGET_USER,
75 error: LinkAccountPanelError.NON_ADMIN,
76 status: LinkAccountPanelStatus.ERROR