@@ -59,11 +59,13 @@ const baseDeleteMessage = {
5959const basePasswordResetMessage = {
6060 ...baseMessage ,
6161 event : 'reset' ,
62+ generation : now - 5000 ,
6263} ;
6364
6465const basePasswordChangeMessage = {
6566 ...baseMessage ,
6667 event : 'passwordChange' ,
68+ generation : now - 5000 ,
6769} ;
6870
6971const basePrimaryEmailMessage = {
@@ -313,6 +315,32 @@ describe('QueueworkerService', () => {
313315 } ) ;
314316 }
315317
318+ it ( 'uses generation as changeTime for password change events' , async ( ) => {
319+ const msg = updateStubMessage ( basePasswordChangeMessage ) ;
320+ await ( service as any ) . handleMessage ( msg ) ;
321+ expect ( topic . publishMessage ) . toHaveBeenCalledTimes ( 1 ) ;
322+ const published = topic . publishMessage . mock . calls [ 0 ] [ 0 ] . json ;
323+ expect ( published . changeTime ) . toBe ( basePasswordChangeMessage . generation ) ;
324+ } ) ;
325+
326+ it ( 'uses generation as changeTime for password reset events' , async ( ) => {
327+ const msg = updateStubMessage ( basePasswordResetMessage ) ;
328+ await ( service as any ) . handleMessage ( msg ) ;
329+ expect ( topic . publishMessage ) . toHaveBeenCalledTimes ( 1 ) ;
330+ const published = topic . publishMessage . mock . calls [ 0 ] [ 0 ] . json ;
331+ expect ( published . changeTime ) . toBe ( basePasswordResetMessage . generation ) ;
332+ } ) ;
333+
334+ it ( 'falls back to timestamp when generation is absent for password events' , async ( ) => {
335+ const { generation, ...messageWithoutGeneration } =
336+ basePasswordChangeMessage ;
337+ const msg = updateStubMessage ( messageWithoutGeneration ) ;
338+ await ( service as any ) . handleMessage ( msg ) ;
339+ expect ( topic . publishMessage ) . toHaveBeenCalledTimes ( 1 ) ;
340+ const published = topic . publishMessage . mock . calls [ 0 ] [ 0 ] . json ;
341+ expect ( published . changeTime ) . toBe ( messageWithoutGeneration . timestamp ) ;
342+ } ) ;
343+
316344 const invalidMessages = {
317345 login : { ...baseLoginMessage , clientId : 'test1234' } ,
318346 'password change' : { ...basePasswordChangeMessage , ts : false } ,
0 commit comments