@thoughtspot/visual-embed-sdk 1.29.0-alpha.7 → 1.29.0-alpha.SCAL-205893-1

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 (256) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/auth.d.ts +14 -17
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +45 -59
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/auth.spec.d.ts +12 -0
  7. package/cjs/src/auth.spec.d.ts.map +1 -1
  8. package/cjs/src/auth.spec.js +89 -67
  9. package/cjs/src/auth.spec.js.map +1 -1
  10. package/cjs/src/authToken.d.ts +1 -1
  11. package/cjs/src/authToken.d.ts.map +1 -1
  12. package/cjs/src/authToken.js +18 -5
  13. package/cjs/src/authToken.js.map +1 -1
  14. package/cjs/src/authToken.spec.d.ts +2 -0
  15. package/cjs/src/authToken.spec.d.ts.map +1 -0
  16. package/cjs/src/authToken.spec.js +29 -0
  17. package/cjs/src/authToken.spec.js.map +1 -0
  18. package/cjs/src/embed/app.spec.js +4 -2
  19. package/cjs/src/embed/app.spec.js.map +1 -1
  20. package/cjs/src/embed/base.d.ts.map +1 -1
  21. package/cjs/src/embed/base.js +2 -0
  22. package/cjs/src/embed/base.js.map +1 -1
  23. package/cjs/src/embed/base.spec.js +1 -0
  24. package/cjs/src/embed/base.spec.js.map +1 -1
  25. package/cjs/src/embed/embed.spec.js +3 -0
  26. package/cjs/src/embed/embed.spec.js.map +1 -1
  27. package/cjs/src/embed/events.spec.js +3 -0
  28. package/cjs/src/embed/events.spec.js.map +1 -1
  29. package/cjs/src/embed/liveboard.spec.js +2 -0
  30. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  31. package/cjs/src/embed/pinboard.spec.js +3 -0
  32. package/cjs/src/embed/pinboard.spec.js.map +1 -1
  33. package/cjs/src/embed/sage.spec.js +3 -0
  34. package/cjs/src/embed/sage.spec.js.map +1 -1
  35. package/cjs/src/embed/search.spec.js +1 -0
  36. package/cjs/src/embed/search.spec.js.map +1 -1
  37. package/cjs/src/embed/ts-embed-trigger.spec.js +3 -0
  38. package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -1
  39. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  40. package/cjs/src/embed/ts-embed.js +7 -0
  41. package/cjs/src/embed/ts-embed.js.map +1 -1
  42. package/cjs/src/embed/ts-embed.spec.js +7 -0
  43. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  44. package/cjs/src/index.d.ts +2 -1
  45. package/cjs/src/index.d.ts.map +1 -1
  46. package/cjs/src/index.js +2 -1
  47. package/cjs/src/index.js.map +1 -1
  48. package/cjs/src/mixpanel-service.d.ts +2 -1
  49. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  50. package/cjs/src/mixpanel-service.js +1 -0
  51. package/cjs/src/mixpanel-service.js.map +1 -1
  52. package/cjs/src/mixpanel-service.spec.js +7 -0
  53. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  54. package/cjs/src/react/index.d.ts +1 -1
  55. package/cjs/src/react/index.d.ts.map +1 -1
  56. package/cjs/src/react/index.js +2 -1
  57. package/cjs/src/react/index.js.map +1 -1
  58. package/cjs/src/react/index.spec.js +6 -0
  59. package/cjs/src/react/index.spec.js.map +1 -1
  60. package/cjs/src/types.d.ts +79 -47
  61. package/cjs/src/types.d.ts.map +1 -1
  62. package/cjs/src/types.js +61 -46
  63. package/cjs/src/types.js.map +1 -1
  64. package/cjs/src/utils/authService/authService.d.ts +1 -0
  65. package/cjs/src/utils/authService/authService.d.ts.map +1 -1
  66. package/cjs/src/utils/authService/authService.js +1 -0
  67. package/cjs/src/utils/authService/authService.js.map +1 -1
  68. package/cjs/src/utils/authService/authService.spec.js +18 -5
  69. package/cjs/src/utils/authService/authService.spec.js.map +1 -1
  70. package/cjs/src/utils/authService/tokenizedAuthService.d.ts +15 -2
  71. package/cjs/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
  72. package/cjs/src/utils/authService/tokenizedAuthService.js +39 -9
  73. package/cjs/src/utils/authService/tokenizedAuthService.js.map +1 -1
  74. package/cjs/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  75. package/cjs/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  76. package/cjs/src/utils/authService/tokenizedAuthService.spec.js +32 -0
  77. package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -0
  78. package/cjs/src/utils/graphql/answerService/answerService.d.ts +10 -0
  79. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  80. package/cjs/src/utils/graphql/answerService/answerService.js +10 -0
  81. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
  82. package/cjs/src/utils/processData.js +2 -2
  83. package/cjs/src/utils/processData.js.map +1 -1
  84. package/cjs/src/utils/processData.spec.js +3 -2
  85. package/cjs/src/utils/processData.spec.js.map +1 -1
  86. package/cjs/src/utils/sessionInfoService.d.ts +66 -0
  87. package/cjs/src/utils/sessionInfoService.d.ts.map +1 -0
  88. package/cjs/src/utils/sessionInfoService.js +92 -0
  89. package/cjs/src/utils/sessionInfoService.js.map +1 -0
  90. package/cjs/src/utils.d.ts +1 -1
  91. package/cjs/src/utils.d.ts.map +1 -1
  92. package/cjs/src/utils.js +4 -1
  93. package/cjs/src/utils.js.map +1 -1
  94. package/dist/src/auth.d.ts +14 -17
  95. package/dist/src/auth.d.ts.map +1 -1
  96. package/dist/src/auth.spec.d.ts +12 -0
  97. package/dist/src/auth.spec.d.ts.map +1 -1
  98. package/dist/src/authToken.d.ts +1 -1
  99. package/dist/src/authToken.d.ts.map +1 -1
  100. package/dist/src/authToken.spec.d.ts +2 -0
  101. package/dist/src/authToken.spec.d.ts.map +1 -0
  102. package/dist/src/embed/base.d.ts.map +1 -1
  103. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  104. package/dist/src/index.d.ts +2 -1
  105. package/dist/src/index.d.ts.map +1 -1
  106. package/dist/src/mixpanel-service.d.ts +2 -1
  107. package/dist/src/mixpanel-service.d.ts.map +1 -1
  108. package/dist/src/react/index.d.ts +1 -1
  109. package/dist/src/react/index.d.ts.map +1 -1
  110. package/dist/src/types.d.ts +79 -47
  111. package/dist/src/types.d.ts.map +1 -1
  112. package/dist/src/utils/authService/authService.d.ts +1 -0
  113. package/dist/src/utils/authService/authService.d.ts.map +1 -1
  114. package/dist/src/utils/authService/tokenizedAuthService.d.ts +15 -2
  115. package/dist/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
  116. package/dist/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  117. package/dist/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  118. package/dist/src/utils/graphql/answerService/answerService.d.ts +10 -0
  119. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  120. package/dist/src/utils/sessionInfoService.d.ts +66 -0
  121. package/dist/src/utils/sessionInfoService.d.ts.map +1 -0
  122. package/dist/src/utils.d.ts +1 -1
  123. package/dist/src/utils.d.ts.map +1 -1
  124. package/dist/tsembed-react.es.js +225 -105
  125. package/dist/tsembed-react.js +225 -104
  126. package/dist/tsembed.es.js +233 -116
  127. package/dist/tsembed.js +233 -116
  128. package/dist/visual-embed-sdk-react-full.d.ts +171 -66
  129. package/dist/visual-embed-sdk-react.d.ts +171 -66
  130. package/dist/visual-embed-sdk.d.ts +171 -66
  131. package/lib/package.json +1 -1
  132. package/lib/src/auth.d.ts +14 -17
  133. package/lib/src/auth.d.ts.map +1 -1
  134. package/lib/src/auth.js +44 -56
  135. package/lib/src/auth.js.map +1 -1
  136. package/lib/src/auth.spec.d.ts +12 -0
  137. package/lib/src/auth.spec.d.ts.map +1 -1
  138. package/lib/src/auth.spec.js +88 -66
  139. package/lib/src/auth.spec.js.map +1 -1
  140. package/lib/src/authToken.d.ts +1 -1
  141. package/lib/src/authToken.d.ts.map +1 -1
  142. package/lib/src/authToken.js +18 -5
  143. package/lib/src/authToken.js.map +1 -1
  144. package/lib/src/authToken.spec.d.ts +2 -0
  145. package/lib/src/authToken.spec.d.ts.map +1 -0
  146. package/lib/src/authToken.spec.js +26 -0
  147. package/lib/src/authToken.spec.js.map +1 -0
  148. package/lib/src/embed/app.spec.js +4 -2
  149. package/lib/src/embed/app.spec.js.map +1 -1
  150. package/lib/src/embed/base.d.ts.map +1 -1
  151. package/lib/src/embed/base.js +3 -1
  152. package/lib/src/embed/base.js.map +1 -1
  153. package/lib/src/embed/base.spec.js +1 -0
  154. package/lib/src/embed/base.spec.js.map +1 -1
  155. package/lib/src/embed/embed.spec.js +2 -0
  156. package/lib/src/embed/embed.spec.js.map +1 -1
  157. package/lib/src/embed/events.spec.js +2 -0
  158. package/lib/src/embed/events.spec.js.map +1 -1
  159. package/lib/src/embed/liveboard.spec.js +2 -0
  160. package/lib/src/embed/liveboard.spec.js.map +1 -1
  161. package/lib/src/embed/pinboard.spec.js +2 -0
  162. package/lib/src/embed/pinboard.spec.js.map +1 -1
  163. package/lib/src/embed/sage.spec.js +2 -0
  164. package/lib/src/embed/sage.spec.js.map +1 -1
  165. package/lib/src/embed/search.spec.js +1 -0
  166. package/lib/src/embed/search.spec.js.map +1 -1
  167. package/lib/src/embed/ts-embed-trigger.spec.js +2 -0
  168. package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -1
  169. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  170. package/lib/src/embed/ts-embed.js +7 -0
  171. package/lib/src/embed/ts-embed.js.map +1 -1
  172. package/lib/src/embed/ts-embed.spec.js +7 -0
  173. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  174. package/lib/src/index.d.ts +2 -1
  175. package/lib/src/index.d.ts.map +1 -1
  176. package/lib/src/index.js +2 -1
  177. package/lib/src/index.js.map +1 -1
  178. package/lib/src/mixpanel-service.d.ts +2 -1
  179. package/lib/src/mixpanel-service.d.ts.map +1 -1
  180. package/lib/src/mixpanel-service.js +1 -0
  181. package/lib/src/mixpanel-service.js.map +1 -1
  182. package/lib/src/mixpanel-service.spec.js +7 -0
  183. package/lib/src/mixpanel-service.spec.js.map +1 -1
  184. package/lib/src/react/index.d.ts +1 -1
  185. package/lib/src/react/index.d.ts.map +1 -1
  186. package/lib/src/react/index.js +1 -1
  187. package/lib/src/react/index.js.map +1 -1
  188. package/lib/src/react/index.spec.js +6 -0
  189. package/lib/src/react/index.spec.js.map +1 -1
  190. package/lib/src/types.d.ts +79 -47
  191. package/lib/src/types.d.ts.map +1 -1
  192. package/lib/src/types.js +61 -46
  193. package/lib/src/types.js.map +1 -1
  194. package/lib/src/utils/authService/authService.d.ts +1 -0
  195. package/lib/src/utils/authService/authService.d.ts.map +1 -1
  196. package/lib/src/utils/authService/authService.js +1 -0
  197. package/lib/src/utils/authService/authService.js.map +1 -1
  198. package/lib/src/utils/authService/authService.spec.js +18 -5
  199. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  200. package/lib/src/utils/authService/tokenizedAuthService.d.ts +15 -2
  201. package/lib/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
  202. package/lib/src/utils/authService/tokenizedAuthService.js +37 -8
  203. package/lib/src/utils/authService/tokenizedAuthService.js.map +1 -1
  204. package/lib/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  205. package/lib/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  206. package/lib/src/utils/authService/tokenizedAuthService.spec.js +29 -0
  207. package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -0
  208. package/lib/src/utils/graphql/answerService/answerService.d.ts +10 -0
  209. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  210. package/lib/src/utils/graphql/answerService/answerService.js +10 -0
  211. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
  212. package/lib/src/utils/processData.js +3 -3
  213. package/lib/src/utils/processData.js.map +1 -1
  214. package/lib/src/utils/processData.spec.js +3 -2
  215. package/lib/src/utils/processData.spec.js.map +1 -1
  216. package/lib/src/utils/sessionInfoService.d.ts +66 -0
  217. package/lib/src/utils/sessionInfoService.d.ts.map +1 -0
  218. package/lib/src/utils/sessionInfoService.js +85 -0
  219. package/lib/src/utils/sessionInfoService.js.map +1 -0
  220. package/lib/src/utils.d.ts +1 -1
  221. package/lib/src/utils.d.ts.map +1 -1
  222. package/lib/src/utils.js +4 -1
  223. package/lib/src/utils.js.map +1 -1
  224. package/lib/src/visual-embed-sdk.d.ts +176 -67
  225. package/package.json +1 -1
  226. package/src/auth.spec.ts +92 -72
  227. package/src/auth.ts +46 -68
  228. package/src/authToken.spec.ts +31 -0
  229. package/src/authToken.ts +17 -5
  230. package/src/embed/app.spec.ts +4 -2
  231. package/src/embed/base.spec.ts +1 -0
  232. package/src/embed/base.ts +3 -0
  233. package/src/embed/embed.spec.ts +2 -0
  234. package/src/embed/events.spec.ts +2 -0
  235. package/src/embed/liveboard.spec.ts +2 -0
  236. package/src/embed/pinboard.spec.ts +2 -0
  237. package/src/embed/sage.spec.ts +3 -0
  238. package/src/embed/search.spec.ts +1 -0
  239. package/src/embed/ts-embed-trigger.spec.ts +3 -0
  240. package/src/embed/ts-embed.spec.ts +8 -0
  241. package/src/embed/ts-embed.ts +7 -0
  242. package/src/index.ts +2 -1
  243. package/src/mixpanel-service.spec.ts +12 -3
  244. package/src/mixpanel-service.ts +3 -1
  245. package/src/react/index.spec.tsx +7 -0
  246. package/src/react/index.tsx +1 -0
  247. package/src/types.ts +80 -47
  248. package/src/utils/authService/authService.spec.ts +18 -5
  249. package/src/utils/authService/authService.ts +1 -0
  250. package/src/utils/authService/tokenizedAuthService.spec.ts +36 -0
  251. package/src/utils/authService/tokenizedAuthService.ts +38 -8
  252. package/src/utils/graphql/answerService/answerService.ts +10 -0
  253. package/src/utils/processData.spec.ts +3 -2
  254. package/src/utils/processData.ts +3 -3
  255. package/src/utils/sessionInfoService.ts +101 -0
  256. package/src/utils.ts +7 -2
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mockSessionInfo = exports.embedConfig = void 0;
3
+ exports.mockSessionInfoApiResponse = exports.mockSessionInfo = exports.embedConfig = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const authInstance = tslib_1.__importStar(require("./auth"));
6
- const authService = tslib_1.__importStar(require("./utils/authService/authService"));
7
- const tokenAuthService = tslib_1.__importStar(require("./utils/authService/tokenizedAuthService"));
8
- const checkReleaseVersionInBetaInstance = tslib_1.__importStar(require("./utils"));
9
- const mixPanelService = tslib_1.__importStar(require("./mixpanel-service"));
6
+ const authTokenService = tslib_1.__importStar(require("./authToken"));
10
7
  const EmbedConfig = tslib_1.__importStar(require("./embed/embedConfig"));
11
- const types_1 = require("./types");
8
+ const mixPanelService = tslib_1.__importStar(require("./mixpanel-service"));
12
9
  const test_utils_1 = require("./test/test-utils");
13
- const authToken_1 = require("./authToken");
10
+ const types_1 = require("./types");
11
+ const checkReleaseVersionInBetaInstance = tslib_1.__importStar(require("./utils"));
12
+ const authService = tslib_1.__importStar(require("./utils/authService/authService"));
13
+ const tokenAuthService = tslib_1.__importStar(require("./utils/authService/tokenizedAuthService"));
14
+ const logger_1 = require("./utils/logger");
15
+ const SessionService = tslib_1.__importStar(require("./utils/sessionInfoService"));
14
16
  const thoughtSpotHost = 'http://localhost:3000';
15
17
  const username = 'tsuser';
16
18
  const password = '12345678';
@@ -20,7 +22,7 @@ exports.embedConfig = {
20
22
  thoughtSpotHost,
21
23
  username,
22
24
  authEndpoint: 'auth',
23
- authType: types_1.AuthType.AuthServer,
25
+ authType: types_1.AuthType.TrustedAuthToken,
24
26
  getAuthToken: jest.fn(() => Promise.resolve(token)),
25
27
  }),
26
28
  doTokenAuthWithCookieDetect: {
@@ -112,29 +114,44 @@ exports.mockSessionInfo = {
112
114
  genNo: 5,
113
115
  },
114
116
  };
117
+ exports.mockSessionInfoApiResponse = {
118
+ userGUID: '1234',
119
+ releaseVersion: 'test',
120
+ configInfo: {
121
+ isPublicUser: false,
122
+ mixpanelConfig: {
123
+ production: true,
124
+ devSdkKey: 'devKey',
125
+ prodSdkKey: 'prodKey',
126
+ },
127
+ },
128
+ };
115
129
  describe('Unit test for auth', () => {
116
130
  beforeEach(() => {
131
+ jest.resetAllMocks();
117
132
  global.fetch = window.fetch;
118
133
  });
119
134
  afterEach(() => {
120
- (0, authToken_1.resetCachedAuthToken)();
135
+ authTokenService.resetCachedAuthToken();
136
+ SessionService.resetCachedSessionInfo();
121
137
  });
122
138
  test('endpoints, SAML_LOGIN_TEMPLATE', () => {
123
139
  const ssoTemplateUrl = authService.EndPoints.SAML_LOGIN_TEMPLATE(thoughtSpotHost);
124
140
  expect(ssoTemplateUrl).toBe(`/callosum/v1/saml/login?targetURLPath=${thoughtSpotHost}`);
125
141
  });
126
- test('when session info giving response', async () => {
127
- jest.spyOn(mixPanelService, 'initMixpanel').mockImplementation(() => Promise.resolve());
128
- authInstance.initSession(exports.mockSessionInfo);
129
- const sessionInfo = await authInstance.getSessionInfo();
130
- expect(sessionInfo).toStrictEqual(exports.mockSessionInfo);
142
+ test('when session info giving response, it is cached', async () => {
143
+ jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockResolvedValueOnce(exports.mockSessionInfoApiResponse);
144
+ const sessionInfo = await SessionService.getSessionInfo();
145
+ expect(sessionInfo.mixpanelToken).toEqual('prodKey');
146
+ expect(sessionInfo.isPublicUser).toEqual(false);
147
+ await SessionService.getSessionInfo();
148
+ expect(tokenAuthService.fetchSessionInfoService).toHaveBeenCalledTimes(1);
131
149
  });
132
150
  test('Disable mixpanel when disableSDKTracking flag is set', () => {
133
- jest.clearAllMocks();
134
- jest.resetAllMocks();
135
151
  jest.spyOn(mixPanelService, 'initMixpanel');
152
+ jest.spyOn(SessionService, 'getSessionInfo').mockReturnValue(exports.mockSessionInfo);
136
153
  jest.spyOn(EmbedConfig, 'getEmbedConfig').mockReturnValue({ disableSDKTracking: true });
137
- authInstance.initSession(exports.mockSessionInfo);
154
+ authInstance.postLoginService();
138
155
  expect(mixPanelService.initMixpanel).not.toBeCalled();
139
156
  });
140
157
  test('doCookielessTokenAuth: when authEndpoint and getAuthToken are not there, it throw error', async () => {
@@ -154,45 +171,42 @@ describe('Unit test for auth', () => {
154
171
  }
155
172
  });
156
173
  test('doTokenAuth: when user is loggedIn', async () => {
157
- jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(async () => ({
158
- json: () => exports.mockSessionInfo,
159
- status: 200,
160
- }));
161
- jest.spyOn(authInstance, 'getSessionDetails').mockReturnValue(exports.mockSessionInfo);
162
- jest.spyOn(authInstance, 'initSession').mockReturnValue(null);
174
+ const getAuthenticationTokenMock = jest.spyOn(authTokenService, 'getAuthenticationToken');
175
+ jest.spyOn(tokenAuthService, 'isActiveService').mockImplementation(async () => true);
163
176
  await authInstance.doTokenAuth(exports.embedConfig.doTokenAuthSuccess('authToken'));
164
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
177
+ expect(authTokenService.getAuthenticationToken).not.toBeCalled();
165
178
  expect(authInstance.loggedInStatus).toBe(true);
179
+ getAuthenticationTokenMock.mockRestore();
166
180
  });
167
181
  test('doTokenAuth: when user is not loggedIn & getAuthToken have response', async () => {
168
- jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(() => false);
169
- jest.spyOn(authService, 'fetchAuthTokenService').mockImplementation(() => ({
170
- text: () => Promise.resolve('abc'),
171
- }));
182
+ jest.spyOn(tokenAuthService, 'isActiveService').mockImplementation(async () => false);
172
183
  jest.spyOn(authService, 'fetchAuthService').mockImplementation(() => Promise.resolve({
173
184
  status: 200,
185
+ ok: true,
174
186
  }));
175
187
  jest.spyOn(authService, 'verifyTokenService').mockResolvedValueOnce(true);
176
188
  await authInstance.doTokenAuth(exports.embedConfig.doTokenAuthSuccess('authToken2'));
177
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
178
189
  expect(authService.fetchAuthService).toBeCalledWith(thoughtSpotHost, username, 'authToken2');
179
190
  });
180
191
  test('doTokenAuth: when user is not loggedIn & getAuthToken not present, isLoggedIn should called', async () => {
181
- jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(() => false);
182
- jest.spyOn(authService, 'fetchAuthTokenService').mockImplementation(() => Promise.resolve({ text: () => Promise.resolve('abc') }));
192
+ jest.spyOn(tokenAuthService, 'isActiveService').mockImplementation(async () => false);
193
+ jest.spyOn(authService, 'fetchAuthTokenService').mockImplementation(() => ({
194
+ text: () => Promise.resolve('abc'),
195
+ }));
183
196
  jest.spyOn(authService, 'fetchAuthService').mockImplementation(() => Promise.resolve({
184
197
  status: 200,
185
198
  ok: true,
186
199
  }));
187
200
  jest.spyOn(authService, 'verifyTokenService').mockResolvedValueOnce(true);
188
201
  await authInstance.doTokenAuth(exports.embedConfig.doTokenAuthFailureWithoutGetAuthToken);
202
+ expect(authService.fetchAuthTokenService).toBeCalledWith('auth');
189
203
  await (0, test_utils_1.executeAfterWait)(() => {
190
204
  expect(authInstance.loggedInStatus).toBe(true);
191
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
192
- expect(authService.fetchAuthService).toBeCalledWith(thoughtSpotHost, username, 'authToken2');
205
+ expect(authService.fetchAuthService).toBeCalledWith(thoughtSpotHost, username, 'abc');
193
206
  });
194
207
  });
195
208
  test('doTokenAuth: Should raise error when duplicate token is used', async () => {
209
+ jest.spyOn(tokenAuthService, 'isActiveService').mockImplementation(async () => false);
196
210
  jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockResolvedValue({
197
211
  status: 401,
198
212
  });
@@ -233,8 +247,10 @@ describe('Unit test for auth', () => {
233
247
  ok: true,
234
248
  }));
235
249
  jest.spyOn(authService, 'verifyTokenService').mockResolvedValueOnce(true);
250
+ jest.spyOn(tokenAuthService, 'isActiveService').mockResolvedValueOnce(false);
251
+ jest.spyOn(tokenAuthService, 'isActiveService').mockResolvedValueOnce(false);
236
252
  const isLoggedIn = await authInstance.doTokenAuth(exports.embedConfig.doTokenAuthWithCookieDetect);
237
- expect(tokenAuthService.fetchSessionInfoService).toHaveBeenCalledTimes(2);
253
+ expect(tokenAuthService.isActiveService).toHaveBeenCalledTimes(2);
238
254
  expect(isLoggedIn).toBe(false);
239
255
  });
240
256
  test('doTokenAuth: when user is not loggedIn & fetchAuthPostService failed than fetchAuthService should call', async () => {
@@ -254,7 +270,6 @@ describe('Unit test for auth', () => {
254
270
  }));
255
271
  jest.spyOn(authService, 'verifyTokenService').mockResolvedValueOnce(true);
256
272
  expect(await authInstance.doTokenAuth(exports.embedConfig.doTokenAuthSuccess('authToken2'))).toBe(true);
257
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
258
273
  expect(authService.fetchAuthPostService).toBeCalledWith(thoughtSpotHost, username, 'authToken2');
259
274
  expect(authService.fetchAuthService).toBeCalledWith(thoughtSpotHost, username, 'authToken2');
260
275
  });
@@ -263,18 +278,9 @@ describe('Unit test for auth', () => {
263
278
  global.fetch = window.fetch;
264
279
  });
265
280
  it('when user is loggedIn', async () => {
266
- spyOn(checkReleaseVersionInBetaInstance, 'checkReleaseVersionInBeta');
267
- jest.spyOn(authInstance, 'getSessionDetails').mockReturnValue(exports.mockSessionInfo);
268
- jest.spyOn(authInstance, 'initSession').mockReturnValue(null);
269
- jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(async () => ({
270
- json: () => exports.mockSessionInfo,
271
- status: 200,
272
- }));
281
+ jest.spyOn(tokenAuthService, 'isActiveService').mockResolvedValueOnce(true);
273
282
  await authInstance.doBasicAuth(exports.embedConfig.doBasicAuth);
274
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
275
283
  expect(authInstance.loggedInStatus).toBe(true);
276
- expect(authInstance.getSessionDetails).toBeCalled();
277
- expect(authInstance.initSession).toBeCalled();
278
284
  });
279
285
  it('when user is not loggedIn', async () => {
280
286
  jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(() => Promise.reject());
@@ -283,7 +289,7 @@ describe('Unit test for auth', () => {
283
289
  ok: true,
284
290
  }));
285
291
  await authInstance.doBasicAuth(exports.embedConfig.doBasicAuth);
286
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
292
+ // expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
287
293
  expect(authService.fetchBasicAuthService).toBeCalled();
288
294
  expect(authInstance.loggedInStatus).toBe(true);
289
295
  });
@@ -307,17 +313,14 @@ describe('Unit test for auth', () => {
307
313
  json: () => exports.mockSessionInfo,
308
314
  status: 200,
309
315
  }));
310
- jest.spyOn(authInstance, 'getSessionDetails').mockReturnValue(exports.mockSessionInfo);
311
- jest.spyOn(authInstance, 'initSession').mockReturnValue(null);
316
+ jest.spyOn(tokenAuthService, 'isActiveService').mockReturnValue(true);
312
317
  await authInstance.doSamlAuth(exports.embedConfig.doSamlAuth);
313
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
314
318
  expect(window.location.hash).toBe('');
315
319
  expect(authInstance.loggedInStatus).toBe(true);
316
320
  });
317
321
  it('when user is not loggedIn & isAtSSORedirectUrl is true', async () => {
318
322
  jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(() => Promise.reject());
319
323
  await authInstance.doSamlAuth(exports.embedConfig.doSamlAuth);
320
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
321
324
  expect(window.location.hash).toBe('');
322
325
  expect(authInstance.loggedInStatus).toBe(false);
323
326
  });
@@ -330,7 +333,6 @@ describe('Unit test for auth', () => {
330
333
  });
331
334
  jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(() => Promise.reject());
332
335
  await authInstance.doSamlAuth(exports.embedConfig.doSamlAuth);
333
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
334
336
  expect(global.window.location.href).toBe(samalLoginUrl);
335
337
  });
336
338
  it('when user is not loggedIn, in config noRedirect is true and isAtSSORedirectUrl is false', async () => {
@@ -342,14 +344,9 @@ describe('Unit test for auth', () => {
342
344
  });
343
345
  spyOn(authInstance, 'samlCompletionPromise');
344
346
  global.window.open = jest.fn();
345
- jest.spyOn(tokenAuthService, 'fetchSessionInfoService')
346
- .mockImplementationOnce(() => Promise.reject())
347
- .mockImplementationOnce(async () => ({
348
- json: () => exports.mockSessionInfo,
349
- status: 200,
350
- }));
351
- jest.spyOn(authInstance, 'getSessionDetails').mockReturnValue(exports.mockSessionInfo);
352
- jest.spyOn(authInstance, 'initSession').mockReturnValue(null);
347
+ jest.spyOn(tokenAuthService, 'isActiveService')
348
+ .mockReturnValueOnce(false)
349
+ .mockReturnValueOnce(true);
353
350
  expect(await authInstance.samlCompletionPromise).not.toBe(null);
354
351
  expect(await authInstance.doSamlAuth({
355
352
  ...exports.embedConfig.doSamlAuthNoRedirect,
@@ -357,14 +354,12 @@ describe('Unit test for auth', () => {
357
354
  document.getElementById('ts-auth-btn').click();
358
355
  window.postMessage({ type: types_1.EmbedEvent.SAMLComplete }, '*');
359
356
  await authInstance.samlCompletionPromise;
360
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
361
- expect(authInstance.getSessionDetails).toBeCalled();
362
- expect(authInstance.initSession).toBeCalled();
357
+ expect(authInstance.loggedInStatus).toBe(true);
363
358
  });
364
359
  });
365
360
  describe('doOIDCAuth', () => {
366
361
  afterEach(() => {
367
- (0, authToken_1.resetCachedAuthToken)();
362
+ authTokenService.resetCachedAuthToken();
368
363
  delete global.window;
369
364
  global.window = Object.create(originalWindow);
370
365
  global.window.open = jest.fn();
@@ -373,7 +368,6 @@ describe('Unit test for auth', () => {
373
368
  it('when user is not loggedIn & isAtSSORedirectUrl is true', async () => {
374
369
  jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockImplementation(() => Promise.reject());
375
370
  await authInstance.doOIDCAuth(exports.embedConfig.doOidcAuth);
376
- expect(tokenAuthService.fetchSessionInfoService).toBeCalled();
377
371
  expect(window.location.hash).toBe('');
378
372
  expect(authInstance.loggedInStatus).toBe(false);
379
373
  });
@@ -410,6 +404,7 @@ describe('Unit test for auth', () => {
410
404
  });
411
405
  it('authenticate: when authType is Basic', async () => {
412
406
  jest.spyOn(authInstance, 'doBasicAuth');
407
+ jest.spyOn(authService, 'fetchBasicAuthService').mockImplementation(() => Promise.resolve({ status: 200, ok: true }));
413
408
  await authInstance.authenticate(exports.embedConfig.basicAuthSuccess);
414
409
  expect(authInstance.doBasicAuth).toBeCalled();
415
410
  expect(authInstance.loggedInStatus).toBe(true);
@@ -421,6 +416,7 @@ describe('Unit test for auth', () => {
421
416
  expect(authInstance.isAuthenticated()).toBe(authInstance.loggedInStatus);
422
417
  });
423
418
  it('doCookielessTokenAuth should resolve to true if valid token is passed', async () => {
419
+ jest.clearAllMocks();
424
420
  jest.spyOn(authService, 'verifyTokenService').mockResolvedValueOnce(true);
425
421
  const isLoggedIn = await authInstance.doCookielessTokenAuth(exports.embedConfig.doCookielessAuth('testToken'));
426
422
  expect(isLoggedIn).toBe(true);
@@ -435,10 +431,10 @@ describe('Unit test for auth', () => {
435
431
  authInstance.setAuthEE(testObject);
436
432
  expect(authInstance.getAuthEE()).toBe(testObject);
437
433
  });
438
- it('getSessionDetails returns the correct details given sessionInfo', () => {
434
+ it('getSessionDetails returns the correct details given sessionInfo', async () => {
439
435
  jest.clearAllMocks();
440
436
  jest.restoreAllMocks();
441
- const details = authInstance.getSessionDetails({
437
+ jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockReturnValue({
442
438
  userGUID: '1234',
443
439
  releaseVersion: '1',
444
440
  configInfo: {
@@ -449,10 +445,11 @@ describe('Unit test for auth', () => {
449
445
  },
450
446
  },
451
447
  });
448
+ const details = await SessionService.getSessionInfo();
452
449
  expect(details).toEqual(expect.objectContaining({
453
450
  mixpanelToken: 'devKey',
454
451
  }));
455
- const details2 = authInstance.getSessionDetails({
452
+ jest.spyOn(tokenAuthService, 'fetchSessionInfoService').mockReturnValue({
456
453
  configInfo: {
457
454
  mixpanelConfig: {
458
455
  devSdkKey: 'devKey',
@@ -461,9 +458,34 @@ describe('Unit test for auth', () => {
461
458
  },
462
459
  },
463
460
  });
461
+ SessionService.resetCachedSessionInfo();
462
+ const details2 = await SessionService.getSessionInfo();
464
463
  expect(details2).toEqual(expect.objectContaining({
465
464
  mixpanelToken: 'prodKey',
466
465
  }));
467
466
  });
467
+ test('notifyAuthSuccess if getSessionInfo returns data', async () => {
468
+ const dummyInfo = { test: 'dummy' };
469
+ jest.spyOn(SessionService, 'getSessionInfo').mockResolvedValueOnce(dummyInfo);
470
+ jest.spyOn(logger_1.logger, 'error').mockResolvedValueOnce(true);
471
+ const emitSpy = jest.fn();
472
+ authInstance.setAuthEE({ emit: emitSpy });
473
+ await authInstance.notifyAuthSuccess();
474
+ expect(logger_1.logger.error).not.toBeCalled();
475
+ expect(emitSpy).toBeCalledWith(authInstance.AuthStatus.SUCCESS, dummyInfo);
476
+ authInstance.setAuthEE(null);
477
+ });
478
+ test('notifyAuthSuccess if getSessionInfo fails', async () => {
479
+ jest.spyOn(SessionService, 'getSessionInfo').mockImplementation(() => {
480
+ throw new Error('error');
481
+ });
482
+ jest.spyOn(logger_1.logger, 'error');
483
+ const emitSpy = jest.fn();
484
+ authInstance.setAuthEE({ emit: emitSpy });
485
+ await authInstance.notifyAuthSuccess();
486
+ expect(logger_1.logger.error).toBeCalled();
487
+ expect(emitSpy).not.toBeCalled();
488
+ authInstance.setAuthEE(null);
489
+ });
468
490
  });
469
491
  //# sourceMappingURL=auth.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.spec.js","sourceRoot":"","sources":["../../src/auth.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.spec.js","sourceRoot":"","sources":["../../src/auth.spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { EmbedConfig } from './types';
2
- export declare const getAuthenticationToken: (embedConfig: EmbedConfig) => Promise<string>;
2
+ export declare function getAuthenticationToken(embedConfig: EmbedConfig): Promise<string>;
3
3
  /**
4
4
  * Resets the auth token and a new token will be fetched on the next request.
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAWtC,eAAO,MAAM,sBAAsB,gBAAuB,WAAW,KAAG,QAAQ,MAAM,CA2BrF,CAAC;AAyBF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAAO,IAEvC,CAAC"}
1
+ {"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAYtC,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCtF;AA6BD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAAO,IAEvC,CAAC"}
@@ -2,13 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resetCachedAuthToken = exports.getAuthenticationToken = void 0;
4
4
  const authService_1 = require("./utils/authService/authService");
5
+ const logger_1 = require("./utils/logger");
5
6
  const DUPLICATE_TOKEN_ERR = 'Duplicate token, please issue a new token every time getAuthToken callback is called.'
6
7
  + 'See https://developers.thoughtspot.com/docs/?pageid=embed-auth#trusted-auth-embed for more details.';
7
8
  const INVALID_TOKEN_ERR = 'Invalid token received form token callback or authToken endpoint.';
8
9
  let cachedAuthToken = null;
9
10
  // This method can be used to get the authToken using the embedConfig
10
- const getAuthenticationToken = async (embedConfig) => {
11
- if (cachedAuthToken) {
11
+ async function getAuthenticationToken(embedConfig) {
12
+ // Since we don't have token validation enabled , we cannot tell if the
13
+ // cached token is valid or not. So we will always fetch a new token.
14
+ if (cachedAuthToken && !embedConfig.disableTokenVerification) {
12
15
  let isCachedTokenStillValid;
13
16
  try {
14
17
  isCachedTokenStillValid = await validateAuthToken(embedConfig, cachedAuthToken, true);
@@ -28,13 +31,23 @@ const getAuthenticationToken = async (embedConfig) => {
28
31
  const response = await (0, authService_1.fetchAuthTokenService)(authEndpoint);
29
32
  authToken = await response.text();
30
33
  }
31
- // this will throw error if the token is not valid
32
- await validateAuthToken(embedConfig, authToken);
34
+ try {
35
+ // this will throw error if the token is not valid
36
+ await validateAuthToken(embedConfig, authToken);
37
+ }
38
+ catch (e) {
39
+ logger_1.logger.error(`Received invalid token from getAuthToken callback or authToken endpoint. Error : ${e.message}`);
40
+ throw e;
41
+ }
33
42
  cachedAuthToken = authToken;
34
43
  return authToken;
35
- };
44
+ }
36
45
  exports.getAuthenticationToken = getAuthenticationToken;
37
46
  const validateAuthToken = async (embedConfig, authToken, suppressAlert) => {
47
+ if (embedConfig.disableTokenVerification) {
48
+ logger_1.logger.info('Token verification is disabled. Assuming token is valid.');
49
+ return true;
50
+ }
38
51
  try {
39
52
  const isTokenValid = await (0, authService_1.verifyTokenService)(embedConfig.thoughtSpotHost, authToken);
40
53
  if (isTokenValid)
@@ -1 +1 @@
1
- {"version":3,"file":"authToken.js","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":";;;AACA,iEAA4F;AAE5F,MAAM,mBAAmB,GAAG,uFAAuF;MAC7G,qGAAqG,CAAC;AAE5G,MAAM,iBAAiB,GAAG,mEAAmE,CAAC;AAE9F,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C,qEAAqE;AAC9D,MAAM,sBAAsB,GAAG,KAAK,EAAE,WAAwB,EAAmB,EAAE;IACtF,IAAI,eAAe,EAAE;QACjB,IAAI,uBAAuB,CAAC;QAC5B,IAAI;YACA,uBAAuB,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;SACzF;QAAC,MAAM;YACJ,uBAAuB,GAAG,KAAK,CAAC;SACnC;QAED,IAAI,uBAAuB;YAAE,OAAO,eAAe,CAAC;KACvD;IAED,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;IAEnD,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,YAAY,EAAE;QACd,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;KACpC;SAAM;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,mCAAqB,EAAC,YAAY,CAAC,CAAC;QAC3D,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;KACrC;IAED,kDAAkD;IAClD,MAAM,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEhD,eAAe,GAAG,SAAS,CAAC;IAC5B,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AA3BW,QAAA,sBAAsB,0BA2BjC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAC3B,WAAwB,EACxB,SAAiB,EACjB,aAAuB,EACP,EAAE;IAClB,IAAI;QACA,MAAM,YAAY,GAAG,MAAM,IAAA,gCAAkB,EAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,YAAY;YAAE,OAAO,IAAI,CAAC;KACjC;IAAC,MAAM;QACJ,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,eAAe,IAAI,eAAe,KAAK,SAAS,EAAE;QAClD,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,CAAC,aAAa,EAAE;YACpD,oCAAoC;YACpC,KAAK,CAAC,mBAAmB,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;KACxC;SAAM;QACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACtC;AACL,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACI,MAAM,oBAAoB,GAAG,GAAS,EAAE;IAC3C,eAAe,GAAG,IAAI,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B"}
1
+ {"version":3,"file":"authToken.js","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":";;;AACA,iEAA4F;AAC5F,2CAAwC;AAExC,MAAM,mBAAmB,GAAG,uFAAuF;MAC7G,qGAAqG,CAAC;AAE5G,MAAM,iBAAiB,GAAG,mEAAmE,CAAC;AAE9F,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C,qEAAqE;AAC9D,KAAK,UAAU,sBAAsB,CAAC,WAAwB;IACjE,uEAAuE;IACvE,qEAAqE;IACrE,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE;QAC1D,IAAI,uBAAuB,CAAC;QAC5B,IAAI;YACA,uBAAuB,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;SACzF;QAAC,MAAM;YACJ,uBAAuB,GAAG,KAAK,CAAC;SACnC;QAED,IAAI,uBAAuB;YAAE,OAAO,eAAe,CAAC;KACvD;IAED,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;IAEnD,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,YAAY,EAAE;QACd,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;KACpC;SAAM;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,mCAAqB,EAAC,YAAY,CAAC,CAAC;QAC3D,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;KACrC;IAED,IAAI;QACA,kDAAkD;QAClD,MAAM,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACR,eAAM,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9G,MAAM,CAAC,CAAC;KACX;IAED,eAAe,GAAG,SAAS,CAAC;IAC5B,OAAO,SAAS,CAAC;AACrB,CAAC;AAlCD,wDAkCC;AAED,MAAM,iBAAiB,GAAG,KAAK,EAC3B,WAAwB,EACxB,SAAiB,EACjB,aAAuB,EACP,EAAE;IAClB,IAAI,WAAW,CAAC,wBAAwB,EAAE;QACtC,eAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;KACf;IACD,IAAI;QACA,MAAM,YAAY,GAAG,MAAM,IAAA,gCAAkB,EAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,YAAY;YAAE,OAAO,IAAI,CAAC;KACjC;IAAC,MAAM;QACJ,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,eAAe,IAAI,eAAe,KAAK,SAAS,EAAE;QAClD,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,CAAC,aAAa,EAAE;YACpD,oCAAoC;YACpC,KAAK,CAAC,mBAAmB,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;KACxC;SAAM;QACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACtC;AACL,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACI,MAAM,oBAAoB,GAAG,GAAS,EAAE;IAC3C,eAAe,GAAG,IAAI,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=authToken.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authToken.spec.d.ts","sourceRoot":"","sources":["../../src/authToken.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const authToken_1 = require("./authToken");
5
+ const authServiceInstance = tslib_1.__importStar(require("./utils/authService/authService"));
6
+ describe('AuthToken Unit tests', () => {
7
+ test('getAuthenticationToken: When verification is disabled', async () => {
8
+ jest.spyOn(authServiceInstance, 'verifyTokenService');
9
+ const token = await (0, authToken_1.getAuthenticationToken)({
10
+ getAuthToken: async () => 'abc3',
11
+ disableTokenVerification: true,
12
+ });
13
+ expect(token).toBe('abc3');
14
+ expect(authServiceInstance.verifyTokenService).not.toBeCalled();
15
+ });
16
+ test.only('getAuthenticationToken: When verification is enabled', async () => {
17
+ (0, authToken_1.resetCachedAuthToken)();
18
+ jest.clearAllMocks();
19
+ jest.spyOn(authServiceInstance, 'verifyTokenService').mockImplementation(() => true);
20
+ const token = await (0, authToken_1.getAuthenticationToken)({
21
+ thoughtSpotHost: 'test',
22
+ getAuthToken: async () => 'abc2',
23
+ disableTokenVerification: false,
24
+ });
25
+ expect(token).toBe('abc2');
26
+ expect(authServiceInstance.verifyTokenService).toBeCalledWith('test', 'abc2');
27
+ });
28
+ });
29
+ //# sourceMappingURL=authToken.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authToken.spec.js","sourceRoot":"","sources":["../../src/authToken.spec.ts"],"names":[],"mappings":";;;AAAA,2CAA2E;AAC3E,6FAAuE;AAGvE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,MAAM,IAAA,kCAAsB,EAAC;YACvC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM;YAChC,wBAAwB,EAAE,IAAI;SAClB,CAAC,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACzE,IAAA,gCAAoB,GAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,IAAA,kCAAsB,EAAC;YACvC,eAAe,EAAE,MAAM;YACvB,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM;YAChC,wBAAwB,EAAE,KAAK;SACnB,CAAC,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -8,6 +8,7 @@ const test_utils_1 = require("../test/test-utils");
8
8
  const config = tslib_1.__importStar(require("../config"));
9
9
  const ts_embed_1 = require("./ts-embed");
10
10
  const logger_1 = require("../utils/logger");
11
+ const auth = tslib_1.__importStar(require("../auth"));
11
12
  const defaultViewConfig = {
12
13
  frameParams: {
13
14
  width: 1280,
@@ -22,6 +23,7 @@ beforeAll(() => {
22
23
  thoughtSpotHost,
23
24
  authType: types_1.AuthType.None,
24
25
  });
26
+ jest.spyOn(auth, 'postLoginService').mockImplementation(() => Promise.resolve({}));
25
27
  window.ResizeObserver = window.ResizeObserver
26
28
  || jest.fn().mockImplementation(() => ({
27
29
  disconnect: jest.fn(),
@@ -47,11 +49,11 @@ describe('App embed tests', () => {
47
49
  test('should hide the primary nav bar', async () => {
48
50
  const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
49
51
  ...defaultViewConfig,
50
- showPrimaryNavbar: true,
52
+ showPrimaryNavbar: false,
51
53
  });
52
54
  appEmbed.render();
53
55
  await (0, test_utils_1.executeAfterWait)(() => {
54
- (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
56
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
55
57
  });
56
58
  });
57
59
  test('should hide the help and profile buttons from nav bar', async () => {