/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Core.Tests/Controllers/AccessRightsControllerTests.cs
122 строки
5 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using FluentAssertions; using Gridient.Core.Models; using Gridient.Core.Tests.Controllers; using Gridient.Core.Tests.Helpers.TestDataBuilders; using Gridient.Infrastructure.Authorization.Local.Controllers; using Gridient.Infrastructure.Authorization.Local.Features.AccessRights.Commands; using Gridient.Infrastructure.Authorization.Local.Features.AccessRights.Queries; using Gridient.Infrastructure.Authorization.Local.Models; using MediatR; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace Gridient.Core.Tests.Controllers { public class AccessRightsControllerTests : ControllerTestBase { private readonly Mock<IMediator> _mediatorMock; private readonly AccessRightsController _controller; public AccessRightsControllerTests() { _mediatorMock = new Mock<IMediator>(); _controller = new AccessRightsController(_mediatorMock.Object); SetupControllerContext(_controller, "admin"); } #region GetUsersGroups /// <summary> /// Проверяет, что метод GetUsersGroups возвращает список пользователей с группами. /// </summary> [Fact] public async Task GetUsersGroups_ShouldReturnOkWithUsers() { // Arrange var cancellationToken = CancellationToken.None; var expectedUsers = new[] { new UserWithGroupsDto { Id = 1, Login = "user1", Groups = [] }, new UserWithGroupsDto { Id = 2, Login = "user2", Groups = [] } }; _mediatorMock .Setup(x => x.Send(It.IsAny<GetUsersGroupsQuery>(), cancellationToken)) .ReturnsAsync(expectedUsers); // Act var result = await _controller.GetUsersGroups(cancellationToken); // Assert result.Should().BeOfType<OkObjectResult>(); var okResult = result as OkObjectResult; okResult!.Value.Should().BeEquivalentTo(expectedUsers); _mediatorMock.Verify(x => x.Send(It.Is<GetUsersGroupsQuery>(q => q.Operation == "manage-system"), cancellationToken), Times.Once); } #endregion GetUsersGroups #region UpdateUserAccessRights /// <summary> /// Проверяет, что метод UpdateUserAccessRights успешно обновляет права доступа пользователя. /// </summary> [Fact] public async Task UpdateUserAccessRights_WithValidRequest_ShouldReturnOk() { // Arrange var userId = 1; var groups = new[] { AccessRightsServiceTestDataBuilder.CreateGroup(id: 1) }; var cancellationToken = CancellationToken.None; _mediatorMock .Setup(x => x.Send(It.IsAny<UpdateUserAccessRightsCommand>(), cancellationToken)) .Returns(Task.CompletedTask); // Act var result = await _controller.UpdateUserAccessRights(userId, groups, cancellationToken); // Assert result.Should().BeOfType<OkResult>(); _mediatorMock.Verify(x => x.Send( It.Is<UpdateUserAccessRightsCommand>(c => c.UserId == userId && c.Groups.Length == groups.Length && c.Operation == "manage-system"), cancellationToken), Times.Once); } #endregion #region DeleteUserAccessRights /// <summary> /// Проверяет, что метод DeleteUserAccessRights успешно удаляет права доступа пользователя. /// </summary> [Fact] public async Task DeleteUserAccessRights_WithValidUserId_ShouldReturnOk() { // Arrange var userId = 1; var cancellationToken = CancellationToken.None; _mediatorMock .Setup(x => x.Send(It.IsAny<DeleteUserAccessRightsCommand>(), cancellationToken)) .Returns(Task.CompletedTask); // Act var result = await _controller.DeleteUserAccessRights(userId, cancellationToken); // Assert result.Should().BeOfType<OkResult>(); _mediatorMock.Verify(x => x.Send( It.Is<DeleteUserAccessRightsCommand>(c => c.UserId == userId && c.Operation == "manage-system"), cancellationToken), Times.Once); } #endregion } }