+ importMocks.push(ImportMock.mockFunction(servicesModule, 'createServices', services));
+ sessionStorage.setItem(ACCOUNT_LINK_STATUS_KEY, "0");
+ localStorage.setItem(API_TOKEN_KEY, "token");
+
+ const config: any = {
+ rootUrl: "https://zzzzz.arvadosapi.com",
+ uuidPrefix: "zzzzz",
+ remoteHosts: { },
+ apiRevision: 12345678,
+ clusterConfig: {
+ Login: { LoginCluster: "" },
+ },
+ };
+
+ // Set up auth, confirm that no extra token was requested
+ await store.dispatch(initAuth(config))
+ expect(store.getState().auth.apiToken).toBeDefined();
+ expect(store.getState().auth.extraApiToken).toBeUndefined();
+
+ // Ask for an extra token
+ await store.dispatch(getNewExtraToken());
+ expect(store.getState().auth.apiToken).toBeDefined();
+ expect(store.getState().auth.extraApiToken).toBeDefined();
+ const extraToken = store.getState().auth.extraApiToken;
+
+ // Ask for a cached extra token
+ await store.dispatch(getNewExtraToken(true));
+ expect(store.getState().auth.extraApiToken).toBe(extraToken);
+
+ // Ask for a new extra token, should make a second api request
+ await store.dispatch(getNewExtraToken(false));
+ expect(store.getState().auth.extraApiToken).toBeDefined();
+ expect(store.getState().auth.extraApiToken).not.toBe(extraToken);
+ });
+
+ it('should initialise state with user and api token from local storage', (done) => {