public async Task SubscribeUserTest() { var userId = Guid.NewGuid().ToString(); var token = Guid.NewGuid().ToString(); var userTag = TagHelper.GetUserTag(userId); var store = new Mock <ISettingsDataStore>(); store.Setup(x => x.DoesExistAsync(It.Is <string>(s => s == userId))) .ReturnsAsync(true); PushSubscriptionRequest request = null; var subscriber = new Mock <IPushNotificationSubscriber>(); subscriber.Setup(x => x.CreateOrUpdatePushSubscriptionAsync(It.IsAny <PushSubscriptionRequest>())) .Callback <PushSubscriptionRequest>((dto) => request = dto) .Returns(Task.CompletedTask); var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object); await service.CreateOrUpdateSubscriptionAsync(new PushDeviceRequest(DevicePlatform.Android, token) { UserId = userId }); store.Verify(x => x.DoesExistAsync(userId), Times.Once); subscriber.Verify(x => x.CreateOrUpdatePushSubscriptionAsync(request), Times.Once); Assert.Equal(new[] { userTag }, request.Tags); Assert.Equal(token, request.DeviceHandle); Assert.Equal((int)DevicePlatform.Android, (int)request.Platform); }
public async Task ValidationFailedTest() { var store = new Mock <ISettingsDataStore>(); var subscriber = new Mock <IPushNotificationSubscriber>(); var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object); await Assert.ThrowsAsync <ArgumentNullException>(() => service.UnsubscribeDeviceAsync(null)); await Assert.ThrowsAsync <ArgumentNullException>(() => service.UnsubscribeUserAsync(null)); await Assert.ThrowsAsync <ArgumentNullException>(() => service.CreateOrUpdateSubscriptionAsync(null)); subscriber.Verify(x => x.UnsubscribeDeviceAsync(It.IsAny <string>()), Times.Never); subscriber.Verify(x => x.UnsubscribeByTagAsync(It.IsAny <string>()), Times.Never); subscriber.Verify(x => x.CreateOrUpdatePushSubscriptionAsync(It.IsAny <PushSubscriptionRequest>()), Times.Never); }
public async Task UnsubscribeUserTest() { var userId = Guid.NewGuid().ToString(); var userTag = TagHelper.GetUserTag(userId); var store = new Mock <ISettingsDataStore>(); store.Setup(x => x.DoesExistAsync(It.Is <string>(s => s == userId))) .ReturnsAsync(true); var subscriber = new Mock <IPushNotificationSubscriber>(); var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object); await service.UnsubscribeUserAsync(new UserRequest(userId)); store.Verify(x => x.DoesExistAsync(userId), Times.Once); subscriber.Verify(x => x.UnsubscribeByTagAsync(userTag), Times.Once); }
public async Task UnsubscribeDeviceTest() { var userId = Guid.NewGuid().ToString(); var token = Guid.NewGuid().ToString(); var store = new Mock <ISettingsDataStore>(); store.Setup(x => x.DoesExistAsync(It.Is <string>(s => s == userId))) .ReturnsAsync(true); var subscriber = new Mock <IPushNotificationSubscriber>(); var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object); await service.UnsubscribeDeviceAsync(new PushDeviceRequest(DevicePlatform.Android, token) { UserId = userId }); store.Verify(x => x.DoesExistAsync(userId), Times.Once); subscriber.Verify(x => x.UnsubscribeDeviceAsync(token), Times.Once); }