Discard APNs tokens if the APNs server reports that the token is expired
This commit is contained in:
parent
775889c0b6
commit
02b9ceb4c7
|
@ -167,7 +167,7 @@ public class APNSender implements Managed, PushNotificationSender {
|
|||
} else {
|
||||
accepted = false;
|
||||
rejectionReason = response.getRejectionReason();
|
||||
unregistered = response.getRejectionReason().map(reason -> "Unregistered".equals(reason) || "BadDeviceToken".equals(reason))
|
||||
unregistered = response.getRejectionReason().map(reason -> "Unregistered".equals(reason) || "BadDeviceToken".equals(reason) || "ExpiredToken".equals(reason))
|
||||
.orElse(false);
|
||||
}
|
||||
|
||||
|
|
|
@ -133,11 +133,12 @@ class APNSenderTest {
|
|||
verifyNoMoreInteractions(apnsClient);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUnregisteredUser() {
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {"Unregistered", "BadDeviceToken", "ExpiredToken"})
|
||||
void testUnregisteredUser(final String rejectionReason) {
|
||||
PushNotificationResponse<SimpleApnsPushNotification> response = mock(PushNotificationResponse.class);
|
||||
when(response.isAccepted()).thenReturn(false);
|
||||
when(response.getRejectionReason()).thenReturn(Optional.of("Unregistered"));
|
||||
when(response.getRejectionReason()).thenReturn(Optional.of(rejectionReason));
|
||||
|
||||
when(apnsClient.sendNotification(any(SimpleApnsPushNotification.class)))
|
||||
.thenAnswer(
|
||||
|
@ -160,7 +161,7 @@ class APNSenderTest {
|
|||
assertThat(notification.getValue().getPriority()).isEqualTo(DeliveryPriority.IMMEDIATE);
|
||||
|
||||
assertThat(result.accepted()).isFalse();
|
||||
assertThat(result.errorCode()).hasValue("Unregistered");
|
||||
assertThat(result.errorCode()).hasValue(rejectionReason);
|
||||
assertThat(result.unregistered()).isTrue();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue