11import {
2- DEFAULT_AUTH_RESPONSE , DEFAULT_CONNECT_PARAMS ,
3- getConnectedSocket as getOriginalConnectedSocket , getMockServer as getOriginalMockServer , getSocket as getOriginalSocket
2+ DEFAULT_AUTH_RESPONSE , DEFAULT_CONNECT_CREDENTIALS ,
3+ getConnectedSocket as getOriginalConnectedSocket , getMockServer as getOriginalMockServer , getSocket as getOriginalSocket ,
4+ MockConnectedSocketOptions ,
45} from './mocks' ;
56
67import ApiConstants from '../ApiConstants.js' ;
@@ -34,6 +35,7 @@ describe('socket', () => {
3435 } ) ;
3536
3637 const getDefaultSocketOptions = ( ) => ( {
38+ ...DEFAULT_CONNECT_CREDENTIALS ,
3739 logOutput : mockConsole ,
3840 } ) ;
3941
@@ -42,9 +44,10 @@ describe('socket', () => {
4244 }
4345
4446
45- const getConnectedMockSocket = ( ) => {
47+ const getConnectedMockSocket = ( options ?: Partial < MockConnectedSocketOptions > ) => {
4648 return getOriginalConnectedSocket ( server , {
4749 socketOptions : getDefaultSocketOptions ( ) ,
50+ ...options ,
4851 } ) ;
4952 }
5053
@@ -69,14 +72,31 @@ describe('socket', () => {
6972 } ) ;
7073
7174 test ( 'should handle valid refresh token' , async ( ) => {
72- server . addRequestHandler ( 'POST' , ApiConstants . LOGIN_URL , DEFAULT_AUTH_RESPONSE ) ;
75+ const onAuth = jest . fn ( ) ;
76+ server . addRequestHandler ( 'POST' , ApiConstants . LOGIN_URL , DEFAULT_AUTH_RESPONSE , onAuth ) ;
7377 const connectedCallback = jest . fn ( ) ;
7478
7579 const { socket } = getMockSocket ( ) ;
7680 socket . onConnected = connectedCallback ;
7781 const response = await socket . connectRefreshToken ( 'refresh token' ) ;
7882
7983 expect ( connectedCallback ) . toHaveBeenCalledWith ( DEFAULT_AUTH_RESPONSE ) ;
84+
85+ expect ( onAuth ) . toHaveBeenCalled ( ) ;
86+ expect ( onAuth . mock . calls [ 0 ] ) . toMatchInlineSnapshot ( `
87+ [
88+ {
89+ "callback_id": 1,
90+ "data": {
91+ "grant_type": "refresh_token",
92+ "refresh_token": "refresh token",
93+ },
94+ "method": "POST",
95+ "path": "sessions/authorize",
96+ },
97+ ]
98+ ` ) ;
99+
80100 expect ( response ) . toEqual ( DEFAULT_AUTH_RESPONSE ) ;
81101 expect ( socket . isConnected ( ) ) . toEqual ( true ) ;
82102
@@ -110,15 +130,15 @@ describe('socket', () => {
110130 test ( 'should handle connect with custom credentials' , async ( ) => {
111131 server . stop ( ) ;
112132 const { socket } = getOriginalSocket ( {
133+ ...getDefaultSocketOptions ( ) ,
113134 username : 'dummy' ,
114135 password : 'dummy' ,
115- ...getDefaultSocketOptions ( ) ,
116136 } ) ;
117137
118138 // Fail without a server handler with auto reconnect disabled
119139 let error ;
120140 try {
121- await socket . connect ( DEFAULT_CONNECT_PARAMS . username , DEFAULT_CONNECT_PARAMS . password , false ) ;
141+ await socket . connect ( DEFAULT_CONNECT_CREDENTIALS . username , DEFAULT_CONNECT_CREDENTIALS . password , false ) ;
122142 } catch ( e ) {
123143 error = e ;
124144 }
@@ -130,7 +150,7 @@ describe('socket', () => {
130150 server = getOriginalMockServer ( ) ;
131151 server . addRequestHandler ( 'POST' , ApiConstants . LOGIN_URL , DEFAULT_AUTH_RESPONSE ) ;
132152
133- await socket . connect ( DEFAULT_CONNECT_PARAMS . username , DEFAULT_CONNECT_PARAMS . password , false ) ;
153+ await socket . connect ( DEFAULT_CONNECT_CREDENTIALS . username , DEFAULT_CONNECT_CREDENTIALS . password , false ) ;
134154
135155 expect ( socket . isConnected ( ) ) . toEqual ( true ) ;
136156
@@ -292,7 +312,9 @@ describe('socket', () => {
292312 const connectErrorCallback = jest . fn ( ) ;
293313
294314 // Connect and disconnect
295- const { socket } = await getConnectedMockSocket ( ) ;
315+ const { socket } = await getConnectedMockSocket ( {
316+ authCallback,
317+ } ) ;
296318
297319 jest . useFakeTimers ( ) ;
298320 socket . disconnect ( ) ;
@@ -302,14 +324,12 @@ describe('socket', () => {
302324 // Fail the initial reconnect attempt with 'Invalid session token'
303325 // and connect with credentials afterwards
304326 server . addErrorHandler ( 'POST' , ApiConstants . CONNECT_URL , ErrorResponse , 400 , connectErrorCallback ) ;
305-
306- server . addRequestHandler ( 'POST' , ApiConstants . LOGIN_URL , DEFAULT_AUTH_RESPONSE , authCallback ) ;
307327
308328 jest . runOnlyPendingTimers ( ) ;
309329 socket . reconnect ( ) ;
310330
311331 await jest . advanceTimersByTimeAsync ( 1000 ) ;
312- expect ( authCallback . mock . calls . length ) . toBe ( 1 ) ;
332+ expect ( authCallback . mock . calls . length ) . toBe ( 2 ) ;
313333 expect ( connectErrorCallback . mock . calls . length ) . toBe ( 1 ) ;
314334
315335 expect ( socket . isConnected ( ) ) . toEqual ( true ) ;
@@ -446,7 +466,7 @@ describe('socket', () => {
446466 removeListener1 ( ) ;
447467 expect ( hubUpdatedListener . unsubscribeFn . mock . calls . length ) . toBe ( 0 ) ; // Shouldn't call API yet, still one left
448468
449- removeListener2 ( ) ;
469+ await removeListener2 ( ) ;
450470 await waitForExpect ( ( ) => expect ( hubUpdatedListener . unsubscribeFn . mock . calls . length ) . toBe ( 1 ) ) ;
451471
452472 expect ( socket . hasListeners ( ) ) . toBe ( false ) ;
@@ -513,7 +533,7 @@ describe('socket', () => {
513533 }
514534
515535 // Clean up
516- removeListener ( ) ;
536+ await removeListener ( ) ;
517537 expect ( socket . hasListeners ( ) ) . toBe ( false ) ;
518538
519539 expect ( mockConsole . warn . mock . calls . length ) . toBe ( 0 ) ;
0 commit comments