1
0
mirror of https://github.com/bitwarden/server.git synced 2024-12-22 16:57:36 +01:00

[AC 480]Add the organization name to the stripe invoice (#2772)

* Adding organization name on subscription and update

* Changes after running  dotnet format -v diag

* Change the OrganizationName to GetName

* Change GetName to OwnerName

* Change the OwnerName to SubscriberName

* Reverting the changes made by dotnet format-v diag

* Removing extract space

* resolve the lint issue

* Fix whitespace formatting issue

* Resolving pr comment on changing organization

* Fixing the failing test

* Using the ISubscriber interface for consistent

* fixing the whitescapes

* Resolving the PR comments

* resolving the whitespace format

* Remove unnecessary directive

* Resolving the whitespace issue

* changes for organization instead of subscriber

* resolving the failing test

* Resolve lint issue by removing unnecessary directive

* Resolve the PR comment

* remove these blank lines

* Fixing whitespace formatting
This commit is contained in:
cyprain-okeke 2023-04-07 10:45:18 +01:00 committed by GitHub
parent 53b9d52125
commit 6d7bcd98a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 68 additions and 4 deletions

View File

@ -10,8 +10,10 @@ public interface ISubscriber
string GatewaySubscriptionId { get; set; }
string BillingEmailAddress();
string BillingName();
string SubscriberName();
string BraintreeCustomerIdPrefix();
string BraintreeIdField();
string GatewayIdField();
bool IsUser();
string SubscriberType();
}

View File

@ -88,6 +88,11 @@ public class Organization : ITableObject<Guid>, ISubscriber, IStorable, IStorabl
return BusinessName;
}
public string SubscriberName()
{
return Name;
}
public string BraintreeCustomerIdPrefix()
{
return "o";
@ -108,6 +113,11 @@ public class Organization : ITableObject<Guid>, ISubscriber, IStorable, IStorabl
return false;
}
public string SubscriberType()
{
return "Organization";
}
public long StorageBytesRemaining()
{
if (!MaxStorageGb.HasValue)

View File

@ -84,6 +84,11 @@ public class User : ITableObject<Guid>, ISubscriber, IStorable, IStorableSubscri
return Name;
}
public string SubscriberName()
{
return string.IsNullOrWhiteSpace(Name) ? Email : Name;
}
public string BraintreeCustomerIdPrefix()
{
return "u";
@ -104,6 +109,11 @@ public class User : ITableObject<Guid>, ISubscriber, IStorable, IStorableSubscri
return true;
}
public string SubscriberType()
{
return "Subscriber";
}
public Dictionary<TwoFactorProviderType, TwoFactorProvider> GetTwoFactorProviders()
{
if (string.IsNullOrWhiteSpace(TwoFactorProviders))

View File

@ -124,8 +124,17 @@ public class StripePaymentService : IPaymentService
Metadata = stripeCustomerMetadata,
InvoiceSettings = new Stripe.CustomerInvoiceSettingsOptions
{
DefaultPaymentMethod = stipeCustomerPaymentMethodId
DefaultPaymentMethod = stipeCustomerPaymentMethodId,
CustomFields = new List<Stripe.CustomerInvoiceSettingsCustomFieldOptions>
{
new Stripe.CustomerInvoiceSettingsCustomFieldOptions()
{
Name = org.SubscriberType(),
Value = org.SubscriberName(),
},
},
},
Address = new Stripe.AddressOptions
{
Country = taxInfo.BillingAddressCountry,
@ -427,7 +436,15 @@ public class StripePaymentService : IPaymentService
Source = stipeCustomerSourceToken,
InvoiceSettings = new Stripe.CustomerInvoiceSettingsOptions
{
DefaultPaymentMethod = stipeCustomerPaymentMethodId
DefaultPaymentMethod = stipeCustomerPaymentMethodId,
CustomFields = new List<Stripe.CustomerInvoiceSettingsCustomFieldOptions>
{
new Stripe.CustomerInvoiceSettingsCustomFieldOptions()
{
Name = user.SubscriberType(),
Value = user.SubscriberName(),
},
}
},
Address = new Stripe.AddressOptions
{
@ -1334,7 +1351,15 @@ public class StripePaymentService : IPaymentService
PaymentMethod = stipeCustomerPaymentMethodId,
InvoiceSettings = new Stripe.CustomerInvoiceSettingsOptions
{
DefaultPaymentMethod = stipeCustomerPaymentMethodId
DefaultPaymentMethod = stipeCustomerPaymentMethodId,
CustomFields = new List<Stripe.CustomerInvoiceSettingsCustomFieldOptions>
{
new Stripe.CustomerInvoiceSettingsCustomFieldOptions()
{
Name = subscriber.SubscriberType(),
Value = subscriber.SubscriberName(),
},
}
},
Address = taxInfo == null ? null : new Stripe.AddressOptions
{
@ -1406,7 +1431,15 @@ public class StripePaymentService : IPaymentService
DefaultSource = defaultSourceId,
InvoiceSettings = new Stripe.CustomerInvoiceSettingsOptions
{
DefaultPaymentMethod = defaultPaymentMethodId
DefaultPaymentMethod = defaultPaymentMethodId,
CustomFields = new List<Stripe.CustomerInvoiceSettingsCustomFieldOptions>
{
new Stripe.CustomerInvoiceSettingsCustomFieldOptions()
{
Name = subscriber.SubscriberType(),
Value = subscriber.SubscriberName(),
},
}
},
Address = taxInfo == null ? null : new Stripe.AddressOptions
{

View File

@ -10,7 +10,10 @@ using Bit.Test.Common.AutoFixture.Attributes;
using Braintree;
using NSubstitute;
using Xunit;
using Customer = Braintree.Customer;
using PaymentMethod = Braintree.PaymentMethod;
using PaymentMethodType = Bit.Core.Enums.PaymentMethodType;
using TaxRate = Bit.Core.Entities.TaxRate;
namespace Bit.Core.Test.Services;
@ -65,6 +68,9 @@ public class StripePaymentServiceTests
c.PaymentMethod == null &&
!c.Metadata.Any() &&
c.InvoiceSettings.DefaultPaymentMethod == null &&
c.InvoiceSettings.CustomFields != null &&
c.InvoiceSettings.CustomFields[0].Name == "Organization" &&
c.InvoiceSettings.CustomFields[0].Value == organization.SubscriberName() &&
c.Address.Country == taxInfo.BillingAddressCountry &&
c.Address.PostalCode == taxInfo.BillingAddressPostalCode &&
c.Address.Line1 == taxInfo.BillingAddressLine1 &&
@ -115,6 +121,9 @@ public class StripePaymentServiceTests
c.PaymentMethod == paymentToken &&
!c.Metadata.Any() &&
c.InvoiceSettings.DefaultPaymentMethod == paymentToken &&
c.InvoiceSettings.CustomFields != null &&
c.InvoiceSettings.CustomFields[0].Name == "Organization" &&
c.InvoiceSettings.CustomFields[0].Value == organization.SubscriberName() &&
c.Address.Country == taxInfo.BillingAddressCountry &&
c.Address.PostalCode == taxInfo.BillingAddressPostalCode &&
c.Address.Line1 == taxInfo.BillingAddressLine1 &&