mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 07:36:14 -05:00
Block org seat scaling when has Reseller provider (#3385)
This commit is contained in:
@ -34,6 +34,7 @@ using Bit.Test.Common.AutoFixture.Attributes;
|
||||
using Bit.Test.Common.Fakes;
|
||||
using NSubstitute;
|
||||
using NSubstitute.ExceptionExtensions;
|
||||
using NSubstitute.ReturnsExtensions;
|
||||
using Xunit;
|
||||
using Organization = Bit.Core.Entities.Organization;
|
||||
using OrganizationUser = Bit.Core.Entities.OrganizationUser;
|
||||
@ -1606,15 +1607,16 @@ public class OrganizationServiceTests
|
||||
[BitAutoData(0, null, 100, true, "")]
|
||||
[BitAutoData(1, 100, null, true, "")]
|
||||
[BitAutoData(1, 100, 100, false, "Seat limit has been reached")]
|
||||
public void CanScale(int seatsToAdd, int? currentSeats, int? maxAutoscaleSeats,
|
||||
public async Task CanScaleAsync(int seatsToAdd, int? currentSeats, int? maxAutoscaleSeats,
|
||||
bool expectedResult, string expectedFailureMessage, Organization organization,
|
||||
SutProvider<OrganizationService> sutProvider)
|
||||
{
|
||||
organization.Seats = currentSeats;
|
||||
organization.MaxAutoscaleSeats = maxAutoscaleSeats;
|
||||
sutProvider.GetDependency<ICurrentContext>().ManageUsers(organization.Id).Returns(true);
|
||||
sutProvider.GetDependency<IProviderRepository>().GetByOrganizationIdAsync(organization.Id).ReturnsNull();
|
||||
|
||||
var (result, failureMessage) = sutProvider.Sut.CanScale(organization, seatsToAdd);
|
||||
var (result, failureMessage) = await sutProvider.Sut.CanScaleAsync(organization, seatsToAdd);
|
||||
|
||||
if (expectedFailureMessage == string.Empty)
|
||||
{
|
||||
@ -1628,16 +1630,35 @@ public class OrganizationServiceTests
|
||||
}
|
||||
|
||||
[Theory, PaidOrganizationCustomize, BitAutoData]
|
||||
public void CanScale_FailsOnSelfHosted(Organization organization,
|
||||
public async Task CanScaleAsync_FailsOnSelfHosted(Organization organization,
|
||||
SutProvider<OrganizationService> sutProvider)
|
||||
{
|
||||
sutProvider.GetDependency<IGlobalSettings>().SelfHosted.Returns(true);
|
||||
var (result, failureMessage) = sutProvider.Sut.CanScale(organization, 10);
|
||||
var (result, failureMessage) = await sutProvider.Sut.CanScaleAsync(organization, 10);
|
||||
|
||||
Assert.False(result);
|
||||
Assert.Contains("Cannot autoscale on self-hosted instance", failureMessage);
|
||||
}
|
||||
|
||||
[Theory, PaidOrganizationCustomize, BitAutoData]
|
||||
public async Task CanScaleAsync_FailsOnResellerManagedOrganization(
|
||||
Organization organization,
|
||||
SutProvider<OrganizationService> sutProvider)
|
||||
{
|
||||
var provider = new Provider
|
||||
{
|
||||
Enabled = true,
|
||||
Type = ProviderType.Reseller
|
||||
};
|
||||
|
||||
sutProvider.GetDependency<IProviderRepository>().GetByOrganizationIdAsync(organization.Id).Returns(provider);
|
||||
|
||||
var (result, failureMessage) = await sutProvider.Sut.CanScaleAsync(organization, 10);
|
||||
|
||||
Assert.False(result);
|
||||
Assert.Contains("Seat limit has been reached. Contact your provider to purchase additional seats.", failureMessage);
|
||||
}
|
||||
|
||||
[Theory, PaidOrganizationCustomize, BitAutoData]
|
||||
public async Task Delete_Success(Organization organization, SutProvider<OrganizationService> sutProvider)
|
||||
{
|
||||
|
Reference in New Issue
Block a user