/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Core.Tests/Controllers/AuthorizationControllerTests.cs
89 строк
3 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using FluentAssertions; using Gridient.Core.Authorization; using Gridient.Core.Controllers; using Gridient.Core.Features.Authorization.Commands; using MediatR; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace Gridient.Core.Tests.Controllers { public class AuthorizationControllerTests : ControllerTestBase { #region CheckAuthorization /// <summary> /// Проверяет, что CheckAuthorization возвращает Ok с результатами и вызывает MediatR. /// </summary> [Fact] public async Task CheckAuthorization_ShouldReturnOkWithResults() { var response = new AuthorizationCheckResponse { Results = new List<AuthorizationResult> { AuthorizationResult.Allowed(), AuthorizationResult.Allowed() } }; var mediatorMock = new Mock<IMediator>(); mediatorMock .Setup(m => m.Send(It.IsAny<CheckAuthorizationCommand>(), It.IsAny<CancellationToken>())) .ReturnsAsync(response); var controller = new AuthorizationController(mediatorMock.Object); SetupControllerContext(controller, "u"); var request = new AuthorizationCheckRequest { Contexts = { new AuthorizationContextDto { ResourceType = "list", Operation = "read", ResourceId = "1" }, new AuthorizationContextDto { ResourceType = "system", Operation = "manage-system" } } }; var result = await controller.CheckAuthorization(request, CancellationToken.None); result.Result.Should().BeOfType<OkObjectResult>(); var ok = (OkObjectResult)result.Result!; ok.Value.Should().BeOfType<AuthorizationCheckResponse>(); var model = (AuthorizationCheckResponse)ok.Value!; model.Results.Should().HaveCount(2); mediatorMock.Verify(m => m.Send(It.IsAny<CheckAuthorizationCommand>(), It.IsAny<CancellationToken>()), Times.Once); } /// <summary> /// Проверяет, что при пустом списке контекстов возвращается Ok с пустым списком результатов. /// </summary> [Fact] public async Task CheckAuthorization_WithEmptyContexts_ShouldReturnOkWithEmptyResults() { var response = new AuthorizationCheckResponse(); var mediatorMock = new Mock<IMediator>(); mediatorMock .Setup(m => m.Send(It.IsAny<CheckAuthorizationCommand>(), It.IsAny<CancellationToken>())) .ReturnsAsync(response); var controller = new AuthorizationController(mediatorMock.Object); SetupControllerContext(controller, "u"); var request = new AuthorizationCheckRequest { Contexts = new List<AuthorizationContextDto>() }; var result = await controller.CheckAuthorization(request, CancellationToken.None); result.Result.Should().BeOfType<OkObjectResult>(); var ok = (OkObjectResult)result.Result!; var model = (AuthorizationCheckResponse)ok.Value!; model.Results.Should().BeEmpty(); mediatorMock.Verify(m => m.Send(It.IsAny<CheckAuthorizationCommand>(), It.IsAny<CancellationToken>()), Times.Once); } #endregion } }