public async Task PushService_OtherClientError_PushServiceClientExceptionContainsPushSubscription() { _pushSubscription.Endpoint = CLIENT_ERROR_ENDPOINT; PushMessage pushMessage = new PushMessage(WALRUS_CONTENT); PushServiceClient pushClient = PreparePushServiceClient(); PushServiceClientException pushMessageDeliveryException = await Record.ExceptionAsync(async() => { await pushClient.RequestPushMessageDeliveryAsync(_pushSubscription, pushMessage); }) as PushServiceClientException; Assert.Equal(_pushSubscription, pushMessageDeliveryException.PushSubscription); }
public async Task PushService_OtherClientError_PushServiceClientExceptionContainsResponseReasonPhrase() { _pushSubscription.Endpoint = CLIENT_ERROR_ENDPOINT; PushMessage pushMessage = new PushMessage(WALRUS_CONTENT); PushServiceClient pushClient = PreparePushServiceClient(); PushServiceClientException pushMessageDeliveryException = await Record.ExceptionAsync(async() => { await pushClient.RequestPushMessageDeliveryAsync(_pushSubscription, pushMessage); }) as PushServiceClientException; Assert.Equal(FakePushServiceStartup.OTHER_CLIENT_ERROR_REASON_PHRASE, pushMessageDeliveryException.Message); }
public async Task PushService_TooManyRequests_MaxRetriesAfter_PushServiceClientExceptionStatusCodeIs429() { _pushSubscription.Endpoint = RETRY_AFTER_ALWAYS_ENDPOINT; PushMessage pushMessage = new PushMessage(WALRUS_CONTENT); PushServiceClient pushClient = PreparePushServiceClient(); pushClient.MaxRetriesAfter = 1; PushServiceClientException pushMessageDeliveryException = await Record.ExceptionAsync(async() => { await pushClient.RequestPushMessageDeliveryAsync(_pushSubscription, pushMessage); }) as PushServiceClientException; Assert.Equal(429, (int)pushMessageDeliveryException.StatusCode); }
private async Task HandlePushMessageDeliveryExceptionAsync(Exception exception, PushSubscription subscription) { PushServiceClientException pushServiceClientException = exception as PushServiceClientException; if (pushServiceClientException is null) { _logger?.LogError(exception, "Failed requesting push message delivery to {0}.", subscription.Endpoint); } else { if ((pushServiceClientException.StatusCode == HttpStatusCode.NotFound) || (pushServiceClientException.StatusCode == HttpStatusCode.Gone)) { await _pushSubscriptionStore.DeleteSubscription(subscription.Endpoint); _logger?.LogInformation("Subscription has expired or is no longer valid and has been removed."); } } }
private async Task HandlePushMessageDeliveryExceptionAsync(Exception exception, Lib.Net.Http.WebPush.PushSubscription subscription) { PushServiceClientException pushServiceClientException = exception as PushServiceClientException; if (pushServiceClientException is null) { _logger?.LogError(exception, "Failed requesting push message delivery to {0}.", subscription.Endpoint); } else { if ((pushServiceClientException.StatusCode == HttpStatusCode.NotFound) || (pushServiceClientException.StatusCode == HttpStatusCode.Gone)) { using (IPushSubscriptionStoreAccessor subscriptionStoreAccessor = _subscriptionStoreAccessorProvider.GetPushSubscriptionStoreAccessor()) { await subscriptionStoreAccessor.PushSubscriptionStore.DiscardSubscriptionAsync(subscription.Endpoint); } _logger?.LogInformation("Subscription has expired or is no longer valid and has been removed."); } } }