diff --git a/src/Core/Enums/PushType.cs b/src/Core/Enums/PushType.cs index 5af56e0767..541e2cd072 100644 --- a/src/Core/Enums/PushType.cs +++ b/src/Core/Enums/PushType.cs @@ -26,6 +26,6 @@ public enum PushType : byte SyncOrganizations = 17, - SyncNotificationCreate = 18, - SyncNotificationUpdate = 19 + SyncNotification = 18, + SyncNotificationStatus = 19 } diff --git a/src/Core/Models/PushNotification.cs b/src/Core/Models/PushNotification.cs index de46a598ba..d319ff2061 100644 --- a/src/Core/Models/PushNotification.cs +++ b/src/Core/Models/PushNotification.cs @@ -1,5 +1,6 @@ #nullable enable using Bit.Core.Enums; +using Bit.Core.NotificationCenter.Enums; namespace Bit.Core.Models; @@ -46,13 +47,18 @@ public class SyncSendPushNotification public DateTime RevisionDate { get; set; } } -public class SyncNotificationPushNotification +public class NotificationPushNotification { public Guid Id { get; set; } + public Priority Priority { get; set; } + public bool Global { get; set; } + public ClientType ClientType { get; set; } public Guid? UserId { get; set; } public Guid? OrganizationId { get; set; } public Guid? InstallationId { get; set; } - public ClientType ClientType { get; set; } + public string? Title { get; set; } + public string? Body { get; set; } + public DateTime CreationDate { get; set; } public DateTime RevisionDate { get; set; } public DateTime? ReadDate { get; set; } public DateTime? DeletedDate { get; set; } diff --git a/src/Core/NotificationCenter/Commands/CreateNotificationCommand.cs b/src/Core/NotificationCenter/Commands/CreateNotificationCommand.cs index a4cacea1ea..117083a1d0 100644 --- a/src/Core/NotificationCenter/Commands/CreateNotificationCommand.cs +++ b/src/Core/NotificationCenter/Commands/CreateNotificationCommand.cs @@ -37,7 +37,7 @@ public class CreateNotificationCommand : ICreateNotificationCommand var newNotification = await _notificationRepository.CreateAsync(notification); - await _pushNotificationService.PushSyncNotificationCreateAsync(newNotification); + await _pushNotificationService.PushNotificationAsync(newNotification); return newNotification; } diff --git a/src/Core/NotificationCenter/Commands/CreateNotificationStatusCommand.cs b/src/Core/NotificationCenter/Commands/CreateNotificationStatusCommand.cs index 8e54a55c5c..57af9ab6b8 100644 --- a/src/Core/NotificationCenter/Commands/CreateNotificationStatusCommand.cs +++ b/src/Core/NotificationCenter/Commands/CreateNotificationStatusCommand.cs @@ -48,7 +48,7 @@ public class CreateNotificationStatusCommand : ICreateNotificationStatusCommand var newNotificationStatus = await _notificationStatusRepository.CreateAsync(notificationStatus); - await _pushNotificationService.PushSyncNotificationUpdateAsync(notification, newNotificationStatus); + await _pushNotificationService.PushNotificationStatusAsync(notification, newNotificationStatus); return newNotificationStatus; } diff --git a/src/Core/NotificationCenter/Commands/MarkNotificationDeletedCommand.cs b/src/Core/NotificationCenter/Commands/MarkNotificationDeletedCommand.cs index 67d3f8dd4f..455c03c5c5 100644 --- a/src/Core/NotificationCenter/Commands/MarkNotificationDeletedCommand.cs +++ b/src/Core/NotificationCenter/Commands/MarkNotificationDeletedCommand.cs @@ -65,7 +65,7 @@ public class MarkNotificationDeletedCommand : IMarkNotificationDeletedCommand var newNotificationStatus = await _notificationStatusRepository.CreateAsync(notificationStatus); - await _pushNotificationService.PushSyncNotificationUpdateAsync(notification, newNotificationStatus); + await _pushNotificationService.PushNotificationStatusAsync(notification, newNotificationStatus); } else { @@ -76,7 +76,7 @@ public class MarkNotificationDeletedCommand : IMarkNotificationDeletedCommand await _notificationStatusRepository.UpdateAsync(notificationStatus); - await _pushNotificationService.PushSyncNotificationUpdateAsync(notification, notificationStatus); + await _pushNotificationService.PushNotificationStatusAsync(notification, notificationStatus); } } } diff --git a/src/Core/NotificationCenter/Commands/MarkNotificationReadCommand.cs b/src/Core/NotificationCenter/Commands/MarkNotificationReadCommand.cs index 17dc3a2f0a..ca81e8b751 100644 --- a/src/Core/NotificationCenter/Commands/MarkNotificationReadCommand.cs +++ b/src/Core/NotificationCenter/Commands/MarkNotificationReadCommand.cs @@ -65,7 +65,7 @@ public class MarkNotificationReadCommand : IMarkNotificationReadCommand var newNotificationStatus = await _notificationStatusRepository.CreateAsync(notificationStatus); - await _pushNotificationService.PushSyncNotificationUpdateAsync(notification, newNotificationStatus); + await _pushNotificationService.PushNotificationStatusAsync(notification, newNotificationStatus); } else { @@ -76,7 +76,7 @@ public class MarkNotificationReadCommand : IMarkNotificationReadCommand await _notificationStatusRepository.UpdateAsync(notificationStatus); - await _pushNotificationService.PushSyncNotificationUpdateAsync(notification, notificationStatus); + await _pushNotificationService.PushNotificationStatusAsync(notification, notificationStatus); } } } diff --git a/src/Core/NotificationCenter/Commands/UpdateNotificationCommand.cs b/src/Core/NotificationCenter/Commands/UpdateNotificationCommand.cs index ad2b2bc4a0..12d47cff0b 100644 --- a/src/Core/NotificationCenter/Commands/UpdateNotificationCommand.cs +++ b/src/Core/NotificationCenter/Commands/UpdateNotificationCommand.cs @@ -48,6 +48,6 @@ public class UpdateNotificationCommand : IUpdateNotificationCommand await _notificationRepository.ReplaceAsync(notification); - await _pushNotificationService.PushSyncNotificationUpdateAsync(notification, null); + await _pushNotificationService.PushNotificationAsync(notification); } } diff --git a/src/Core/NotificationCenter/Entities/Notification.cs b/src/Core/NotificationCenter/Entities/Notification.cs index 7ab3187524..a8b5c7d1fa 100644 --- a/src/Core/NotificationCenter/Entities/Notification.cs +++ b/src/Core/NotificationCenter/Entities/Notification.cs @@ -15,9 +15,8 @@ public class Notification : ITableObject public ClientType ClientType { get; set; } public Guid? UserId { get; set; } public Guid? OrganizationId { get; set; } - [MaxLength(256)] - public string? Title { get; set; } - public string? Body { get; set; } + [MaxLength(256)] public string? Title { get; set; } + [MaxLength(3000)] public string? Body { get; set; } public DateTime CreationDate { get; set; } public DateTime RevisionDate { get; set; } diff --git a/src/Core/NotificationHub/NotificationHubPushNotificationService.cs b/src/Core/NotificationHub/NotificationHubPushNotificationService.cs index 4b46944eb8..7723551ed6 100644 --- a/src/Core/NotificationHub/NotificationHubPushNotificationService.cs +++ b/src/Core/NotificationHub/NotificationHubPushNotificationService.cs @@ -191,73 +191,81 @@ public class NotificationHubPushNotificationService : IPushNotificationService await PushAuthRequestAsync(authRequest, PushType.AuthRequestResponse); } - public async Task PushSyncNotificationCreateAsync(Notification notification) + public async Task PushNotificationAsync(Notification notification) { Guid? installationId = notification.Global && _globalSettings.Installation.Id != default ? _globalSettings.Installation.Id : null; - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = installationId, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate }; if (notification.Global && installationId.HasValue) { - await SendPayloadToInstallationAsync(installationId.Value, PushType.SyncNotificationCreate, message, true, + await SendPayloadToInstallationAsync(installationId.Value, PushType.SyncNotification, message, true, notification.ClientType); } else if (notification.UserId.HasValue) { - await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotificationCreate, message, true, + await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotification, message, true, notification.ClientType); } else if (notification.OrganizationId.HasValue) { - await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotificationCreate, - message, + await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotification, message, true, notification.ClientType); } } - public async Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus) + public async Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus) { Guid? installationId = notification.Global && _globalSettings.Installation.Id != default ? _globalSettings.Installation.Id : null; - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = installationId, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate, - ReadDate = notificationStatus?.ReadDate, - DeletedDate = notificationStatus?.DeletedDate + ReadDate = notificationStatus.ReadDate, + DeletedDate = notificationStatus.DeletedDate }; if (notification.Global && installationId.HasValue) { - await SendPayloadToInstallationAsync(installationId.Value, PushType.SyncNotificationUpdate, message, true, + await SendPayloadToInstallationAsync(installationId.Value, PushType.SyncNotificationStatus, message, true, notification.ClientType); } else if (notification.UserId.HasValue) { - await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotificationUpdate, message, true, + await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotificationStatus, message, true, notification.ClientType); } else if (notification.OrganizationId.HasValue) { - await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotificationUpdate, - message, - true, notification.ClientType); + await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotificationStatus, + message, true, notification.ClientType); } } diff --git a/src/Core/Services/IPushNotificationService.cs b/src/Core/Services/IPushNotificationService.cs index c9c6353a91..660a3933df 100644 --- a/src/Core/Services/IPushNotificationService.cs +++ b/src/Core/Services/IPushNotificationService.cs @@ -24,8 +24,8 @@ public interface IPushNotificationService Task PushSyncSendCreateAsync(Send send); Task PushSyncSendUpdateAsync(Send send); Task PushSyncSendDeleteAsync(Send send); - Task PushSyncNotificationCreateAsync(Notification notification); - Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus); + Task PushNotificationAsync(Notification notification); + Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus); Task PushAuthRequestAsync(AuthRequest authRequest); Task PushAuthRequestResponseAsync(AuthRequest authRequest); diff --git a/src/Core/Services/Implementations/AzureQueuePushNotificationService.cs b/src/Core/Services/Implementations/AzureQueuePushNotificationService.cs index 7649ba3bc3..e6d443d213 100644 --- a/src/Core/Services/Implementations/AzureQueuePushNotificationService.cs +++ b/src/Core/Services/Implementations/AzureQueuePushNotificationService.cs @@ -169,36 +169,46 @@ public class AzureQueuePushNotificationService : IPushNotificationService await PushSendAsync(send, PushType.SyncSendDelete); } - public async Task PushSyncNotificationCreateAsync(Notification notification) + public async Task PushNotificationAsync(Notification notification) { - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = notification.Global ? _globalSettings.Installation.Id : null, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate }; - await SendMessageAsync(PushType.SyncNotificationCreate, message, true); + await SendMessageAsync(PushType.SyncNotification, message, true); } - public async Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus) + public async Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus) { - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = notification.Global ? _globalSettings.Installation.Id : null, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate, - ReadDate = notificationStatus?.ReadDate, - DeletedDate = notificationStatus?.DeletedDate + ReadDate = notificationStatus.ReadDate, + DeletedDate = notificationStatus.DeletedDate }; - await SendMessageAsync(PushType.SyncNotificationUpdate, message, true); + await SendMessageAsync(PushType.SyncNotificationStatus, message, true); } private async Task PushSendAsync(Send send, PushType type) diff --git a/src/Core/Services/Implementations/MultiServicePushNotificationService.cs b/src/Core/Services/Implementations/MultiServicePushNotificationService.cs index 4d274ed75d..c2770324e6 100644 --- a/src/Core/Services/Implementations/MultiServicePushNotificationService.cs +++ b/src/Core/Services/Implementations/MultiServicePushNotificationService.cs @@ -154,15 +154,15 @@ public class MultiServicePushNotificationService : IPushNotificationService return Task.FromResult(0); } - public Task PushSyncNotificationCreateAsync(Notification notification) + public Task PushNotificationAsync(Notification notification) { - PushToServices((s) => s.PushSyncNotificationCreateAsync(notification)); + PushToServices((s) => s.PushNotificationAsync(notification)); return Task.CompletedTask; } - public Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus) + public Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus) { - PushToServices((s) => s.PushSyncNotificationUpdateAsync(notification, notificationStatus)); + PushToServices((s) => s.PushNotificationStatusAsync(notification, notificationStatus)); return Task.CompletedTask; } diff --git a/src/Core/Services/Implementations/NotificationsApiPushNotificationService.cs b/src/Core/Services/Implementations/NotificationsApiPushNotificationService.cs index c699660a5e..3b7c15bac0 100644 --- a/src/Core/Services/Implementations/NotificationsApiPushNotificationService.cs +++ b/src/Core/Services/Implementations/NotificationsApiPushNotificationService.cs @@ -179,36 +179,46 @@ public class NotificationsApiPushNotificationService : BaseIdentityClientService await PushSendAsync(send, PushType.SyncSendDelete); } - public async Task PushSyncNotificationCreateAsync(Notification notification) + public async Task PushNotificationAsync(Notification notification) { - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = notification.Global ? _globalSettings.Installation.Id : null, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate }; - await SendMessageAsync(PushType.SyncNotificationCreate, message, true); + await SendMessageAsync(PushType.SyncNotification, message, true); } - public async Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus) + public async Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus) { - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = notification.Global ? _globalSettings.Installation.Id : null, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate, - ReadDate = notificationStatus?.ReadDate, - DeletedDate = notificationStatus?.DeletedDate + ReadDate = notificationStatus.ReadDate, + DeletedDate = notificationStatus.DeletedDate }; - await SendMessageAsync(PushType.SyncNotificationUpdate, message, true); + await SendMessageAsync(PushType.SyncNotificationStatus, message, true); } private async Task PushSendAsync(Send send, PushType type) diff --git a/src/Core/Services/Implementations/RelayPushNotificationService.cs b/src/Core/Services/Implementations/RelayPushNotificationService.cs index 73d7c529ce..5de5604569 100644 --- a/src/Core/Services/Implementations/RelayPushNotificationService.cs +++ b/src/Core/Services/Implementations/RelayPushNotificationService.cs @@ -197,63 +197,72 @@ public class RelayPushNotificationService : BaseIdentityClientService, IPushNoti await SendPayloadToUserAsync(authRequest.UserId, type, message, true); } - public async Task PushSyncNotificationCreateAsync(Notification notification) + public async Task PushNotificationAsync(Notification notification) { - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = notification.Global ? _globalSettings.Installation.Id : null, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate }; if (notification.Global) { - await SendPayloadToInstallationAsync(PushType.SyncNotificationCreate, message, true, + await SendPayloadToInstallationAsync(PushType.SyncNotification, message, true, notification.ClientType); } else if (notification.UserId.HasValue) { - await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotificationCreate, message, true, + await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotification, message, true, notification.ClientType); } else if (notification.OrganizationId.HasValue) { - await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotificationCreate, - message, + await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotification, message, true, notification.ClientType); } } - public async Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus) + public async Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus) { - var message = new SyncNotificationPushNotification + var message = new NotificationPushNotification { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, InstallationId = notification.Global ? _globalSettings.Installation.Id : null, - ClientType = notification.ClientType, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate, - ReadDate = notificationStatus?.ReadDate, - DeletedDate = notificationStatus?.DeletedDate + ReadDate = notificationStatus.ReadDate, + DeletedDate = notificationStatus.DeletedDate }; if (notification.Global) { - await SendPayloadToInstallationAsync(PushType.SyncNotificationUpdate, message, true, + await SendPayloadToInstallationAsync(PushType.SyncNotificationStatus, message, true, notification.ClientType); } else if (notification.UserId.HasValue) { - await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotificationUpdate, message, true, + await SendPayloadToUserAsync(notification.UserId.Value, PushType.SyncNotificationStatus, message, true, notification.ClientType); } else if (notification.OrganizationId.HasValue) { - await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotificationUpdate, + await SendPayloadToOrganizationAsync(notification.OrganizationId.Value, PushType.SyncNotificationStatus, message, true, notification.ClientType); } } diff --git a/src/Core/Services/NoopImplementations/NoopPushNotificationService.cs b/src/Core/Services/NoopImplementations/NoopPushNotificationService.cs index 5cbbd31c69..166ae5fcb6 100644 --- a/src/Core/Services/NoopImplementations/NoopPushNotificationService.cs +++ b/src/Core/Services/NoopImplementations/NoopPushNotificationService.cs @@ -109,8 +109,7 @@ public class NoopPushNotificationService : IPushNotificationService return Task.FromResult(0); } - public Task PushSyncNotificationCreateAsync(Notification notification) => Task.CompletedTask; + public Task PushNotificationAsync(Notification notification) => Task.CompletedTask; - public Task PushSyncNotificationUpdateAsync(Notification notification, NotificationStatus? notificationStatus) => - Task.CompletedTask; + public Task PushNotificationStatusAsync(Notification notification, NotificationStatus notificationStatus) => Task.CompletedTask; } diff --git a/src/Notifications/HubHelpers.cs b/src/Notifications/HubHelpers.cs index c307a1b62f..8f1666fdf5 100644 --- a/src/Notifications/HubHelpers.cs +++ b/src/Notifications/HubHelpers.cs @@ -89,10 +89,10 @@ public static class HubHelpers await hubContext.Clients.User(authRequestNotification.Payload.UserId.ToString()) .SendAsync(_receiveMessageMethod, authRequestNotification, cancellationToken); break; - case PushType.SyncNotificationCreate: - case PushType.SyncNotificationUpdate: + case PushType.SyncNotification: + case PushType.SyncNotificationStatus: var syncNotification = - JsonSerializer.Deserialize>( + JsonSerializer.Deserialize>( notificationJson, _deserializerOptions); if (syncNotification.Payload.InstallationId.HasValue) { diff --git a/test/Api.Test/Controllers/PushControllerTests.cs b/test/Api.Test/Controllers/PushControllerTests.cs index f8751d8bef..1dc5c833dd 100644 --- a/test/Api.Test/Controllers/PushControllerTests.cs +++ b/test/Api.Test/Controllers/PushControllerTests.cs @@ -33,7 +33,7 @@ public class PushControllerTests var exception = await Assert.ThrowsAsync(() => sutProvider.Sut.SendAsync(new PushSendRequestModel { - Type = PushType.SyncNotificationCreate, + Type = PushType.SyncNotification, UserId = userId.ToString(), OrganizationId = organizationId.ToString(), InstallationId = installationId.ToString(), @@ -63,7 +63,7 @@ public class PushControllerTests await sutProvider.Sut.SendAsync(new PushSendRequestModel { - Type = PushType.SyncNotificationCreate, + Type = PushType.SyncNotification, UserId = null, OrganizationId = null, InstallationId = null, @@ -96,7 +96,7 @@ public class PushControllerTests await sutProvider.Sut.SendAsync(new PushSendRequestModel { - Type = PushType.SyncNotificationCreate, + Type = PushType.SyncNotification, UserId = userId.ToString(), OrganizationId = haveOrganizationId ? Guid.NewGuid().ToString() : null, InstallationId = null, @@ -107,7 +107,7 @@ public class PushControllerTests }); await sutProvider.GetDependency().Received(1) - .SendPayloadToUserAsync(expectedUserId, PushType.SyncNotificationCreate, "test-payload", expectedIdentifier, + .SendPayloadToUserAsync(expectedUserId, PushType.SyncNotification, "test-payload", expectedIdentifier, expectedDeviceId, ClientType.All); await sutProvider.GetDependency().Received(0) .SendPayloadToOrganizationAsync(Arg.Any(), Arg.Any(), Arg.Any(), @@ -132,7 +132,7 @@ public class PushControllerTests await sutProvider.Sut.SendAsync(new PushSendRequestModel { - Type = PushType.SyncNotificationCreate, + Type = PushType.SyncNotification, UserId = null, OrganizationId = organizationId.ToString(), InstallationId = null, @@ -143,7 +143,7 @@ public class PushControllerTests }); await sutProvider.GetDependency().Received(1) - .SendPayloadToOrganizationAsync(expectedOrganizationId, PushType.SyncNotificationCreate, "test-payload", + .SendPayloadToOrganizationAsync(expectedOrganizationId, PushType.SyncNotification, "test-payload", expectedIdentifier, expectedDeviceId, ClientType.All); await sutProvider.GetDependency().Received(0) .SendPayloadToUserAsync(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -166,7 +166,7 @@ public class PushControllerTests await sutProvider.Sut.SendAsync(new PushSendRequestModel { - Type = PushType.SyncNotificationCreate, + Type = PushType.SyncNotification, UserId = null, OrganizationId = null, InstallationId = installationId.ToString(), @@ -177,7 +177,7 @@ public class PushControllerTests }); await sutProvider.GetDependency().Received(1) - .SendPayloadToInstallationAsync(installationId.ToString(), PushType.SyncNotificationCreate, "test-payload", + .SendPayloadToInstallationAsync(installationId.ToString(), PushType.SyncNotification, "test-payload", expectedIdentifier, expectedDeviceId, ClientType.All); await sutProvider.GetDependency().Received(0) .SendPayloadToOrganizationAsync(Arg.Any(), Arg.Any(), Arg.Any(), @@ -198,7 +198,7 @@ public class PushControllerTests var exception = await Assert.ThrowsAsync(() => sutProvider.Sut.SendAsync(new PushSendRequestModel { - Type = PushType.SyncNotificationCreate, + Type = PushType.SyncNotification, UserId = null, OrganizationId = null, InstallationId = Guid.NewGuid().ToString(), diff --git a/test/Core.Test/NotificationCenter/Commands/CreateNotificationCommandTest.cs b/test/Core.Test/NotificationCenter/Commands/CreateNotificationCommandTest.cs index 05e18b4385..dd0f2d33f9 100644 --- a/test/Core.Test/NotificationCenter/Commands/CreateNotificationCommandTest.cs +++ b/test/Core.Test/NotificationCenter/Commands/CreateNotificationCommandTest.cs @@ -43,7 +43,10 @@ public class CreateNotificationCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.CreateAsync(notification)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationCreateAsync(Arg.Any()); + .PushNotificationAsync(Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); } [Theory] @@ -61,6 +64,9 @@ public class CreateNotificationCommandTest Assert.Equal(notification.CreationDate, notification.RevisionDate); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationCreateAsync(newNotification); + .PushNotificationAsync(newNotification); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); } } diff --git a/test/Core.Test/NotificationCenter/Commands/CreateNotificationStatusCommandTest.cs b/test/Core.Test/NotificationCenter/Commands/CreateNotificationStatusCommandTest.cs index 80ad31ead2..11cde15e2e 100644 --- a/test/Core.Test/NotificationCenter/Commands/CreateNotificationStatusCommandTest.cs +++ b/test/Core.Test/NotificationCenter/Commands/CreateNotificationStatusCommandTest.cs @@ -53,7 +53,10 @@ public class CreateNotificationStatusCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.CreateAsync(notificationStatus)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -67,7 +70,10 @@ public class CreateNotificationStatusCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.CreateAsync(notificationStatus)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -81,7 +87,10 @@ public class CreateNotificationStatusCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.CreateAsync(notificationStatus)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -97,6 +106,9 @@ public class CreateNotificationStatusCommandTest Assert.Equal(notificationStatus, newNotificationStatus); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationUpdateAsync(notification, notificationStatus); + .PushNotificationStatusAsync(notification, notificationStatus); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } } diff --git a/test/Core.Test/NotificationCenter/Commands/MarkNotificationDeletedCommandTest.cs b/test/Core.Test/NotificationCenter/Commands/MarkNotificationDeletedCommandTest.cs index 15a2807e55..924cd38351 100644 --- a/test/Core.Test/NotificationCenter/Commands/MarkNotificationDeletedCommandTest.cs +++ b/test/Core.Test/NotificationCenter/Commands/MarkNotificationDeletedCommandTest.cs @@ -66,7 +66,10 @@ public class MarkNotificationDeletedCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkDeletedAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -80,7 +83,10 @@ public class MarkNotificationDeletedCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkDeletedAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -95,7 +101,10 @@ public class MarkNotificationDeletedCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkDeletedAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -110,7 +119,10 @@ public class MarkNotificationDeletedCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkDeletedAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -125,7 +137,10 @@ public class MarkNotificationDeletedCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkDeletedAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -149,8 +164,11 @@ public class MarkNotificationDeletedCommandTest .CreateAsync(Arg.Do(ns => AssertNotificationStatus(expectedNotificationStatus, ns))); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationUpdateAsync(notification, + .PushNotificationStatusAsync(notification, Arg.Do(ns => AssertNotificationStatus(expectedNotificationStatus, ns))); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -167,8 +185,11 @@ public class MarkNotificationDeletedCommandTest .UpdateAsync(Arg.Do(ns => AssertNotificationStatus(notificationStatus, ns))); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationUpdateAsync(notification, - Arg.Do(ns => AssertNotificationStatus(notificationStatus, ns))); + .PushNotificationStatusAsync(notification, + Arg.Do(ns => AssertNotificationStatus(notificationStatus, ns))); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } private static void AssertNotificationStatus(NotificationStatus expectedNotificationStatus, diff --git a/test/Core.Test/NotificationCenter/Commands/MarkNotificationReadCommandTest.cs b/test/Core.Test/NotificationCenter/Commands/MarkNotificationReadCommandTest.cs index f6b0c58803..2fef97b115 100644 --- a/test/Core.Test/NotificationCenter/Commands/MarkNotificationReadCommandTest.cs +++ b/test/Core.Test/NotificationCenter/Commands/MarkNotificationReadCommandTest.cs @@ -66,7 +66,10 @@ public class MarkNotificationReadCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkReadAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -80,7 +83,10 @@ public class MarkNotificationReadCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkReadAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -95,7 +101,10 @@ public class MarkNotificationReadCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkReadAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -110,7 +119,10 @@ public class MarkNotificationReadCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkReadAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -125,7 +137,10 @@ public class MarkNotificationReadCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.MarkReadAsync(notificationId)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -149,8 +164,11 @@ public class MarkNotificationReadCommandTest .CreateAsync(Arg.Do(ns => AssertNotificationStatus(expectedNotificationStatus, ns))); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationUpdateAsync(notification, + .PushNotificationStatusAsync(notification, Arg.Do(ns => AssertNotificationStatus(expectedNotificationStatus, ns))); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } [Theory] @@ -167,8 +185,11 @@ public class MarkNotificationReadCommandTest .UpdateAsync(Arg.Do(ns => AssertNotificationStatus(notificationStatus, ns))); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationUpdateAsync(notification, - Arg.Do(ns => AssertNotificationStatus(notificationStatus, ns))); + .PushNotificationStatusAsync(notification, + Arg.Do(ns => AssertNotificationStatus(notificationStatus, ns))); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationAsync(Arg.Any()); } private static void AssertNotificationStatus(NotificationStatus expectedNotificationStatus, diff --git a/test/Core.Test/NotificationCenter/Commands/UpdateNotificationCommandTest.cs b/test/Core.Test/NotificationCenter/Commands/UpdateNotificationCommandTest.cs index d45233b6d1..5025282160 100644 --- a/test/Core.Test/NotificationCenter/Commands/UpdateNotificationCommandTest.cs +++ b/test/Core.Test/NotificationCenter/Commands/UpdateNotificationCommandTest.cs @@ -48,7 +48,10 @@ public class UpdateNotificationCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.UpdateAsync(notification)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationAsync(Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); } [Theory] @@ -62,7 +65,10 @@ public class UpdateNotificationCommandTest await Assert.ThrowsAsync(() => sutProvider.Sut.UpdateAsync(notification)); await sutProvider.GetDependency() .Received(0) - .PushSyncNotificationUpdateAsync(Arg.Any(), Arg.Any()); + .PushNotificationAsync(Arg.Any()); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); } [Theory] @@ -100,6 +106,9 @@ public class UpdateNotificationCommandTest DateTime.UtcNow - n.RevisionDate < TimeSpan.FromMinutes(1))); await sutProvider.GetDependency() .Received(1) - .PushSyncNotificationUpdateAsync(notification, null); + .PushNotificationAsync(notification); + await sutProvider.GetDependency() + .Received(0) + .PushNotificationStatusAsync(Arg.Any(), Arg.Any()); } } diff --git a/test/Core.Test/NotificationHub/NotificationHubPushNotificationServiceTests.cs b/test/Core.Test/NotificationHub/NotificationHubPushNotificationServiceTests.cs index b46e18389a..7ed5712db4 100644 --- a/test/Core.Test/NotificationHub/NotificationHubPushNotificationServiceTests.cs +++ b/test/Core.Test/NotificationHub/NotificationHubPushNotificationServiceTests.cs @@ -22,12 +22,12 @@ public class NotificationHubPushNotificationServiceTests [Theory] [BitAutoData] [NotificationCustomize] - public async Task PushSyncNotificationCreateAsync_GlobalInstallationIdDefault_NotSent( + public async Task PushNotificationAsync_GlobalInstallationIdDefault_NotSent( SutProvider sutProvider, Notification notification) { sutProvider.GetDependency().Installation.Id = default; - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); await sutProvider.GetDependency() .Received(0) @@ -42,17 +42,16 @@ public class NotificationHubPushNotificationServiceTests [Theory] [BitAutoData] [NotificationCustomize] - public async Task PushSyncNotificationCreateAsync_GlobalInstallationIdSetClientTypeAll_SentToInstallationId( + public async Task PushNotificationAsync_GlobalInstallationIdSetClientTypeAll_SentToInstallationId( SutProvider sutProvider, Notification notification, Guid installationId) { sutProvider.GetDependency().Installation.Id = installationId; notification.ClientType = ClientType.All; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); - expectedSyncNotification.InstallationId = installationId; + var expectedSyncNotification = ToNotificationPushNotification(notification, null, installationId); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload && installationId:{installationId})"); await sutProvider.GetDependency() @@ -66,19 +65,17 @@ public class NotificationHubPushNotificationServiceTests [BitAutoData(ClientType.Web)] [BitAutoData(ClientType.Mobile)] [NotificationCustomize] - public async Task - PushSyncNotificationCreateAsync_GlobalInstallationIdSetClientTypeNotAll_SentToInstallationIdAndClientType( - ClientType clientType, SutProvider sutProvider, - Notification notification, Guid installationId) + public async Task PushNotificationAsync_GlobalInstallationIdSetClientTypeNotAll_SentToInstallationIdAndClientType( + ClientType clientType, SutProvider sutProvider, + Notification notification, Guid installationId) { sutProvider.GetDependency().Installation.Id = installationId; notification.ClientType = clientType; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); - expectedSyncNotification.InstallationId = installationId; + var expectedSyncNotification = ToNotificationPushNotification(notification, null, installationId); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload && installationId:{installationId} && clientType:{clientType})"); await sutProvider.GetDependency() @@ -90,7 +87,7 @@ public class NotificationHubPushNotificationServiceTests [BitAutoData(false)] [BitAutoData(true)] [NotificationCustomize(false)] - public async Task PushSyncNotificationCreateAsync_UserIdProvidedClientTypeAll_SentToUser( + public async Task PushNotificationAsync_UserIdProvidedClientTypeAll_SentToUser( bool organizationIdNull, SutProvider sutProvider, Notification notification) { @@ -100,11 +97,11 @@ public class NotificationHubPushNotificationServiceTests } notification.ClientType = ClientType.All; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); + var expectedSyncNotification = ToNotificationPushNotification(notification, null, null); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload_userId:{notification.UserId})"); await sutProvider.GetDependency() @@ -118,17 +115,17 @@ public class NotificationHubPushNotificationServiceTests [BitAutoData(ClientType.Web)] [BitAutoData(ClientType.Mobile)] [NotificationCustomize(false)] - public async Task PushSyncNotificationCreateAsync_UserIdProvidedOrganizationIdNullClientTypeNotAll_SentToUser( + public async Task PushNotificationAsync_UserIdProvidedOrganizationIdNullClientTypeNotAll_SentToUser( ClientType clientType, SutProvider sutProvider, Notification notification) { notification.OrganizationId = null; notification.ClientType = clientType; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); + var expectedSyncNotification = ToNotificationPushNotification(notification, null, null); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload_userId:{notification.UserId} && clientType:{clientType})"); await sutProvider.GetDependency() @@ -142,16 +139,16 @@ public class NotificationHubPushNotificationServiceTests [BitAutoData(ClientType.Web)] [BitAutoData(ClientType.Mobile)] [NotificationCustomize(false)] - public async Task PushSyncNotificationCreateAsync_UserIdProvidedOrganizationIdProvidedClientTypeNotAll_SentToUser( + public async Task PushNotificationAsync_UserIdProvidedOrganizationIdProvidedClientTypeNotAll_SentToUser( ClientType clientType, SutProvider sutProvider, Notification notification) { notification.ClientType = clientType; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); + var expectedSyncNotification = ToNotificationPushNotification(notification, null, null); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload_userId:{notification.UserId} && clientType:{clientType})"); await sutProvider.GetDependency() @@ -162,16 +159,16 @@ public class NotificationHubPushNotificationServiceTests [Theory] [BitAutoData] [NotificationCustomize(false)] - public async Task PushSyncNotificationCreateAsync_UserIdNullOrganizationIdProvidedClientTypeAll_SentToOrganization( + public async Task PushNotificationAsync_UserIdNullOrganizationIdProvidedClientTypeAll_SentToOrganization( SutProvider sutProvider, Notification notification) { notification.UserId = null; notification.ClientType = ClientType.All; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); + var expectedSyncNotification = ToNotificationPushNotification(notification, null, null); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload && organizationId:{notification.OrganizationId})"); await sutProvider.GetDependency() @@ -185,18 +182,17 @@ public class NotificationHubPushNotificationServiceTests [BitAutoData(ClientType.Web)] [BitAutoData(ClientType.Mobile)] [NotificationCustomize(false)] - public async Task - PushSyncNotificationCreateAsync_UserIdNullOrganizationIdProvidedClientTypeNotAll_SentToOrganization( - ClientType clientType, SutProvider sutProvider, - Notification notification) + public async Task PushNotificationAsync_UserIdNullOrganizationIdProvidedClientTypeNotAll_SentToOrganization( + ClientType clientType, SutProvider sutProvider, + Notification notification) { notification.UserId = null; notification.ClientType = clientType; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, null); + var expectedSyncNotification = ToNotificationPushNotification(notification, null, null); - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationCreate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotification, expectedSyncNotification, $"(template:payload && organizationId:{notification.OrganizationId} && clientType:{clientType})"); await sutProvider.GetDependency() @@ -205,17 +201,15 @@ public class NotificationHubPushNotificationServiceTests } [Theory] - [BitAutoData(false)] - [BitAutoData(true)] + [BitAutoData] [NotificationCustomize] - public async Task PushSyncNotificationUpdateAsync_GlobalInstallationIdDefault_NotSent(bool notificationStatusNull, + public async Task PushNotificationStatusAsync_GlobalInstallationIdDefault_NotSent( SutProvider sutProvider, Notification notification, NotificationStatus notificationStatus) { sutProvider.GetDependency().Installation.Id = default; - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, - notificationStatusNull ? null : notificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); await sutProvider.GetDependency() .Received(0) @@ -228,23 +222,20 @@ public class NotificationHubPushNotificationServiceTests } [Theory] - [BitAutoData(false)] - [BitAutoData(true)] + [BitAutoData] [NotificationCustomize] - public async Task PushSyncNotificationUpdateAsync_GlobalInstallationIdSetClientTypeAll_SentToInstallationId( - bool notificationStatusNull, SutProvider sutProvider, + public async Task PushNotificationStatusAsync_GlobalInstallationIdSetClientTypeAll_SentToInstallationId( + SutProvider sutProvider, Notification notification, NotificationStatus notificationStatus, Guid installationId) { sutProvider.GetDependency().Installation.Id = installationId; notification.ClientType = ClientType.All; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); - expectedSyncNotification.InstallationId = installationId; + var expectedSyncNotification = ToNotificationPushNotification(notification, notificationStatus, installationId); - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, expectedSyncNotification, $"(template:payload && installationId:{installationId})"); await sutProvider.GetDependency() @@ -253,25 +244,24 @@ public class NotificationHubPushNotificationServiceTests } [Theory] - [RepeatingPatternBitAutoData([false, true], - [ClientType.Browser, ClientType.Desktop, ClientType.Web, ClientType.Mobile])] + [BitAutoData(ClientType.Browser)] + [BitAutoData(ClientType.Desktop)] + [BitAutoData(ClientType.Web)] + [BitAutoData(ClientType.Mobile)] [NotificationCustomize] public async Task - PushSyncNotificationUpdateAsync_GlobalInstallationIdSetClientTypeNotAll_SentToInstallationIdAndClientType( - bool notificationStatusNull, ClientType clientType, - SutProvider sutProvider, + PushNotificationStatusAsync_GlobalInstallationIdSetClientTypeNotAll_SentToInstallationIdAndClientType( + ClientType clientType, SutProvider sutProvider, Notification notification, NotificationStatus notificationStatus, Guid installationId) { sutProvider.GetDependency().Installation.Id = installationId; notification.ClientType = clientType; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); - expectedSyncNotification.InstallationId = installationId; + var expectedSyncNotification = ToNotificationPushNotification(notification, notificationStatus, installationId); - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, expectedSyncNotification, $"(template:payload && installationId:{installationId} && clientType:{clientType})"); await sutProvider.GetDependency() @@ -279,97 +269,94 @@ public class NotificationHubPushNotificationServiceTests .UpsertAsync(Arg.Any()); } - [Theory] - [RepeatingPatternBitAutoData([false, true], [false, true])] - [NotificationCustomize(false)] - public async Task PushSyncNotificationUpdateAsync_UserIdProvidedClientTypeAll_SentToUser( - bool organizationIdNull, bool notificationStatusNull, - SutProvider sutProvider, - Notification notification, NotificationStatus notificationStatus) - { - if (organizationIdNull) - { - notification.OrganizationId = null; - } - - notification.ClientType = ClientType.All; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); - - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); - - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, - expectedSyncNotification, - $"(template:payload_userId:{notification.UserId})"); - await sutProvider.GetDependency() - .Received(0) - .UpsertAsync(Arg.Any()); - } - - [Theory] - [RepeatingPatternBitAutoData([false, true], - [ClientType.Browser, ClientType.Desktop, ClientType.Web, ClientType.Mobile])] - [NotificationCustomize(false)] - public async Task PushSyncNotificationUpdateAsync_UserIdProvidedOrganizationIdNullClientTypeNotAll_SentToUser( - bool notificationStatusNull, ClientType clientType, - SutProvider sutProvider, Notification notification, - NotificationStatus notificationStatus) - { - notification.OrganizationId = null; - notification.ClientType = clientType; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); - - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); - - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, - expectedSyncNotification, - $"(template:payload_userId:{notification.UserId} && clientType:{clientType})"); - await sutProvider.GetDependency() - .Received(0) - .UpsertAsync(Arg.Any()); - } - - [Theory] - [RepeatingPatternBitAutoData([false, true], - [ClientType.Browser, ClientType.Desktop, ClientType.Web, ClientType.Mobile])] - [NotificationCustomize(false)] - public async Task PushSyncNotificationUpdateAsync_UserIdProvidedOrganizationIdProvidedClientTypeNotAll_SentToUser( - bool notificationStatusNull, ClientType clientType, - SutProvider sutProvider, - Notification notification, NotificationStatus notificationStatus) - { - notification.ClientType = clientType; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); - - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); - - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, - expectedSyncNotification, - $"(template:payload_userId:{notification.UserId} && clientType:{clientType})"); - await sutProvider.GetDependency() - .Received(0) - .UpsertAsync(Arg.Any()); - } - [Theory] [BitAutoData(false)] [BitAutoData(true)] [NotificationCustomize(false)] - public async Task PushSyncNotificationUpdateAsync_UserIdNullOrganizationIdProvidedClientTypeAll_SentToOrganization( - bool notificationStatusNull, SutProvider sutProvider, + public async Task PushNotificationStatusAsync_UserIdProvidedClientTypeAll_SentToUser( + bool organizationIdNull, SutProvider sutProvider, Notification notification, NotificationStatus notificationStatus) + { + if (organizationIdNull) + { + notification.OrganizationId = null; + } + + notification.ClientType = ClientType.All; + var expectedSyncNotification = ToNotificationPushNotification(notification, notificationStatus, null); + + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); + + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, + expectedSyncNotification, + $"(template:payload_userId:{notification.UserId})"); + await sutProvider.GetDependency() + .Received(0) + .UpsertAsync(Arg.Any()); + } + + [Theory] + [BitAutoData(ClientType.Browser)] + [BitAutoData(ClientType.Desktop)] + [BitAutoData(ClientType.Web)] + [BitAutoData(ClientType.Mobile)] + [NotificationCustomize(false)] + public async Task PushNotificationStatusAsync_UserIdProvidedOrganizationIdNullClientTypeNotAll_SentToUser( + ClientType clientType, SutProvider sutProvider, + Notification notification, NotificationStatus notificationStatus) + { + notification.OrganizationId = null; + notification.ClientType = clientType; + var expectedNotification = ToNotificationPushNotification(notification, notificationStatus, null); + + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); + + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, + expectedNotification, + $"(template:payload_userId:{notification.UserId} && clientType:{clientType})"); + await sutProvider.GetDependency() + .Received(0) + .UpsertAsync(Arg.Any()); + } + + [Theory] + [BitAutoData(ClientType.Browser)] + [BitAutoData(ClientType.Desktop)] + [BitAutoData(ClientType.Web)] + [BitAutoData(ClientType.Mobile)] + [NotificationCustomize(false)] + public async Task PushNotificationStatusAsync_UserIdProvidedOrganizationIdProvidedClientTypeNotAll_SentToUser( + ClientType clientType, SutProvider sutProvider, + Notification notification, NotificationStatus notificationStatus) + { + notification.ClientType = clientType; + var expectedNotification = ToNotificationPushNotification(notification, notificationStatus, null); + + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); + + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, + expectedNotification, + $"(template:payload_userId:{notification.UserId} && clientType:{clientType})"); + await sutProvider.GetDependency() + .Received(0) + .UpsertAsync(Arg.Any()); + } + + [Theory] + [BitAutoData] + [NotificationCustomize(false)] + public async Task PushNotificationStatusAsync_UserIdNullOrganizationIdProvidedClientTypeAll_SentToOrganization( + SutProvider sutProvider, Notification notification, + NotificationStatus notificationStatus) { notification.UserId = null; notification.ClientType = ClientType.All; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); + var expectedNotification = ToNotificationPushNotification(notification, notificationStatus, null); - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, - expectedSyncNotification, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, + expectedNotification, $"(template:payload && organizationId:{notification.OrganizationId})"); await sutProvider.GetDependency() .Received(0) @@ -377,24 +364,24 @@ public class NotificationHubPushNotificationServiceTests } [Theory] - [RepeatingPatternBitAutoData([false, true], - [ClientType.Browser, ClientType.Desktop, ClientType.Web, ClientType.Mobile])] + [BitAutoData(ClientType.Browser)] + [BitAutoData(ClientType.Desktop)] + [BitAutoData(ClientType.Web)] + [BitAutoData(ClientType.Mobile)] [NotificationCustomize(false)] public async Task - PushSyncNotificationUpdateAsync_UserIdNullOrganizationIdProvidedClientTypeNotAll_SentToOrganization( - bool notificationStatusNull, ClientType clientType, - SutProvider sutProvider, Notification notification, - NotificationStatus notificationStatus) + PushNotificationStatusAsync_UserIdNullOrganizationIdProvidedClientTypeNotAll_SentToOrganization( + ClientType clientType, SutProvider sutProvider, + Notification notification, NotificationStatus notificationStatus) { notification.UserId = null; notification.ClientType = clientType; - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; - var expectedSyncNotification = ToSyncNotificationPushNotification(notification, expectedNotificationStatus); + var expectedNotification = ToNotificationPushNotification(notification, notificationStatus, null); - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); - await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationUpdate, - expectedSyncNotification, + await AssertSendTemplateNotificationAsync(sutProvider, PushType.SyncNotificationStatus, + expectedNotification, $"(template:payload && organizationId:{notification.OrganizationId} && clientType:{clientType})"); await sutProvider.GetDependency() .Received(0) @@ -509,14 +496,20 @@ public class NotificationHubPushNotificationServiceTests .UpsertAsync(Arg.Any()); } - private static SyncNotificationPushNotification ToSyncNotificationPushNotification(Notification notification, - NotificationStatus? notificationStatus) => + private static NotificationPushNotification ToNotificationPushNotification(Notification notification, + NotificationStatus? notificationStatus, Guid? installationId) => new() { Id = notification.Id, + Priority = notification.Priority, + Global = notification.Global, + ClientType = notification.ClientType, UserId = notification.UserId, OrganizationId = notification.OrganizationId, - ClientType = notification.ClientType, + InstallationId = installationId, + Title = notification.Title, + Body = notification.Body, + CreationDate = notification.CreationDate, RevisionDate = notification.RevisionDate, ReadDate = notificationStatus?.ReadDate, DeletedDate = notificationStatus?.DeletedDate diff --git a/test/Core.Test/Services/AzureQueuePushNotificationServiceTests.cs b/test/Core.Test/Services/AzureQueuePushNotificationServiceTests.cs index 70d5e95252..5128cf530e 100644 --- a/test/Core.Test/Services/AzureQueuePushNotificationServiceTests.cs +++ b/test/Core.Test/Services/AzureQueuePushNotificationServiceTests.cs @@ -26,7 +26,7 @@ public class AzureQueuePushNotificationServiceTests [BitAutoData] [NotificationCustomize] [CurrentContextCustomize] - public async Task PushSyncNotificationCreateAsync_NotificationGlobal_Sent( + public async Task PushNotificationAsync_NotificationGlobal_Sent( SutProvider sutProvider, Notification notification, Guid deviceIdentifier, ICurrentContext currentContext, Guid installationId) { @@ -35,12 +35,12 @@ public class AzureQueuePushNotificationServiceTests .GetService(Arg.Any()).Returns(currentContext); sutProvider.GetDependency().Installation.Id = installationId; - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); await sutProvider.GetDependency().Received(1) .SendMessageAsync(Arg.Is(message => - MatchMessage(PushType.SyncNotificationCreate, message, - new SyncNotificationEquals(notification, null, installationId), + MatchMessage(PushType.SyncNotification, message, + new NotificationPushNotificationEquals(notification, null, installationId), deviceIdentifier.ToString()))); } @@ -48,7 +48,7 @@ public class AzureQueuePushNotificationServiceTests [BitAutoData] [NotificationCustomize(false)] [CurrentContextCustomize] - public async Task PushSyncNotificationCreateAsync_NotificationNotGlobal_Sent( + public async Task PushNotificationAsync_NotificationNotGlobal_Sent( SutProvider sutProvider, Notification notification, Guid deviceIdentifier, ICurrentContext currentContext, Guid installationId) { @@ -57,90 +57,92 @@ public class AzureQueuePushNotificationServiceTests .GetService(Arg.Any()).Returns(currentContext); sutProvider.GetDependency().Installation.Id = installationId; - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); await sutProvider.GetDependency().Received(1) .SendMessageAsync(Arg.Is(message => - MatchMessage(PushType.SyncNotificationCreate, message, - new SyncNotificationEquals(notification, null, null), + MatchMessage(PushType.SyncNotification, message, + new NotificationPushNotificationEquals(notification, null, null), deviceIdentifier.ToString()))); } [Theory] - [BitAutoData(false)] - [BitAutoData(true)] + [BitAutoData] [NotificationCustomize] [NotificationStatusCustomize] [CurrentContextCustomize] - public async Task PushSyncNotificationUpdateAsync_NotificationGlobal_Sent(bool notificationStatusNull, + public async Task PushNotificationStatusAsync_NotificationGlobal_Sent( SutProvider sutProvider, Notification notification, Guid deviceIdentifier, ICurrentContext currentContext, NotificationStatus notificationStatus, Guid installationId) { - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; currentContext.DeviceIdentifier.Returns(deviceIdentifier.ToString()); sutProvider.GetDependency().HttpContext!.RequestServices .GetService(Arg.Any()).Returns(currentContext); sutProvider.GetDependency().Installation.Id = installationId; - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); await sutProvider.GetDependency().Received(1) .SendMessageAsync(Arg.Is(message => - MatchMessage(PushType.SyncNotificationUpdate, message, - new SyncNotificationEquals(notification, expectedNotificationStatus, installationId), + MatchMessage(PushType.SyncNotificationStatus, message, + new NotificationPushNotificationEquals(notification, notificationStatus, installationId), deviceIdentifier.ToString()))); } [Theory] - [BitAutoData(false)] - [BitAutoData(true)] + [BitAutoData] [NotificationCustomize(false)] [NotificationStatusCustomize] [CurrentContextCustomize] - public async Task PushSyncNotificationUpdateAsync_NotificationNotGlobal_Sent(bool notificationStatusNull, + public async Task PushNotificationStatusAsync_NotificationNotGlobal_Sent( SutProvider sutProvider, Notification notification, Guid deviceIdentifier, ICurrentContext currentContext, NotificationStatus notificationStatus, Guid installationId) { - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; currentContext.DeviceIdentifier.Returns(deviceIdentifier.ToString()); sutProvider.GetDependency().HttpContext!.RequestServices .GetService(Arg.Any()).Returns(currentContext); sutProvider.GetDependency().Installation.Id = installationId; - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); await sutProvider.GetDependency().Received(1) .SendMessageAsync(Arg.Is(message => - MatchMessage(PushType.SyncNotificationUpdate, message, - new SyncNotificationEquals(notification, expectedNotificationStatus, null), + MatchMessage(PushType.SyncNotificationStatus, message, + new NotificationPushNotificationEquals(notification, notificationStatus, null), deviceIdentifier.ToString()))); } private static bool MatchMessage(PushType pushType, string message, IEquatable expectedPayloadEquatable, string contextId) { - var pushNotificationData = - JsonSerializer.Deserialize>(message); + var pushNotificationData = JsonSerializer.Deserialize>(message); return pushNotificationData != null && pushNotificationData.Type == pushType && expectedPayloadEquatable.Equals(pushNotificationData.Payload) && pushNotificationData.ContextId == contextId; } - private class SyncNotificationEquals( + private class NotificationPushNotificationEquals( Notification notification, NotificationStatus? notificationStatus, Guid? installationId) - : IEquatable + : IEquatable { - public bool Equals(SyncNotificationPushNotification? other) + public bool Equals(NotificationPushNotification? other) { return other != null && other.Id == notification.Id && + other.Priority == notification.Priority && + other.Global == notification.Global && + other.ClientType == notification.ClientType && + other.UserId.HasValue == notification.UserId.HasValue && other.UserId == notification.UserId && + other.OrganizationId.HasValue == notification.OrganizationId.HasValue && other.OrganizationId == notification.OrganizationId && other.InstallationId == installationId && - other.ClientType == notification.ClientType && + other.Title == notification.Title && + other.Body == notification.Body && + other.CreationDate == notification.CreationDate && other.RevisionDate == notification.RevisionDate && other.ReadDate == notificationStatus?.ReadDate && other.DeletedDate == notificationStatus?.DeletedDate; diff --git a/test/Core.Test/Services/MultiServicePushNotificationServiceTests.cs b/test/Core.Test/Services/MultiServicePushNotificationServiceTests.cs index db6661899f..3bb9542597 100644 --- a/test/Core.Test/Services/MultiServicePushNotificationServiceTests.cs +++ b/test/Core.Test/Services/MultiServicePushNotificationServiceTests.cs @@ -16,34 +16,31 @@ public class MultiServicePushNotificationServiceTests [Theory] [BitAutoData] [NotificationCustomize] - public async Task PushSyncNotificationCreateAsync_Notification_Sent( + public async Task PushNotificationAsync_Notification_Sent( SutProvider sutProvider, Notification notification) { - await sutProvider.Sut.PushSyncNotificationCreateAsync(notification); + await sutProvider.Sut.PushNotificationAsync(notification); await sutProvider.GetDependency>() .First() .Received(1) - .PushSyncNotificationCreateAsync(notification); + .PushNotificationAsync(notification); } [Theory] - [BitAutoData(false)] - [BitAutoData(true)] + [BitAutoData] [NotificationCustomize] [NotificationStatusCustomize] - public async Task PushSyncNotificationUpdateAsync_Notification_Sent(bool notificationStatusNull, + public async Task PushNotificationStatusAsync_Notification_Sent( SutProvider sutProvider, Notification notification, NotificationStatus notificationStatus) { - await sutProvider.Sut.PushSyncNotificationUpdateAsync(notification, - notificationStatusNull ? null : notificationStatus); + await sutProvider.Sut.PushNotificationStatusAsync(notification, notificationStatus); - var expectedNotificationStatus = notificationStatusNull ? null : notificationStatus; await sutProvider.GetDependency>() .First() .Received(1) - .PushSyncNotificationUpdateAsync(notification, expectedNotificationStatus); + .PushNotificationStatusAsync(notification, notificationStatus); } [Theory]