mirror of
https://github.com/bitwarden/server
synced 2026-01-06 10:34:01 +00:00
[PM-21878] update gateway/stripe fields for business units (#6186)
* [PM-21878] also update gateway/stripe fields for business units * pr feedback: replacing switch with extension method * [PM-21878] prevent invalid stripe ids from crashing the edit provider page * pr feedback: adding service methods to validate stripe ids and added unit tests for the new methods * pr feedback: move validation to SubscriberService and cleanup * pr feedback: use subscriber service to remove dependency on stripe adapter
This commit is contained in:
@@ -1765,4 +1765,142 @@ public class SubscriberServiceTests
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IsValidGatewayCustomerIdAsync
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewayCustomerIdAsync_NullSubscriber_ThrowsArgumentNullException(
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
await Assert.ThrowsAsync<ArgumentNullException>(() =>
|
||||
sutProvider.Sut.IsValidGatewayCustomerIdAsync(null));
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewayCustomerIdAsync_NullGatewayCustomerId_ReturnsTrue(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
organization.GatewayCustomerId = null;
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewayCustomerIdAsync(organization);
|
||||
|
||||
Assert.True(result);
|
||||
await sutProvider.GetDependency<IStripeAdapter>().DidNotReceiveWithAnyArgs()
|
||||
.CustomerGetAsync(Arg.Any<string>());
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewayCustomerIdAsync_EmptyGatewayCustomerId_ReturnsTrue(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
organization.GatewayCustomerId = "";
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewayCustomerIdAsync(organization);
|
||||
|
||||
Assert.True(result);
|
||||
await sutProvider.GetDependency<IStripeAdapter>().DidNotReceiveWithAnyArgs()
|
||||
.CustomerGetAsync(Arg.Any<string>());
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewayCustomerIdAsync_ValidCustomerId_ReturnsTrue(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
var stripeAdapter = sutProvider.GetDependency<IStripeAdapter>();
|
||||
stripeAdapter.CustomerGetAsync(organization.GatewayCustomerId).Returns(new Customer());
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewayCustomerIdAsync(organization);
|
||||
|
||||
Assert.True(result);
|
||||
await stripeAdapter.Received(1).CustomerGetAsync(organization.GatewayCustomerId);
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewayCustomerIdAsync_InvalidCustomerId_ReturnsFalse(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
var stripeAdapter = sutProvider.GetDependency<IStripeAdapter>();
|
||||
var stripeException = new StripeException { StripeError = new StripeError { Code = "resource_missing" } };
|
||||
stripeAdapter.CustomerGetAsync(organization.GatewayCustomerId).Throws(stripeException);
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewayCustomerIdAsync(organization);
|
||||
|
||||
Assert.False(result);
|
||||
await stripeAdapter.Received(1).CustomerGetAsync(organization.GatewayCustomerId);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IsValidGatewaySubscriptionIdAsync
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewaySubscriptionIdAsync_NullSubscriber_ThrowsArgumentNullException(
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
await Assert.ThrowsAsync<ArgumentNullException>(() =>
|
||||
sutProvider.Sut.IsValidGatewaySubscriptionIdAsync(null));
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewaySubscriptionIdAsync_NullGatewaySubscriptionId_ReturnsTrue(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
organization.GatewaySubscriptionId = null;
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewaySubscriptionIdAsync(organization);
|
||||
|
||||
Assert.True(result);
|
||||
await sutProvider.GetDependency<IStripeAdapter>().DidNotReceiveWithAnyArgs()
|
||||
.SubscriptionGetAsync(Arg.Any<string>());
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewaySubscriptionIdAsync_EmptyGatewaySubscriptionId_ReturnsTrue(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
organization.GatewaySubscriptionId = "";
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewaySubscriptionIdAsync(organization);
|
||||
|
||||
Assert.True(result);
|
||||
await sutProvider.GetDependency<IStripeAdapter>().DidNotReceiveWithAnyArgs()
|
||||
.SubscriptionGetAsync(Arg.Any<string>());
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewaySubscriptionIdAsync_ValidSubscriptionId_ReturnsTrue(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
var stripeAdapter = sutProvider.GetDependency<IStripeAdapter>();
|
||||
stripeAdapter.SubscriptionGetAsync(organization.GatewaySubscriptionId).Returns(new Subscription());
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewaySubscriptionIdAsync(organization);
|
||||
|
||||
Assert.True(result);
|
||||
await stripeAdapter.Received(1).SubscriptionGetAsync(organization.GatewaySubscriptionId);
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task IsValidGatewaySubscriptionIdAsync_InvalidSubscriptionId_ReturnsFalse(
|
||||
Organization organization,
|
||||
SutProvider<SubscriberService> sutProvider)
|
||||
{
|
||||
var stripeAdapter = sutProvider.GetDependency<IStripeAdapter>();
|
||||
var stripeException = new StripeException { StripeError = new StripeError { Code = "resource_missing" } };
|
||||
stripeAdapter.SubscriptionGetAsync(organization.GatewaySubscriptionId).Throws(stripeException);
|
||||
|
||||
var result = await sutProvider.Sut.IsValidGatewaySubscriptionIdAsync(organization);
|
||||
|
||||
Assert.False(result);
|
||||
await stripeAdapter.Received(1).SubscriptionGetAsync(organization.GatewaySubscriptionId);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user