@@ -128,38 +128,29 @@ describe('Token Manager', () => {
128
128
expect ( tokenFromDb ) . to . deep . equal ( expectedTokenDetails ) ;
129
129
} ) ;
130
130
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 ( ) => {
132
132
// 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
136
134
await dbSet ( messaging . firebaseDependencies , tokenDetails ) ;
137
-
138
- requestUpdateTokenStub . rejects ( new Error ( 'Update failed.' ) ) ;
135
+ requestUpdateTokenStub . rejects ( new Error ( 'Temporary server error' ) ) ;
139
136
140
137
// Act
141
138
await expect ( getTokenInternal ( messaging ) ) . to . be . rejectedWith (
142
- 'Update failed. '
139
+ 'Temporary server error '
143
140
) ;
144
141
145
142
// 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
150
145
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.
160
151
161
152
const tokenFromDb = await dbGet ( messaging . firebaseDependencies ) ;
162
- expect ( tokenFromDb ) . to . be . undefined ;
153
+ expect ( tokenFromDb ) . to . not . be . null ; // Ensure the token still exists
163
154
} ) ;
164
155
} ) ;
165
156
0 commit comments