@@ -128,41 +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.' ) ) ;
139
-
135
+ requestUpdateTokenStub . rejects ( new Error ( 'Temporary server error' ) ) ;
136
+
140
137
// Act
141
- await expect ( getTokenInternal ( messaging ) ) . to . be . rejectedWith (
142
- 'Update failed.'
143
- ) ;
144
-
138
+ await expect ( getTokenInternal ( messaging ) ) . to . be . rejectedWith ( 'Temporary server error' ) ;
139
+
145
140
// Assert
146
- const expectedTokenDetails : TokenDetails = {
147
- ...tokenDetails ,
148
- createTime : Date . now ( )
149
- } ;
150
-
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
- ) ;
160
-
141
+ expect ( requestUpdateTokenStub ) . to . have . been . called ;
142
+ expect ( requestDeleteTokenStub ) . not . to . have . been . called ; // Verify delete was not called
143
+
144
+ // Reasoning documentation
145
+ // This test ensures that the token is not deleted upon an update failure,
146
+ // recognizing that such failures may be temporary server-side issues.
147
+ // By not deleting the token, we allow the system to retry the update in the future,
148
+ // avoiding unnecessary token churn and preserving continuity for the user.
149
+
161
150
const tokenFromDb = await dbGet ( messaging . firebaseDependencies ) ;
162
- expect ( tokenFromDb ) . to . be . undefined ;
151
+ expect ( tokenFromDb ) . to . not . be . null ; // Ensure the token still exists
163
152
} ) ;
164
- } ) ;
165
-
153
+
166
154
describe ( 'deleteToken' , ( ) => {
167
155
it ( 'returns if there is no token in the db' , async ( ) => {
168
156
await deleteTokenInternal ( messaging ) ;
0 commit comments