@@ -2,12 +2,11 @@ import type { ActiveSessionResource, SignInJSON, SignUpJSON, TokenResource } fro
2
2
import { waitFor } from '@testing-library/dom' ;
3
3
4
4
import { mockNativeRuntime } from '../../testUtils' ;
5
+ import type { DevBrowser } from '../auth/devBrowser' ;
5
6
import { Clerk } from '../clerk' ;
6
- import type { DevBrowser } from '../devBrowser' ;
7
7
import { eventBus , events } from '../events' ;
8
8
import type { DisplayConfig , Organization } from '../resources/internal' ;
9
9
import { BaseResource , Client , EmailLinkErrorCode , Environment , SignIn , SignUp } from '../resources/internal' ;
10
- import { SessionCookieService } from '../services' ;
11
10
import { mockJwt } from '../test/fixtures' ;
12
11
13
12
const mockClientFetch = jest . fn ( ) ;
@@ -17,7 +16,7 @@ jest.mock('../resources/Client');
17
16
jest . mock ( '../resources/Environment' ) ;
18
17
19
18
// Because Jest, don't ask me why...
20
- jest . mock ( '../devBrowser' , ( ) => ( {
19
+ jest . mock ( '../auth/ devBrowser' , ( ) => ( {
21
20
createDevBrowser : ( ) : DevBrowser => ( {
22
21
clear : jest . fn ( ) ,
23
22
setup : jest . fn ( ) ,
@@ -158,17 +157,17 @@ describe('Clerk singleton', () => {
158
157
touch : jest . fn ( ) ,
159
158
getToken : jest . fn ( ) ,
160
159
} ;
161
- let cookieSpy ;
160
+ let evenBusSpy ;
162
161
163
162
beforeEach ( ( ) => {
164
- cookieSpy = jest . spyOn ( SessionCookieService . prototype , 'setAuthCookiesFromSession ' ) ;
163
+ evenBusSpy = jest . spyOn ( eventBus , 'dispatch ' ) ;
165
164
} ) ;
166
165
167
166
afterEach ( ( ) => {
168
167
mockSession . remove . mockReset ( ) ;
169
168
mockSession . touch . mockReset ( ) ;
170
169
171
- cookieSpy ?. mockRestore ( ) ;
170
+ evenBusSpy ?. mockRestore ( ) ;
172
171
// cleanup global window pollution
173
172
( window as any ) . __unstable__onBeforeSetActive = null ;
174
173
( window as any ) . __unstable__onAfterSetActive = null ;
@@ -183,7 +182,7 @@ describe('Clerk singleton', () => {
183
182
await sut . setActive ( { session : null } ) ;
184
183
await waitFor ( ( ) => {
185
184
expect ( mockSession . touch ) . not . toHaveBeenCalled ( ) ;
186
- expect ( cookieSpy ) . toBeCalledWith ( null ) ;
185
+ expect ( evenBusSpy ) . toBeCalledWith ( 'token:update' , { token : null } ) ;
187
186
} ) ;
188
187
} ) ;
189
188
@@ -194,22 +193,20 @@ describe('Clerk singleton', () => {
194
193
const sut = new Clerk ( productionPublishableKey ) ;
195
194
await sut . load ( ) ;
196
195
await sut . setActive ( { session : mockSession as any as ActiveSessionResource } ) ;
197
- await waitFor ( ( ) => {
198
- expect ( mockSession . touch ) . toHaveBeenCalled ( ) ;
199
- expect ( cookieSpy ) . toBeCalledWith ( mockSession ) ;
200
- } ) ;
196
+ expect ( mockSession . touch ) . toHaveBeenCalled ( ) ;
201
197
} ) ;
202
198
203
199
it ( 'does not call session.touch if Clerk was initialised with touchSession set to false' , async ( ) => {
204
200
mockSession . touch . mockReturnValueOnce ( Promise . resolve ( ) ) ;
205
201
mockClientFetch . mockReturnValue ( Promise . resolve ( { activeSessions : [ mockSession ] } ) ) ;
202
+ mockSession . getToken . mockResolvedValue ( 'mocked-token' ) ;
206
203
207
204
const sut = new Clerk ( productionPublishableKey ) ;
208
205
await sut . load ( { touchSession : false } ) ;
209
206
await sut . setActive ( { session : mockSession as any as ActiveSessionResource } ) ;
210
207
await waitFor ( ( ) => {
211
208
expect ( mockSession . touch ) . not . toHaveBeenCalled ( ) ;
212
- expect ( cookieSpy ) . toBeCalledWith ( mockSession ) ;
209
+ expect ( mockSession . getToken ) . toBeCalled ( ) ;
213
210
} ) ;
214
211
} ) ;
215
212
@@ -250,6 +247,7 @@ describe('Clerk singleton', () => {
250
247
status : 'active' ,
251
248
user : { } ,
252
249
touch : jest . fn ( ) ,
250
+ getToken : jest . fn ( ) ,
253
251
} ;
254
252
mockClientFetch . mockReturnValue ( Promise . resolve ( { activeSessions : [ mockSession , mockSession2 ] } ) ) ;
255
253
@@ -262,9 +260,9 @@ describe('Clerk singleton', () => {
262
260
executionOrder . push ( 'session.touch' ) ;
263
261
return Promise . resolve ( ) ;
264
262
} ) ;
265
- cookieSpy . mockImplementationOnce ( ( ) => {
263
+ mockSession2 . getToken . mockImplementation ( ( ) => {
266
264
executionOrder . push ( 'set cookie' ) ;
267
- return Promise . resolve ( ) ;
265
+ return 'mocked-token-2' ;
268
266
} ) ;
269
267
const beforeEmitMock = jest . fn ( ) . mockImplementationOnce ( ( ) => {
270
268
executionOrder . push ( 'before emit' ) ;
@@ -276,7 +274,7 @@ describe('Clerk singleton', () => {
276
274
await waitFor ( ( ) => {
277
275
expect ( executionOrder ) . toEqual ( [ 'session.touch' , 'set cookie' , 'before emit' ] ) ;
278
276
expect ( mockSession2 . touch ) . toHaveBeenCalled ( ) ;
279
- expect ( cookieSpy ) . toBeCalledWith ( mockSession2 ) ;
277
+ expect ( mockSession2 . getToken ) . toHaveBeenCalled ( ) ;
280
278
expect ( beforeEmitMock ) . toBeCalledWith ( mockSession2 ) ;
281
279
expect ( sut . session ) . toMatchObject ( mockSession2 ) ;
282
280
} ) ;
@@ -285,7 +283,6 @@ describe('Clerk singleton', () => {
285
283
// TODO: @dimkl include set transitive state
286
284
it ( 'calls with lastActiveOrganizationId session.touch -> set cookie -> before emit -> set accessors with touched session on organization switch' , async ( ) => {
287
285
mockClientFetch . mockReturnValue ( Promise . resolve ( { activeSessions : [ mockSession ] } ) ) ;
288
-
289
286
const sut = new Clerk ( productionPublishableKey ) ;
290
287
await sut . load ( ) ;
291
288
@@ -295,10 +292,11 @@ describe('Clerk singleton', () => {
295
292
executionOrder . push ( 'session.touch' ) ;
296
293
return Promise . resolve ( ) ;
297
294
} ) ;
298
- cookieSpy . mockImplementationOnce ( ( ) => {
295
+ mockSession . getToken . mockImplementation ( ( ) => {
299
296
executionOrder . push ( 'set cookie' ) ;
300
- return Promise . resolve ( ) ;
297
+ return 'mocked-token' ;
301
298
} ) ;
299
+
302
300
const beforeEmitMock = jest . fn ( ) . mockImplementationOnce ( ( ) => {
303
301
executionOrder . push ( 'before emit' ) ;
304
302
return Promise . resolve ( ) ;
@@ -309,8 +307,8 @@ describe('Clerk singleton', () => {
309
307
await waitFor ( ( ) => {
310
308
expect ( executionOrder ) . toEqual ( [ 'session.touch' , 'set cookie' , 'before emit' ] ) ;
311
309
expect ( mockSession . touch ) . toHaveBeenCalled ( ) ;
310
+ expect ( mockSession . getToken ) . toHaveBeenCalled ( ) ;
312
311
expect ( ( mockSession as any as ActiveSessionResource ) ?. lastActiveOrganizationId ) . toEqual ( 'org-id' ) ;
313
- expect ( cookieSpy ) . toBeCalledWith ( mockSession ) ;
314
312
expect ( beforeEmitMock ) . toBeCalledWith ( mockSession ) ;
315
313
expect ( sut . session ) . toMatchObject ( mockSession ) ;
316
314
} ) ;
@@ -329,10 +327,6 @@ describe('Clerk singleton', () => {
329
327
executionOrder . push ( 'session.touch' ) ;
330
328
return Promise . resolve ( ) ;
331
329
} ) ;
332
- cookieSpy . mockImplementationOnce ( ( ) => {
333
- executionOrder . push ( 'set cookie' ) ;
334
- return Promise . resolve ( ) ;
335
- } ) ;
336
330
const beforeEmitMock = jest . fn ( ) . mockImplementationOnce ( ( ) => {
337
331
executionOrder . push ( 'before emit' ) ;
338
332
return Promise . resolve ( ) ;
@@ -343,7 +337,7 @@ describe('Clerk singleton', () => {
343
337
expect ( executionOrder ) . toEqual ( [ 'session.touch' , 'before emit' ] ) ;
344
338
expect ( mockSession . touch ) . toHaveBeenCalled ( ) ;
345
339
expect ( ( mockSession as any as ActiveSessionResource ) ?. lastActiveOrganizationId ) . toEqual ( 'org-id' ) ;
346
- expect ( cookieSpy ) . not . toHaveBeenCalled ( ) ;
340
+ expect ( mockSession . getToken ) . toBeCalled ( ) ;
347
341
expect ( beforeEmitMock ) . toBeCalledWith ( mockSession ) ;
348
342
expect ( sut . session ) . toMatchObject ( mockSession ) ;
349
343
} ) ;
@@ -523,7 +517,7 @@ describe('Clerk singleton', () => {
523
517
) ;
524
518
525
519
const sut = new Clerk ( productionPublishableKey ) ;
526
- sut . setActive = jest . fn ( ( { beforeEmit } ) => beforeEmit ( ) ) ;
520
+ sut . setActive = jest . fn ( async ( { beforeEmit } ) => void ( beforeEmit && beforeEmit ( ) ) ) ;
527
521
sut . navigate = jest . fn ( ) ;
528
522
await sut . load ( ) ;
529
523
await sut . signOut ( { sessionId : '1' , redirectUrl : '/after-sign-out' } ) ;
0 commit comments