@thoughtspot/visual-embed-sdk 1.11.0-auth.9 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/README.md +15 -2
  3. package/dist/src/auth.d.ts +13 -0
  4. package/dist/src/embed/base.d.ts +34 -4
  5. package/dist/src/embed/search.d.ts +4 -0
  6. package/dist/src/embed/ts-embed.d.ts +0 -1
  7. package/dist/src/index.d.ts +3 -2
  8. package/dist/src/types.d.ts +27 -0
  9. package/dist/src/utils/authService.d.ts +1 -0
  10. package/dist/src/utils/processData.d.ts +1 -1
  11. package/dist/src/utils.d.ts +1 -0
  12. package/dist/tsembed.es.js +1497 -2889
  13. package/dist/tsembed.js +1495 -2888
  14. package/lib/package.json +3 -2
  15. package/lib/src/auth.d.ts +13 -0
  16. package/lib/src/auth.js +35 -9
  17. package/lib/src/auth.js.map +1 -1
  18. package/lib/src/auth.spec.js +76 -1
  19. package/lib/src/auth.spec.js.map +1 -1
  20. package/lib/src/embed/base.d.ts +34 -4
  21. package/lib/src/embed/base.js +79 -11
  22. package/lib/src/embed/base.js.map +1 -1
  23. package/lib/src/embed/base.spec.js +50 -2
  24. package/lib/src/embed/base.spec.js.map +1 -1
  25. package/lib/src/embed/embed.spec.js +1 -1
  26. package/lib/src/embed/embed.spec.js.map +1 -1
  27. package/lib/src/embed/search.d.ts +4 -0
  28. package/lib/src/embed/search.js +1 -1
  29. package/lib/src/embed/search.js.map +1 -1
  30. package/lib/src/embed/ts-embed.d.ts +0 -1
  31. package/lib/src/embed/ts-embed.js +5 -16
  32. package/lib/src/embed/ts-embed.js.map +1 -1
  33. package/lib/src/index.d.ts +3 -2
  34. package/lib/src/index.js +3 -2
  35. package/lib/src/index.js.map +1 -1
  36. package/lib/src/types.d.ts +27 -0
  37. package/lib/src/types.js +10 -0
  38. package/lib/src/types.js.map +1 -1
  39. package/lib/src/utils/authService.d.ts +1 -0
  40. package/lib/src/utils/authService.js +12 -2
  41. package/lib/src/utils/authService.js.map +1 -1
  42. package/lib/src/utils/authService.spec.js +10 -0
  43. package/lib/src/utils/authService.spec.js.map +1 -1
  44. package/lib/src/utils/processData.d.ts +1 -1
  45. package/lib/src/utils/processData.js +37 -3
  46. package/lib/src/utils/processData.js.map +1 -1
  47. package/lib/src/utils/processData.spec.js +106 -4
  48. package/lib/src/utils/processData.spec.js.map +1 -1
  49. package/lib/src/utils.d.ts +1 -0
  50. package/lib/src/utils.js +4 -0
  51. package/lib/src/utils.js.map +1 -1
  52. package/lib/src/utils.spec.js +14 -1
  53. package/lib/src/utils.spec.js.map +1 -1
  54. package/lib/src/visual-embed-sdk.d.ts +129 -6
  55. package/package.json +3 -2
  56. package/src/auth.spec.ts +98 -2
  57. package/src/auth.ts +44 -7
  58. package/src/embed/base.spec.ts +57 -3
  59. package/src/embed/base.ts +96 -15
  60. package/src/embed/embed.spec.ts +1 -1
  61. package/src/embed/search.ts +5 -0
  62. package/src/embed/ts-embed.ts +10 -19
  63. package/src/index.ts +5 -1
  64. package/src/types.ts +28 -0
  65. package/src/utils/authService.spec.ts +13 -0
  66. package/src/utils/authService.ts +14 -2
  67. package/src/utils/processData.spec.ts +139 -4
  68. package/src/utils/processData.ts +54 -4
  69. package/src/utils.spec.ts +26 -0
  70. package/src/utils.ts +5 -0
  71. package/dist/src/embed/pinboard.d.ts +0 -91
  72. package/dist/src/utils/plugin.d.ts +0 -0
  73. package/dist/src/v1/api.d.ts +0 -19
  74. package/lib/src/embed/pinboard.d.ts +0 -91
  75. package/lib/src/embed/pinboard.js +0 -110
  76. package/lib/src/embed/pinboard.js.map +0 -1
  77. package/lib/src/utils/plugin.d.ts +0 -0
  78. package/lib/src/utils/plugin.js +0 -1
  79. package/lib/src/utils/plugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"processData.spec.js","sourceRoot":"","sources":["../../../src/utils/processData.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processData.spec.js","sourceRoot":"","sources":["../../../src/utils/processData.spec.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export declare const getCssDimension: (value: number | string) => string;
32
32
  * @param stringToAppend The string to append to the URL hash
33
33
  */
34
34
  export declare const appendToUrlHash: (url: string, stringToAppend: string) => string;
35
+ export declare function getRedirectUrl(url: string, stringToAppend: string, path?: string): string;
35
36
  export declare const getEncodedQueryParamsString: (queryString: string) => string;
36
37
  export declare const getOffsetTop: (element: any) => any;
37
38
  export declare const embedEventStatus: {
package/lib/src/utils.js CHANGED
@@ -96,6 +96,10 @@ export const appendToUrlHash = (url, stringToAppend) => {
96
96
  }
97
97
  return outputUrl;
98
98
  };
99
+ export function getRedirectUrl(url, stringToAppend, path = '') {
100
+ const targetUrl = path ? new URL(path, window.location.origin).href : url;
101
+ return appendToUrlHash(targetUrl, stringToAppend);
102
+ }
99
103
  export const getEncodedQueryParamsString = (queryString) => {
100
104
  if (!queryString) {
101
105
  return queryString;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @jest-environment node
3
3
  */
4
- import { getQueryParamString, getFilterQuery, getCssDimension, getEncodedQueryParamsString, appendToUrlHash, } from './utils';
4
+ import { getQueryParamString, getFilterQuery, getCssDimension, getEncodedQueryParamsString, appendToUrlHash, getRedirectUrl, } from './utils';
5
5
  import { RuntimeFilterOp } from './types';
6
6
  describe('unit test for utils', () => {
7
7
  test('getQueryParamString', () => {
@@ -54,6 +54,19 @@ describe('unit test for utils', () => {
54
54
  expect(appendToUrlHash('http://myhost:3000', 'hashFrag')).toBe('http://myhost:3000#hashFrag');
55
55
  expect(appendToUrlHash('http://xyz.com/#foo', 'bar')).toBe('http://xyz.com/#foobar');
56
56
  });
57
+ describe('getRedirectURL', () => {
58
+ test('Should return correct value when path is undefined', () => {
59
+ expect(getRedirectUrl('http://myhost:3000', 'hashFrag')).toBe('http://myhost:3000#hashFrag');
60
+ expect(getRedirectUrl('http://xyz.com/#foo', 'bar')).toBe('http://xyz.com/#foobar');
61
+ });
62
+ test('Should return correct value when path is set', () => {
63
+ Object.defineProperty(window.location, 'origin', {
64
+ get: () => 'http://myhost:3000',
65
+ });
66
+ expect(getRedirectUrl('http://myhost:3000/', 'hashFrag', '/bar')).toBe('http://myhost:3000/bar#hashFrag');
67
+ expect(getRedirectUrl('http://myhost:3000/#/foo', 'hashFrag', '#/bar')).toBe('http://myhost:3000/#/barhashFrag');
68
+ });
69
+ });
57
70
  test('getEncodedQueryParamsString', () => {
58
71
  expect(getEncodedQueryParamsString('')).toBe('');
59
72
  expect(getEncodedQueryParamsString('test')).toBe('dGVzdA');
@@ -1 +1 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/utils.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  // Generated by dts-bundle v0.7.3
2
+ // Dependencies for this module:
3
+ // ../../eventemitter3
2
4
 
3
5
  declare module '@thoughtspot/visual-embed-sdk' {
4
6
  /**
@@ -11,11 +13,12 @@ declare module '@thoughtspot/visual-embed-sdk' {
11
13
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
12
14
  */
13
15
  import { AppEmbed, Page, AppViewConfig } from '@thoughtspot/visual-embed-sdk/embed/app';
14
- import { init, prefetch } from '@thoughtspot/visual-embed-sdk/embed/base';
16
+ import { init, prefetch, logout } from '@thoughtspot/visual-embed-sdk/embed/base';
15
17
  import { PinboardEmbed, LiveboardViewConfig, LiveboardEmbed } from '@thoughtspot/visual-embed-sdk/embed/liveboard';
16
18
  import { SearchEmbed, SearchViewConfig } from '@thoughtspot/visual-embed-sdk/embed/search';
19
+ import { AuthFailureType, AuthStatus } from '@thoughtspot/visual-embed-sdk/auth';
17
20
  import { AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, EmbedConfig } from '@thoughtspot/visual-embed-sdk/types';
18
- export { init, prefetch, SearchEmbed, PinboardEmbed, LiveboardEmbed, AppEmbed, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, EmbedConfig, SearchViewConfig, LiveboardViewConfig, AppViewConfig, };
21
+ export { init, logout, prefetch, SearchEmbed, PinboardEmbed, LiveboardEmbed, AppEmbed, AuthFailureType, AuthStatus, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, EmbedConfig, SearchViewConfig, LiveboardViewConfig, AppViewConfig, };
19
22
  }
20
23
 
21
24
  declare module '@thoughtspot/visual-embed-sdk/embed/app' {
@@ -134,14 +137,27 @@ declare module '@thoughtspot/visual-embed-sdk/embed/app' {
134
137
  }
135
138
 
136
139
  declare module '@thoughtspot/visual-embed-sdk/embed/base' {
140
+ /**
141
+ * Copyright (c) 2022
142
+ *
143
+ * Base classes
144
+ *
145
+ * @summary Base classes
146
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
147
+ */
148
+ import EventEmitter from 'eventemitter3';
137
149
  import { EmbedConfig } from '@thoughtspot/visual-embed-sdk/types';
150
+ import { AuthFailureType } from '@thoughtspot/visual-embed-sdk/auth';
138
151
  export let authPromise: Promise<boolean>;
152
+ export const getEmbedConfig: () => EmbedConfig;
153
+ export const getAuthPromise: () => Promise<boolean>;
154
+ export function notifyAuthSuccess(): void;
155
+ export function notifyAuthFailure(failureType: AuthFailureType): void;
156
+ export function notifyLogout(): void;
139
157
  /**
140
158
  * Perform authentication on the ThoughtSpot app as applicable.
141
159
  */
142
160
  export const handleAuth: () => Promise<boolean>;
143
- export const getEmbedConfig: () => EmbedConfig;
144
- export const getAuthPromise: () => Promise<boolean>;
145
161
  /**
146
162
  * Prefetches static resources from the specified URL. Web browsers can then cache the prefetched resources and serve them from the user's local disk to provide faster access to your app.
147
163
  * @param url The URL provided for prefetch
@@ -153,14 +169,31 @@ declare module '@thoughtspot/visual-embed-sdk/embed/base' {
153
169
  * @param embedConfig The configuration object containing ThoughtSpot host,
154
170
  * authentication mechanism and so on.
155
171
  *
156
- * @returns authPromise Promise which resolves when authentication is complete.
172
+ * eg: authStatus = init(config);
173
+ * authStatus.on(AuthStatus.FAILURE, (reason) => { // do something here });
174
+ *
175
+ * @returns event emitter which emits events on authentication success, failure and logout. {@link AuthStatus}
176
+ */
177
+ export const init: (embedConfig: EmbedConfig) => EventEmitter;
178
+ export function disableAutoLogin(): void;
179
+ /**
180
+ * Logout from ThoughtSpot. This also sets the autoLogin flag to false, to prevent
181
+ * the SDK from automatically logging in again.
182
+ *
183
+ * You can call the `init` method again to re login, if autoLogin is set to true in this
184
+ * second call it will be honored.
185
+ *
186
+ * @param doNotDisableAutoLogin This flag when passed will not disable autoLogin
187
+ * @returns Promise which resolves when logout completes.
188
+ * @version SDK: 1.10.1 | ThoughtSpot: *
157
189
  */
158
- export const init: (embedConfig: EmbedConfig) => Promise<boolean>;
190
+ export const logout: (doNotDisableAutoLogin?: boolean) => Promise<boolean>;
159
191
  /**
160
192
  * Renders functions in a queue, resolves to next function only after the callback next is called
161
193
  * @param fn The function being registered
162
194
  */
163
195
  export const renderInQueue: (fn: (next?: (val?: any) => void) => void) => void;
196
+ export function reset(): void;
164
197
  }
165
198
 
166
199
  declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
@@ -306,6 +339,10 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
306
339
  * using raw answer data.
307
340
  */
308
341
  hideResults?: boolean;
342
+ /**
343
+ * If set to true, expands all the data sources panel.
344
+ */
345
+ expandAllDataSource?: boolean;
309
346
  /**
310
347
  * If set to true, the Search Assist feature is enabled.
311
348
  */
@@ -353,6 +390,65 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
353
390
  export {};
354
391
  }
355
392
 
393
+ declare module '@thoughtspot/visual-embed-sdk/auth' {
394
+ import { EmbedConfig } from '@thoughtspot/visual-embed-sdk/types';
395
+ export let loggedInStatus: boolean;
396
+ export let samlAuthWindow: Window;
397
+ export let samlCompletionPromise: Promise<void>;
398
+ export let sessionInfo: any;
399
+ export const SSO_REDIRECTION_MARKER_GUID = "5e16222e-ef02-43e9-9fbd-24226bf3ce5b";
400
+ export const EndPoints: {
401
+ AUTH_VERIFICATION: string;
402
+ SAML_LOGIN_TEMPLATE: (targetUrl: string) => string;
403
+ OIDC_LOGIN_TEMPLATE: (targetUrl: string) => string;
404
+ TOKEN_LOGIN: string;
405
+ BASIC_LOGIN: string;
406
+ LOGOUT: string;
407
+ };
408
+ export enum AuthFailureType {
409
+ SDK = "SDK",
410
+ NO_COOKIE_ACCESS = "NO_COOKIE_ACCESS",
411
+ EXPIRY = "EXPIRY",
412
+ OTHER = "OTHER"
413
+ }
414
+ export enum AuthStatus {
415
+ FAILURE = "FAILURE",
416
+ SUCCESS = "SUCCESS",
417
+ LOGOUT = "LOGOUT"
418
+ }
419
+ /**
420
+ * Return sessionInfo if available else make a loggedIn check to fetch the sessionInfo
421
+ */
422
+ export function getSessionInfo(): any;
423
+ export function initSession(sessionDetails: any): void;
424
+ /**
425
+ * Perform token based authentication
426
+ * @param embedConfig The embed configuration
427
+ */
428
+ export const doTokenAuth: (embedConfig: EmbedConfig) => Promise<boolean>;
429
+ /**
430
+ * Perform basic authentication to the ThoughtSpot cluster using the cluster
431
+ * credentials.
432
+ *
433
+ * Warning: This feature is primarily intended for developer testing. It is
434
+ * strongly advised not to use this authentication method in production.
435
+ * @param embedConfig The embed configuration
436
+ */
437
+ export const doBasicAuth: (embedConfig: EmbedConfig) => Promise<boolean>;
438
+ export const doSamlAuth: (embedConfig: EmbedConfig) => Promise<boolean>;
439
+ export const doOIDCAuth: (embedConfig: EmbedConfig) => Promise<boolean>;
440
+ export const logout: (embedConfig: EmbedConfig) => Promise<boolean>;
441
+ /**
442
+ * Perform authentication on the ThoughtSpot cluster
443
+ * @param embedConfig The embed configuration
444
+ */
445
+ export const authenticate: (embedConfig: EmbedConfig) => Promise<boolean>;
446
+ /**
447
+ * Check if we are authenticated to the ThoughtSpot cluster
448
+ */
449
+ export const isAuthenticated: () => boolean;
450
+ }
451
+
356
452
  declare module '@thoughtspot/visual-embed-sdk/types' {
357
453
  /**
358
454
  * The authentication mechanism for allowing access to the
@@ -438,6 +534,15 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
438
534
  * @default false
439
535
  */
440
536
  noRedirect?: boolean;
537
+ /**
538
+ * [SSO] For SSO Authentication, one can supply an optional path param,
539
+ * this will be the path on the host origin where the SAML flow will be
540
+ * terminated.
541
+ *
542
+ * Eg: "/dashboard", "#/foo" [Do not include the host]
543
+ * @version SDK: 1.10.2 | ThoughtSpot: *
544
+ */
545
+ redirectPath?: string;
441
546
  /** @internal */
442
547
  basepath?: string;
443
548
  /**
@@ -492,6 +597,14 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
492
597
  * @default ''
493
598
  */
494
599
  customCssUrl?: string;
600
+ /**
601
+ * [AuthServer|Basic] Detect if 3rd party cookies are enabled by doing an additional call. This is slower
602
+ * and should be avoided. Listen to the NO_COOKIE_ACCESS event to handle the situation.
603
+ *
604
+ * This is slightly slower than letting the browser handle the cookie check, as it involves an extra network call.
605
+ * @version SDK: 1.10.4 | ThoughtSpot: *
606
+ */
607
+ detectCookieAccessSlow?: boolean;
495
608
  }
496
609
  /**
497
610
  * MessagePayload: Embed event payload: message type, data and status (start/end)
@@ -685,6 +798,16 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
685
798
  * The ThoughtSpot auth session has expired.
686
799
  */
687
800
  AuthExpire = "ThoughtspotAuthExpired",
801
+ /**
802
+ * ThoughtSpot failed to validate the auth session.
803
+ * @hidden
804
+ */
805
+ AuthFailure = "ThoughtspotAuthFailure",
806
+ /**
807
+ * ThoughtSpot failed to validate the auth session.
808
+ * @hidden
809
+ */
810
+ AuthLogout = "ThoughtspotAuthLogout",
688
811
  /**
689
812
  * The height of the embedded Liveboard or visualization has been computed.
690
813
  * @return data - The height of the embedded Liveboard or visualization
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.11.0-auth.9",
3
+ "version": "1.11.0",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -44,7 +44,8 @@
44
44
  "dependencies": {
45
45
  "algoliasearch": "^4.10.5",
46
46
  "classnames": "^2.3.1",
47
- "mixpanel-browser": "^2.41.0"
47
+ "eventemitter3": "^4.0.7",
48
+ "mixpanel-browser": "^2.45.0"
48
49
  },
49
50
  "devDependencies": {
50
51
  "@mdx-js/mdx": "^1.6.22",
package/src/auth.spec.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as authInstance from './auth';
2
2
  import * as authService from './utils/authService';
3
- import { AuthType } from './types';
3
+ import { AuthType, EmbedConfig } from './types';
4
4
  import { executeAfterWait } from './test/test-utils';
5
5
 
6
6
  const thoughtSpotHost = 'http://localhost:3000';
@@ -13,8 +13,15 @@ const embedConfig: any = {
13
13
  thoughtSpotHost,
14
14
  username,
15
15
  authEndpoint: 'auth',
16
+ authType: AuthType.AuthServer,
16
17
  getAuthToken: jest.fn(() => Promise.resolve(token)),
17
18
  }),
19
+ doTokenAuthWithCookieDetect: {
20
+ thoughtSpotHost,
21
+ username,
22
+ authEndpoint: 'auth',
23
+ detectCookieAccessSlow: true,
24
+ },
18
25
  doTokenAuthFailureWithoutAuthEndPoint: {
19
26
  thoughtSpotHost,
20
27
  username,
@@ -35,9 +42,15 @@ const embedConfig: any = {
35
42
  doSamlAuth: {
36
43
  thoughtSpotHost,
37
44
  },
45
+ doOidcAuth: {
46
+ thoughtSpotHost,
47
+ },
38
48
  SSOAuth: {
39
49
  authType: AuthType.SSO,
40
50
  },
51
+ OIDCAuth: {
52
+ authType: AuthType.OIDC,
53
+ },
41
54
  authServerFailure: {
42
55
  thoughtSpotHost,
43
56
  username,
@@ -168,6 +181,61 @@ describe('Unit test for auth', () => {
168
181
  });
169
182
  });
170
183
 
184
+ test('doTokenAuth: Should raise error when duplicate token is used', async () => {
185
+ jest.spyOn(authService, 'fetchSessionInfoService').mockResolvedValue({
186
+ status: 401,
187
+ });
188
+ jest.spyOn(window, 'alert').mockClear();
189
+ jest.spyOn(window, 'alert').mockReturnValue(undefined);
190
+ jest.spyOn(authService, 'fetchAuthService').mockReset();
191
+ jest.spyOn(authService, 'fetchAuthService').mockImplementation(() =>
192
+ Promise.resolve({
193
+ status: 200,
194
+ ok: true,
195
+ }),
196
+ );
197
+ await authInstance.doTokenAuth(
198
+ embedConfig.doTokenAuthSuccess('authToken3'),
199
+ );
200
+
201
+ try {
202
+ await authInstance.doTokenAuth(
203
+ embedConfig.doTokenAuthSuccess('authToken3'),
204
+ );
205
+ expect(false).toBe(true);
206
+ } catch (e) {
207
+ expect(e.message).toContain('Duplicate token');
208
+ }
209
+ await executeAfterWait(() => {
210
+ expect(authInstance.loggedInStatus).toBe(false);
211
+ expect(window.alert).toBeCalled();
212
+ expect(authService.fetchAuthService).toHaveBeenCalledTimes(1);
213
+ });
214
+ });
215
+
216
+ test('doTokenAuth: Should set loggedInStatus if detectThirdPartyCookieAccess is true and the second info call fails', async () => {
217
+ jest.spyOn(authService, 'fetchSessionInfoService')
218
+ .mockResolvedValue({
219
+ status: 401,
220
+ })
221
+ .mockClear();
222
+ jest.spyOn(
223
+ authService,
224
+ 'fetchAuthTokenService',
225
+ ).mockImplementation(() => ({ text: () => Promise.resolve('abc') }));
226
+ jest.spyOn(authService, 'fetchAuthService').mockImplementation(() =>
227
+ Promise.resolve({
228
+ status: 200,
229
+ ok: true,
230
+ }),
231
+ );
232
+ const isLoggedIn = await authInstance.doTokenAuth(
233
+ embedConfig.doTokenAuthWithCookieDetect,
234
+ );
235
+ expect(authService.fetchSessionInfoService).toHaveBeenCalledTimes(2);
236
+ expect(isLoggedIn).toBe(false);
237
+ });
238
+
171
239
  describe('doBasicAuth', () => {
172
240
  beforeEach(() => {
173
241
  global.fetch = window.fetch;
@@ -266,6 +334,7 @@ describe('Unit test for auth', () => {
266
334
  },
267
335
  });
268
336
  spyOn(authInstance, 'samlCompletionPromise');
337
+ global.window.open = jest.fn();
269
338
  jest.spyOn(
270
339
  authService,
271
340
  'fetchSessionInfoService',
@@ -276,11 +345,31 @@ describe('Unit test for auth', () => {
276
345
  ...embedConfig.doSamlAuth,
277
346
  noRedirect: true,
278
347
  }),
279
- ).toBe(false);
348
+ ).toBe(true);
280
349
  expect(authService.fetchSessionInfoService).toBeCalled();
281
350
  });
282
351
  });
283
352
 
353
+ describe('doOIDCAuth', () => {
354
+ afterEach(() => {
355
+ delete global.window;
356
+ global.window = Object.create(originalWindow);
357
+ global.window.open = jest.fn();
358
+ global.fetch = window.fetch;
359
+ });
360
+
361
+ it('when user is not loggedIn & isAtSSORedirectUrl is true', async () => {
362
+ jest.spyOn(
363
+ authService,
364
+ 'fetchSessionInfoService',
365
+ ).mockImplementation(() => Promise.reject());
366
+ await authInstance.doOIDCAuth(embedConfig.doOidcAuth);
367
+ expect(authService.fetchSessionInfoService).toBeCalled();
368
+ expect(window.location.hash).toBe('');
369
+ expect(authInstance.loggedInStatus).toBe(false);
370
+ });
371
+ });
372
+
284
373
  it('authenticate: when authType is SSO', async () => {
285
374
  jest.spyOn(authInstance, 'doSamlAuth');
286
375
  await authInstance.authenticate(embedConfig.SSOAuth);
@@ -288,6 +377,13 @@ describe('Unit test for auth', () => {
288
377
  expect(authInstance.doSamlAuth).toBeCalled();
289
378
  });
290
379
 
380
+ it('authenticate: when authType is OIDC', async () => {
381
+ jest.spyOn(authInstance, 'doOIDCAuth');
382
+ await authInstance.authenticate(embedConfig.OIDCAuth);
383
+ expect(window.location.hash).toBe('');
384
+ expect(authInstance.doOIDCAuth).toBeCalled();
385
+ });
386
+
291
387
  it('authenticate: when authType is AuthServer', async () => {
292
388
  spyOn(authInstance, 'doTokenAuth');
293
389
  await authInstance.authenticate(embedConfig.authServerFailure);
package/src/auth.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import { initMixpanel } from './mixpanel-service';
2
2
  import { AuthType, EmbedConfig, EmbedEvent } from './types';
3
- import { appendToUrlHash } from './utils';
3
+ import { getRedirectUrl } from './utils';
4
4
  // eslint-disable-next-line import/no-cycle
5
5
  import {
6
6
  fetchSessionInfoService,
7
7
  fetchAuthTokenService,
8
8
  fetchAuthService,
9
9
  fetchBasicAuthService,
10
+ fetchLogoutService,
10
11
  } from './utils/authService';
11
12
 
12
13
  // eslint-disable-next-line import/no-mutable-exports
@@ -29,8 +30,22 @@ export const EndPoints = {
29
30
  `/callosum/v1/oidc/login?targetURLPath=${targetUrl}`,
30
31
  TOKEN_LOGIN: '/callosum/v1/session/login/token',
31
32
  BASIC_LOGIN: '/callosum/v1/session/login',
33
+ LOGOUT: '/callosum/v1/session/logout',
32
34
  };
33
35
 
36
+ export enum AuthFailureType {
37
+ SDK = 'SDK',
38
+ NO_COOKIE_ACCESS = 'NO_COOKIE_ACCESS',
39
+ EXPIRY = 'EXPIRY',
40
+ OTHER = 'OTHER',
41
+ }
42
+
43
+ export enum AuthStatus {
44
+ FAILURE = 'FAILURE',
45
+ SUCCESS = 'SUCCESS',
46
+ LOGOUT = 'LOGOUT',
47
+ }
48
+
34
49
  /**
35
50
  * Check if we are logged into the ThoughtSpot cluster
36
51
  * @param thoughtSpotHost The ThoughtSpot cluster hostname or IP
@@ -110,8 +125,8 @@ export const doTokenAuth = async (
110
125
  'Either auth endpoint or getAuthToken function must be provided',
111
126
  );
112
127
  }
113
- const loggedIn = await isLoggedIn(thoughtSpotHost);
114
- if (!loggedIn) {
128
+ loggedInStatus = await isLoggedIn(thoughtSpotHost);
129
+ if (!loggedInStatus) {
115
130
  let authToken = null;
116
131
  if (getAuthToken) {
117
132
  authToken = await getAuthToken();
@@ -127,8 +142,11 @@ export const doTokenAuth = async (
127
142
  );
128
143
  // token login issues a 302 when successful
129
144
  loggedInStatus = resp.ok || resp.type === 'opaqueredirect';
130
- } else {
131
- loggedInStatus = true;
145
+ if (loggedInStatus && embedConfig.detectCookieAccessSlow) {
146
+ // When 3rd party cookie access is blocked, this will fail because cookies will
147
+ // not be sent with the call.
148
+ loggedInStatus = await isLoggedIn(thoughtSpotHost);
149
+ }
132
150
  }
133
151
  return loggedInStatus;
134
152
  };
@@ -153,6 +171,9 @@ export const doBasicAuth = async (
153
171
  password,
154
172
  );
155
173
  loggedInStatus = response.ok;
174
+ if (embedConfig.detectCookieAccessSlow) {
175
+ loggedInStatus = await isLoggedIn(thoughtSpotHost);
176
+ }
156
177
  } else {
157
178
  loggedInStatus = true;
158
179
  }
@@ -223,6 +244,7 @@ const doSSOAuth = async (
223
244
  const ssoURL = `${thoughtSpotHost}${ssoEndPoint}`;
224
245
  if (embedConfig.noRedirect) {
225
246
  await samlPopupFlow(ssoURL);
247
+ loggedInStatus = true;
226
248
  return;
227
249
  }
228
250
 
@@ -235,7 +257,11 @@ export const doSamlAuth = async (embedConfig: EmbedConfig) => {
235
257
  // again and the same JS will execute again.
236
258
  const ssoRedirectUrl = embedConfig.noRedirect
237
259
  ? `${thoughtSpotHost}/v2/#/embed/saml-complete`
238
- : appendToUrlHash(window.location.href, SSO_REDIRECTION_MARKER_GUID);
260
+ : getRedirectUrl(
261
+ window.location.href,
262
+ SSO_REDIRECTION_MARKER_GUID,
263
+ embedConfig.redirectPath,
264
+ );
239
265
 
240
266
  // bring back the page to the same URL
241
267
  const ssoEndPoint = `${EndPoints.SAML_LOGIN_TEMPLATE(
@@ -252,7 +278,11 @@ export const doOIDCAuth = async (embedConfig: EmbedConfig) => {
252
278
  // again and the same JS will execute again.
253
279
  const ssoRedirectUrl = embedConfig.noRedirect
254
280
  ? `${thoughtSpotHost}/v2/#/embed/saml-complete`
255
- : appendToUrlHash(window.location.href, SSO_REDIRECTION_MARKER_GUID);
281
+ : getRedirectUrl(
282
+ window.location.href,
283
+ SSO_REDIRECTION_MARKER_GUID,
284
+ embedConfig.redirectPath,
285
+ );
256
286
 
257
287
  // bring back the page to the same URL
258
288
  const ssoEndPoint = `${EndPoints.OIDC_LOGIN_TEMPLATE(
@@ -263,6 +293,13 @@ export const doOIDCAuth = async (embedConfig: EmbedConfig) => {
263
293
  return loggedInStatus;
264
294
  };
265
295
 
296
+ export const logout = async (embedConfig: EmbedConfig): Promise<boolean> => {
297
+ const { thoughtSpotHost } = embedConfig;
298
+ const response = await fetchLogoutService(thoughtSpotHost);
299
+ loggedInStatus = false;
300
+ return loggedInStatus;
301
+ };
302
+
266
303
  /**
267
304
  * Perform authentication on the ThoughtSpot cluster
268
305
  * @param embedConfig The embed configuration