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 {
|
} else {
|
||||||
accepted = false;
|
accepted = false;
|
||||||
rejectionReason = response.getRejectionReason();
|
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);
|
.orElse(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -133,11 +133,12 @@ class APNSenderTest {
|
||||||
verifyNoMoreInteractions(apnsClient);
|
verifyNoMoreInteractions(apnsClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@ParameterizedTest
|
||||||
void testUnregisteredUser() {
|
@ValueSource(strings = {"Unregistered", "BadDeviceToken", "ExpiredToken"})
|
||||||
|
void testUnregisteredUser(final String rejectionReason) {
|
||||||
PushNotificationResponse<SimpleApnsPushNotification> response = mock(PushNotificationResponse.class);
|
PushNotificationResponse<SimpleApnsPushNotification> response = mock(PushNotificationResponse.class);
|
||||||
when(response.isAccepted()).thenReturn(false);
|
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)))
|
when(apnsClient.sendNotification(any(SimpleApnsPushNotification.class)))
|
||||||
.thenAnswer(
|
.thenAnswer(
|
||||||
|
@ -160,7 +161,7 @@ class APNSenderTest {
|
||||||
assertThat(notification.getValue().getPriority()).isEqualTo(DeliveryPriority.IMMEDIATE);
|
assertThat(notification.getValue().getPriority()).isEqualTo(DeliveryPriority.IMMEDIATE);
|
||||||
|
|
||||||
assertThat(result.accepted()).isFalse();
|
assertThat(result.accepted()).isFalse();
|
||||||
assertThat(result.errorCode()).hasValue("Unregistered");
|
assertThat(result.errorCode()).hasValue(rejectionReason);
|
||||||
assertThat(result.unregistered()).isTrue();
|
assertThat(result.unregistered()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue