using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations; using Bit.Core.Exceptions; using Bit.Core.Repositories; using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture.Attributes; using NSubstitute; using Xunit; namespace Bit.Core.Test.AdminConsole.EventIntegrations.OrganizationIntegrationConfigurations; [SutProviderCustomize] public class GetOrganizationIntegrationConfigurationsQueryTests { [Theory, BitAutoData] public async Task GetManyByIntegrationAsync_Success_ReturnsConfigurations( SutProvider sutProvider, Guid organizationId, Guid integrationId, OrganizationIntegration integration, List configurations) { integration.Id = integrationId; integration.OrganizationId = organizationId; sutProvider.GetDependency() .GetByIdAsync(integrationId) .Returns(integration); sutProvider.GetDependency() .GetManyByIntegrationAsync(integrationId) .Returns(configurations); var result = await sutProvider.Sut.GetManyByIntegrationAsync(organizationId, integrationId); await sutProvider.GetDependency().Received(1) .GetByIdAsync(integrationId); await sutProvider.GetDependency().Received(1) .GetManyByIntegrationAsync(integrationId); Assert.Equal(configurations.Count, result.Count); } [Theory, BitAutoData] public async Task GetManyByIntegrationAsync_NoConfigurations_ReturnsEmptyList( SutProvider sutProvider, Guid organizationId, Guid integrationId, OrganizationIntegration integration) { integration.Id = integrationId; integration.OrganizationId = organizationId; sutProvider.GetDependency() .GetByIdAsync(integrationId) .Returns(integration); sutProvider.GetDependency() .GetManyByIntegrationAsync(integrationId) .Returns([]); var result = await sutProvider.Sut.GetManyByIntegrationAsync(organizationId, integrationId); Assert.Empty(result); } [Theory, BitAutoData] public async Task GetManyByIntegrationAsync_IntegrationDoesNotExist_ThrowsNotFound( SutProvider sutProvider, Guid organizationId, Guid integrationId) { sutProvider.GetDependency() .GetByIdAsync(integrationId) .Returns((OrganizationIntegration)null); await Assert.ThrowsAsync( () => sutProvider.Sut.GetManyByIntegrationAsync(organizationId, integrationId)); await sutProvider.GetDependency().DidNotReceive() .GetManyByIntegrationAsync(Arg.Any()); } [Theory, BitAutoData] public async Task GetManyByIntegrationAsync_IntegrationDoesNotBelongToOrganization_ThrowsNotFound( SutProvider sutProvider, Guid organizationId, Guid integrationId, OrganizationIntegration integration) { integration.Id = integrationId; integration.OrganizationId = Guid.NewGuid(); // Different organization sutProvider.GetDependency() .GetByIdAsync(integrationId) .Returns(integration); await Assert.ThrowsAsync( () => sutProvider.Sut.GetManyByIntegrationAsync(organizationId, integrationId)); await sutProvider.GetDependency().DidNotReceive() .GetManyByIntegrationAsync(Arg.Any()); } }