using Bit.Api.Tools.Controllers; using Bit.Core.Context; using Bit.Core.Exceptions; using Bit.Core.Tools.ReportFeatures.Interfaces; using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture.Attributes; using NSubstitute; using Xunit; namespace Bit.Api.Test.Tools.Controllers; [ControllerCustomize(typeof(ReportsController))] [SutProviderCustomize] public class ReportsControllerTests { [Theory, BitAutoData] public async Task GetPasswordHealthReportApplicationAsync_Success(SutProvider sutProvider) { // Arrange sutProvider.GetDependency().AccessReports(Arg.Any()).Returns(true); // Act var orgId = Guid.NewGuid(); var result = await sutProvider.Sut.GetPasswordHealthReportApplications(orgId); // Assert _ = sutProvider.GetDependency() .Received(1) .GetPasswordHealthReportApplicationAsync(Arg.Is(_ => _ == orgId)); } [Theory, BitAutoData] public async Task GetPasswordHealthReportApplicationAsync_withoutAccess(SutProvider sutProvider) { // Arrange sutProvider.GetDependency().AccessReports(Arg.Any()).Returns(false); // Act & Assert var orgId = Guid.NewGuid(); await Assert.ThrowsAsync(async () => await sutProvider.Sut.GetPasswordHealthReportApplications(orgId)); // Assert _ = sutProvider.GetDependency() .Received(0); } }