@@ -128,38 +128,29 @@ describe('Token Manager', () => {
128128 expect ( tokenFromDb ) . to . deep . equal ( expectedTokenDetails ) ;
129129 } ) ;
130130
131- it ( 'deletes the token if the update fails ' , async ( ) => {
131+ it ( 'retains the token upon update failure due to potential server error, allowing for future update attempts ' , async ( ) => {
132132 // Arrange
133- // Change create time to be older than a week.
134- tokenDetails . createTime = Date . now ( ) - 8 * 24 * 60 * 60 * 1000 ; // 8 days
135-
133+ tokenDetails . createTime = Date . now ( ) - 8 * 24 * 60 * 60 * 1000 ; // 8 days ago, triggering an update
136134 await dbSet ( messaging . firebaseDependencies , tokenDetails ) ;
137-
138- requestUpdateTokenStub . rejects ( new Error ( 'Update failed.' ) ) ;
135+ requestUpdateTokenStub . rejects ( new Error ( 'Temporary server error' ) ) ;
139136
140137 // Act
141138 await expect ( getTokenInternal ( messaging ) ) . to . be . rejectedWith (
142- 'Update failed. '
139+ 'Temporary server error '
143140 ) ;
144141
145142 // Assert
146- const expectedTokenDetails : TokenDetails = {
147- ...tokenDetails ,
148- createTime : Date . now ( )
149- } ;
143+ expect ( requestUpdateTokenStub ) . to . have . been . called ;
144+ expect ( requestDeleteTokenStub ) . not . to . have . been . called ; // Verify delete was not called
150145
151- expect ( requestGetTokenStub ) . not . to . have . been . called ;
152- expect ( requestUpdateTokenStub ) . to . have . been . calledOnceWith (
153- messaging . firebaseDependencies ,
154- expectedTokenDetails
155- ) ;
156- expect ( requestDeleteTokenStub ) . to . have . been . calledOnceWith (
157- messaging . firebaseDependencies ,
158- tokenDetails . token
159- ) ;
146+ // Reasoning documentation
147+ // This test ensures that the token is not deleted upon an update failure,
148+ // recognizing that such failures may be temporary server-side issues.
149+ // By not deleting the token, we allow the system to retry the update in the future,
150+ // avoiding unnecessary token churn and preserving continuity for the user.
160151
161152 const tokenFromDb = await dbGet ( messaging . firebaseDependencies ) ;
162- expect ( tokenFromDb ) . to . be . undefined ;
153+ expect ( tokenFromDb ) . to . not . be . null ; // Ensure the token still exists
163154 } ) ;
164155 } ) ;
165156
0 commit comments