1
0
mirror of https://github.com/bitwarden/server synced 2025-12-15 15:53:59 +00:00

[PM-23756] Report summary endpoints- mocked (#6092)

This commit is contained in:
Vijay Oommen
2025-07-21 13:44:40 -05:00
committed by GitHub
parent 765c02b7d2
commit 4963911d7e
3 changed files with 315 additions and 0 deletions

View File

@@ -1,12 +1,14 @@
using AutoFixture;
using Bit.Api.Dirt.Controllers;
using Bit.Api.Dirt.Models;
using Bit.Api.Dirt.Models.Response;
using Bit.Core.Context;
using Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;
using Bit.Core.Exceptions;
using Bit.Test.Common.AutoFixture;
using Bit.Test.Common.AutoFixture.Attributes;
using Microsoft.AspNetCore.Mvc;
using NSubstitute;
using Xunit;
@@ -280,4 +282,185 @@ public class ReportsControllerTests
_ = sutProvider.GetDependency<IGetOrganizationReportQuery>()
.Received(0);
}
[Theory, BitAutoData]
public void CreateOrganizationReportSummary_ReturnsNoContent_WhenAccessGranted(SutProvider<ReportsController> sutProvider)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key",
Date = DateTime.UtcNow
};
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(true);
// Act
var result = sutProvider.Sut.CreateOrganizationReportSummary(model);
// Assert
Assert.IsType<NoContentResult>(result);
}
[Theory, BitAutoData]
public void CreateOrganizationReportSummary_ThrowsNotFoundException_WhenAccessDenied(SutProvider<ReportsController> sutProvider)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key",
Date = DateTime.UtcNow
};
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(false);
// Act & Assert
Assert.Throws<Bit.Core.Exceptions.NotFoundException>(
() => sutProvider.Sut.CreateOrganizationReportSummary(model));
}
[Theory, BitAutoData]
public void GetOrganizationReportSummary_ThrowsNotFoundException_WhenAccessDenied(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(false);
// Act & Assert
Assert.Throws<Bit.Core.Exceptions.NotFoundException>(
() => sutProvider.Sut.GetOrganizationReportSummary(orgId, DateOnly.FromDateTime(DateTime.UtcNow), DateOnly.FromDateTime(DateTime.UtcNow)));
}
[Theory, BitAutoData]
public void GetOrganizationReportSummary_returnsExpectedResult(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
var dates = new[]
{
DateOnly.FromDateTime(DateTime.UtcNow),
DateOnly.FromDateTime(DateTime.UtcNow.AddMonths(-1))
};
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(true);
// Act
var result = sutProvider.Sut.GetOrganizationReportSummary(orgId, dates[0], dates[1]);
// Assert
Assert.NotNull(result);
}
[Theory, BitAutoData]
public void CreateOrganizationReportSummary_ReturnsNoContent_WhenModelIsValidAndAccessGranted(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key"
};
sutProvider.Sut.ModelState.Clear();
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(true);
// Act
var result = sutProvider.Sut.CreateOrganizationReportSummary(model);
// Assert
Assert.IsType<NoContentResult>(result);
}
[Theory, BitAutoData]
public void CreateOrganizationReportSummary_ThrowsBadRequestException_WhenModelStateIsInvalid(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key"
};
sutProvider.Sut.ModelState.AddModelError("key", "error");
// Act & Assert
Assert.Throws<BadRequestException>(() => sutProvider.Sut.CreateOrganizationReportSummary(model));
}
[Theory, BitAutoData]
public void UpdateOrganizationReportSummary_ReturnsNoContent_WhenModelIsValidAndAccessGranted(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key"
};
sutProvider.Sut.ModelState.Clear();
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(true);
// Act
var result = sutProvider.Sut.UpdateOrganizationReportSummary(model);
// Assert
Assert.IsType<NoContentResult>(result);
}
[Theory, BitAutoData]
public void UpdateOrganizationReportSummary_ThrowsBadRequestException_WhenModelStateIsInvalid(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key"
};
sutProvider.Sut.ModelState.AddModelError("key", "error");
// Act & Assert
Assert.Throws<BadRequestException>(() => sutProvider.Sut.UpdateOrganizationReportSummary(model));
}
[Theory, BitAutoData]
public void UpdateOrganizationReportSummary_ThrowsNotFoundException_WhenAccessDenied(
SutProvider<ReportsController> sutProvider
)
{
// Arrange
var orgId = Guid.NewGuid();
var model = new OrganizationReportSummaryModel
{
OrganizationId = orgId,
EncryptedData = "mock-data",
EncryptionKey = "mock-key"
};
sutProvider.Sut.ModelState.Clear();
sutProvider.GetDependency<ICurrentContext>().AccessReports(orgId).Returns(false);
// Act & Assert
Assert.Throws<NotFoundException>(() => sutProvider.Sut.UpdateOrganizationReportSummary(model));
}
}