mirror of
https://github.com/bitwarden/server.git
synced 2025-04-04 20:50:21 -05:00

* PM-10563: Notification Center API * PM-10563: continuation token hack * PM-10563: Resolving merge conflicts * PM-10563: Unit Tests * PM-10563: Paging simplification by page number and size in database * PM-10563: Request validation * PM-10563: Read, Deleted status filters change * PM-10563: Plural name for tests * PM-10563: Request validation to always for int type * PM-10563: Continuation Token returns null on response when no more records available * PM-10563: Integration tests for GET * PM-10563: Mark notification read, deleted commands date typos fix * PM-10563: Integration tests for PATCH read, deleted * PM-10563: Request, Response models tests * PM-10563: EditorConfig compliance * PM-10563: Extracting to const * PM-10563: Update db migration script date * PM-10563: Update migration script date
69 lines
3.0 KiB
C#
69 lines
3.0 KiB
C#
#nullable enable
|
|
using Bit.Core.Context;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Exceptions;
|
|
using Bit.Core.Models.Data;
|
|
using Bit.Core.NotificationCenter.Models.Data;
|
|
using Bit.Core.NotificationCenter.Models.Filter;
|
|
using Bit.Core.NotificationCenter.Queries;
|
|
using Bit.Core.NotificationCenter.Repositories;
|
|
using Bit.Core.Test.NotificationCenter.AutoFixture;
|
|
using Bit.Test.Common.AutoFixture;
|
|
using Bit.Test.Common.AutoFixture.Attributes;
|
|
using NSubstitute;
|
|
using Xunit;
|
|
|
|
namespace Bit.Core.Test.NotificationCenter.Queries;
|
|
|
|
[SutProviderCustomize]
|
|
[NotificationStatusDetailsCustomize]
|
|
public class GetNotificationStatusDetailsForUserQueryTest
|
|
{
|
|
private static void Setup(SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider,
|
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter statusFilter, Guid? userId,
|
|
PageOptions pageOptions, string? continuationToken)
|
|
{
|
|
sutProvider.GetDependency<ICurrentContext>().UserId.Returns(userId);
|
|
sutProvider.GetDependency<INotificationRepository>()
|
|
.GetByUserIdAndStatusAsync(userId.GetValueOrDefault(Guid.NewGuid()), Arg.Any<ClientType>(), statusFilter,
|
|
pageOptions)
|
|
.Returns(new PagedResult<NotificationStatusDetails>
|
|
{
|
|
Data = notificationsStatusDetails,
|
|
ContinuationToken = continuationToken
|
|
});
|
|
}
|
|
|
|
[Theory]
|
|
[BitAutoData]
|
|
public async Task GetByUserIdStatusFilterAsync_NotLoggedIn_NotFoundException(
|
|
SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider,
|
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter,
|
|
PageOptions pageOptions, string? continuationToken)
|
|
{
|
|
Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, userId: null, pageOptions,
|
|
continuationToken);
|
|
|
|
await Assert.ThrowsAsync<NotFoundException>(() =>
|
|
sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter, pageOptions));
|
|
}
|
|
|
|
[Theory]
|
|
[BitAutoData]
|
|
public async Task GetByUserIdStatusFilterAsync_NotificationsFound_Returned(
|
|
SutProvider<GetNotificationStatusDetailsForUserQuery> sutProvider,
|
|
List<NotificationStatusDetails> notificationsStatusDetails, NotificationStatusFilter notificationStatusFilter,
|
|
PageOptions pageOptions, string? continuationToken)
|
|
{
|
|
Setup(sutProvider, notificationsStatusDetails, notificationStatusFilter, Guid.NewGuid(), pageOptions,
|
|
continuationToken);
|
|
|
|
var actualNotificationsStatusDetailsPagedResult =
|
|
await sutProvider.Sut.GetByUserIdStatusFilterAsync(notificationStatusFilter, pageOptions);
|
|
|
|
Assert.NotNull(actualNotificationsStatusDetailsPagedResult);
|
|
Assert.Equal(notificationsStatusDetails, actualNotificationsStatusDetailsPagedResult.Data);
|
|
Assert.Equal(continuationToken, actualNotificationsStatusDetailsPagedResult.ContinuationToken);
|
|
}
|
|
}
|