1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-21 17:41:40 -05:00

[NO LOGIC] [PM-21100] Organize billing organization code (#6099)

* [NO LOGIC] Organize Billing organization code

* Run dotnet format
This commit is contained in:
Alex Morask
2025-07-17 12:02:25 -05:00
committed by GitHub
parent 9a501f95c8
commit ec70a18bda
52 changed files with 129 additions and 142 deletions

View File

@ -8,7 +8,7 @@ using Bit.Admin.Models;
using Bit.Admin.Utilities; using Bit.Admin.Utilities;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.BitStripe; using Bit.Core.Models.BitStripe;
using Bit.Core.Platform.Installations; using Bit.Core.Platform.Installations;
@ -27,7 +27,7 @@ public class ToolsController : Controller
{ {
private readonly GlobalSettings _globalSettings; private readonly GlobalSettings _globalSettings;
private readonly IOrganizationRepository _organizationRepository; private readonly IOrganizationRepository _organizationRepository;
private readonly ICloudGetOrganizationLicenseQuery _cloudGetOrganizationLicenseQuery; private readonly IGetCloudOrganizationLicenseQuery _getCloudOrganizationLicenseQuery;
private readonly IUserService _userService; private readonly IUserService _userService;
private readonly ITransactionRepository _transactionRepository; private readonly ITransactionRepository _transactionRepository;
private readonly IInstallationRepository _installationRepository; private readonly IInstallationRepository _installationRepository;
@ -40,7 +40,7 @@ public class ToolsController : Controller
public ToolsController( public ToolsController(
GlobalSettings globalSettings, GlobalSettings globalSettings,
IOrganizationRepository organizationRepository, IOrganizationRepository organizationRepository,
ICloudGetOrganizationLicenseQuery cloudGetOrganizationLicenseQuery, IGetCloudOrganizationLicenseQuery getCloudOrganizationLicenseQuery,
IUserService userService, IUserService userService,
ITransactionRepository transactionRepository, ITransactionRepository transactionRepository,
IInstallationRepository installationRepository, IInstallationRepository installationRepository,
@ -52,7 +52,7 @@ public class ToolsController : Controller
{ {
_globalSettings = globalSettings; _globalSettings = globalSettings;
_organizationRepository = organizationRepository; _organizationRepository = organizationRepository;
_cloudGetOrganizationLicenseQuery = cloudGetOrganizationLicenseQuery; _getCloudOrganizationLicenseQuery = getCloudOrganizationLicenseQuery;
_userService = userService; _userService = userService;
_transactionRepository = transactionRepository; _transactionRepository = transactionRepository;
_installationRepository = installationRepository; _installationRepository = installationRepository;
@ -320,7 +320,7 @@ public class ToolsController : Controller
if (organization != null) if (organization != null)
{ {
var license = await _cloudGetOrganizationLicenseQuery.GetLicenseAsync(organization, var license = await _getCloudOrganizationLicenseQuery.GetLicenseAsync(organization,
model.InstallationId.Value, model.Version); model.InstallationId.Value, model.Version);
var ms = new MemoryStream(); var ms = new MemoryStream();
await JsonSerializer.SerializeAsync(ms, license, JsonHelpers.Indented); await JsonSerializer.SerializeAsync(ms, license, JsonHelpers.Indented);

View File

@ -5,7 +5,7 @@ using System.Text.Json.Serialization;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Models.StaticStore; using Bit.Core.Models.StaticStore;

View File

@ -3,7 +3,8 @@
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Models.Business;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Api.OrganizationLicenses; using Bit.Core.Models.Api.OrganizationLicenses;
@ -23,7 +24,7 @@ public class LicensesController : Controller
private readonly IUserRepository _userRepository; private readonly IUserRepository _userRepository;
private readonly IUserService _userService; private readonly IUserService _userService;
private readonly IOrganizationRepository _organizationRepository; private readonly IOrganizationRepository _organizationRepository;
private readonly ICloudGetOrganizationLicenseQuery _cloudGetOrganizationLicenseQuery; private readonly IGetCloudOrganizationLicenseQuery _getCloudOrganizationLicenseQuery;
private readonly IValidateBillingSyncKeyCommand _validateBillingSyncKeyCommand; private readonly IValidateBillingSyncKeyCommand _validateBillingSyncKeyCommand;
private readonly ICurrentContext _currentContext; private readonly ICurrentContext _currentContext;
@ -31,14 +32,14 @@ public class LicensesController : Controller
IUserRepository userRepository, IUserRepository userRepository,
IUserService userService, IUserService userService,
IOrganizationRepository organizationRepository, IOrganizationRepository organizationRepository,
ICloudGetOrganizationLicenseQuery cloudGetOrganizationLicenseQuery, IGetCloudOrganizationLicenseQuery getCloudOrganizationLicenseQuery,
IValidateBillingSyncKeyCommand validateBillingSyncKeyCommand, IValidateBillingSyncKeyCommand validateBillingSyncKeyCommand,
ICurrentContext currentContext) ICurrentContext currentContext)
{ {
_userRepository = userRepository; _userRepository = userRepository;
_userService = userService; _userService = userService;
_organizationRepository = organizationRepository; _organizationRepository = organizationRepository;
_cloudGetOrganizationLicenseQuery = cloudGetOrganizationLicenseQuery; _getCloudOrganizationLicenseQuery = getCloudOrganizationLicenseQuery;
_validateBillingSyncKeyCommand = validateBillingSyncKeyCommand; _validateBillingSyncKeyCommand = validateBillingSyncKeyCommand;
_currentContext = currentContext; _currentContext = currentContext;
} }
@ -84,7 +85,7 @@ public class LicensesController : Controller
throw new BadRequestException("Invalid Billing Sync Key"); throw new BadRequestException("Invalid Billing Sync Key");
} }
var license = await _cloudGetOrganizationLicenseQuery.GetLicenseAsync(organization, _currentContext.InstallationId.Value); var license = await _getCloudOrganizationLicenseQuery.GetLicenseAsync(organization, _currentContext.InstallationId.Value);
return license; return license;
} }
} }

View File

@ -6,7 +6,8 @@ using Bit.Api.Billing.Models.Responses;
using Bit.Api.Billing.Queries.Organizations; using Bit.Api.Billing.Queries.Organizations;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models; using Bit.Core.Billing.Models;
using Bit.Core.Billing.Models.Sales; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Providers.Services; using Bit.Core.Billing.Providers.Services;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;

View File

@ -9,12 +9,12 @@ using Bit.Api.Models.Request.Organizations;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Constants; using Bit.Core.Billing.Constants;
using Bit.Core.Billing.Entities;
using Bit.Core.Billing.Models; using Bit.Core.Billing.Models;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Entities;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Billing.Organizations.Repositories;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Repositories;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Enums; using Bit.Core.Enums;
@ -39,7 +39,7 @@ public class OrganizationsController(
IUserService userService, IUserService userService,
IPaymentService paymentService, IPaymentService paymentService,
ICurrentContext currentContext, ICurrentContext currentContext,
ICloudGetOrganizationLicenseQuery cloudGetOrganizationLicenseQuery, IGetCloudOrganizationLicenseQuery getCloudOrganizationLicenseQuery,
GlobalSettings globalSettings, GlobalSettings globalSettings,
ILicensingService licensingService, ILicensingService licensingService,
IUpdateSecretsManagerSubscriptionCommand updateSecretsManagerSubscriptionCommand, IUpdateSecretsManagerSubscriptionCommand updateSecretsManagerSubscriptionCommand,
@ -98,7 +98,7 @@ public class OrganizationsController(
} }
var org = await organizationRepository.GetByIdAsync(id); var org = await organizationRepository.GetByIdAsync(id);
var license = await cloudGetOrganizationLicenseQuery.GetLicenseAsync(org, installationId); var license = await getCloudOrganizationLicenseQuery.GetLicenseAsync(org, installationId);
if (license == null) if (license == null)
{ {
throw new NotFoundException(); throw new NotFoundException();

View File

@ -1,4 +1,4 @@
using Bit.Core.Billing.Models; using Bit.Core.Billing.Organizations.Models;
namespace Bit.Api.Billing.Models.Responses; namespace Bit.Api.Billing.Models.Responses;

View File

@ -5,8 +5,9 @@ using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Api.Models.Request; using Bit.Api.Models.Request;
using Bit.Api.Models.Request.Organizations; using Bit.Api.Models.Request.Organizations;
using Bit.Api.Utilities; using Bit.Api.Utilities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Commands;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
@ -25,7 +26,7 @@ namespace Bit.Api.Controllers.SelfHosted;
public class SelfHostedOrganizationLicensesController : Controller public class SelfHostedOrganizationLicensesController : Controller
{ {
private readonly ICurrentContext _currentContext; private readonly ICurrentContext _currentContext;
private readonly ISelfHostedGetOrganizationLicenseQuery _selfHostedGetOrganizationLicenseQuery; private readonly IGetSelfHostedOrganizationLicenseQuery _getSelfHostedOrganizationLicenseQuery;
private readonly IOrganizationConnectionRepository _organizationConnectionRepository; private readonly IOrganizationConnectionRepository _organizationConnectionRepository;
private readonly IOrganizationService _organizationService; private readonly IOrganizationService _organizationService;
private readonly IOrganizationRepository _organizationRepository; private readonly IOrganizationRepository _organizationRepository;
@ -34,7 +35,7 @@ public class SelfHostedOrganizationLicensesController : Controller
public SelfHostedOrganizationLicensesController( public SelfHostedOrganizationLicensesController(
ICurrentContext currentContext, ICurrentContext currentContext,
ISelfHostedGetOrganizationLicenseQuery selfHostedGetOrganizationLicenseQuery, IGetSelfHostedOrganizationLicenseQuery getSelfHostedOrganizationLicenseQuery,
IOrganizationConnectionRepository organizationConnectionRepository, IOrganizationConnectionRepository organizationConnectionRepository,
IOrganizationService organizationService, IOrganizationService organizationService,
IOrganizationRepository organizationRepository, IOrganizationRepository organizationRepository,
@ -42,7 +43,7 @@ public class SelfHostedOrganizationLicensesController : Controller
IUpdateOrganizationLicenseCommand updateOrganizationLicenseCommand) IUpdateOrganizationLicenseCommand updateOrganizationLicenseCommand)
{ {
_currentContext = currentContext; _currentContext = currentContext;
_selfHostedGetOrganizationLicenseQuery = selfHostedGetOrganizationLicenseQuery; _getSelfHostedOrganizationLicenseQuery = getSelfHostedOrganizationLicenseQuery;
_organizationConnectionRepository = organizationConnectionRepository; _organizationConnectionRepository = organizationConnectionRepository;
_organizationService = organizationService; _organizationService = organizationService;
_organizationRepository = organizationRepository; _organizationRepository = organizationRepository;
@ -120,7 +121,7 @@ public class SelfHostedOrganizationLicensesController : Controller
} }
var license = var license =
await _selfHostedGetOrganizationLicenseQuery.GetLicenseAsync(selfHostedOrganizationDetails, billingSyncConnection); await _getSelfHostedOrganizationLicenseQuery.GetLicenseAsync(selfHostedOrganizationDetails, billingSyncConnection);
var currentOrganization = await _organizationRepository.GetByLicenseKeyAsync(license.LicenseKey); var currentOrganization = await _organizationRepository.GetByLicenseKeyAsync(license.LicenseKey);
await _updateOrganizationLicenseCommand.UpdateLicenseAsync(selfHostedOrganizationDetails, license, currentOrganization); await _updateOrganizationLicenseCommand.UpdateLicenseAsync(selfHostedOrganizationDetails, license, currentOrganization);

View File

@ -4,7 +4,7 @@ using System.Text.Json;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models; using Bit.Core.Auth.Models;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Services; using Bit.Core.Services;

View File

@ -6,7 +6,7 @@ using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs; using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs;
using Bit.Core.Auth.Entities; using Bit.Core.Auth.Entities;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;

View File

@ -5,9 +5,9 @@ using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Services; using Bit.Core.AdminConsole.Services;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Sales; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;

View File

@ -4,7 +4,7 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Business; using Bit.Core.AdminConsole.Models.Business;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;

View File

@ -20,7 +20,7 @@ using Bit.Core.Auth.Repositories;
using Bit.Core.Billing.Constants; using Bit.Core.Billing.Constants;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Extensions; using Bit.Core.Billing.Extensions;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;

View File

@ -3,7 +3,7 @@ using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Licenses; using Bit.Core.Billing.Licenses;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;

View File

@ -1,9 +1,9 @@
using Bit.Core.Billing.Caches; using Bit.Core.Billing.Caches;
using Bit.Core.Billing.Caches.Implementations; using Bit.Core.Billing.Caches.Implementations;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses; using Bit.Core.Billing.Organizations.Commands;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.SelfHosted; using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Payment; using Bit.Core.Billing.Payment;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
@ -37,8 +37,8 @@ public static class ServiceCollectionExtensions
private static void AddOrganizationLicenseCommandsQueries(this IServiceCollection services) private static void AddOrganizationLicenseCommandsQueries(this IServiceCollection services)
{ {
services.AddScoped<ICloudGetOrganizationLicenseQuery, CloudGetOrganizationLicenseQuery>(); services.AddScoped<IGetCloudOrganizationLicenseQuery, GetCloudOrganizationLicenseQuery>();
services.AddScoped<ISelfHostedGetOrganizationLicenseQuery, SelfHostedGetOrganizationLicenseQuery>(); services.AddScoped<IGetSelfHostedOrganizationLicenseQuery, GetSelfHostedOrganizationLicenseQuery>();
services.AddScoped<IUpdateOrganizationLicenseCommand, UpdateOrganizationLicenseCommand>(); services.AddScoped<IUpdateOrganizationLicenseCommand, UpdateOrganizationLicenseCommand>();
} }
} }

View File

@ -1,16 +0,0 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business;
using Bit.Core.Entities;
namespace Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces;
public interface ICloudGetOrganizationLicenseQuery
{
Task<OrganizationLicense> GetLicenseAsync(Organization organization, Guid installationId,
int? version = null);
}
public interface ISelfHostedGetOrganizationLicenseQuery
{
Task<OrganizationLicense> GetLicenseAsync(Organization organization, OrganizationConnection billingSyncConnection);
}

View File

@ -1,13 +0,0 @@
#nullable enable
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business;
using Bit.Core.Models.Data.Organizations;
namespace Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces;
public interface IUpdateOrganizationLicenseCommand
{
Task UpdateLicenseAsync(SelfHostedOrganizationDetails selfHostedOrganization,
OrganizationLicense license, Organization? currentOrganizationUsingLicenseKey);
}

View File

@ -1,9 +1,6 @@
#nullable enable using System.Text.Json;
using System.Text.Json;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Data.Organizations; using Bit.Core.Models.Data.Organizations;
@ -11,7 +8,13 @@ using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Core.Utilities; using Bit.Core.Utilities;
namespace Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses; namespace Bit.Core.Billing.Organizations.Commands;
public interface IUpdateOrganizationLicenseCommand
{
Task UpdateLicenseAsync(SelfHostedOrganizationDetails selfHostedOrganization,
OrganizationLicense license, Organization? currentOrganizationUsingLicenseKey);
}
public class UpdateOrganizationLicenseCommand : IUpdateOrganizationLicenseCommand public class UpdateOrganizationLicenseCommand : IUpdateOrganizationLicenseCommand
{ {

View File

@ -1,9 +1,7 @@
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Utilities; using Bit.Core.Utilities;
namespace Bit.Core.Billing.Entities; namespace Bit.Core.Billing.Organizations.Entities;
#nullable enable
public class OrganizationInstallation : ITableObject<Guid> public class OrganizationInstallation : ITableObject<Guid>
{ {

View File

@ -10,12 +10,13 @@ using System.Text.Json.Serialization;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.Models.Business;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Settings; using Bit.Core.Settings;
namespace Bit.Core.Billing.Models.Business; namespace Bit.Core.Billing.Organizations.Models;
public class OrganizationLicense : ILicense public class OrganizationLicense : ILicense
{ {

View File

@ -1,4 +1,4 @@
namespace Bit.Core.Billing.Models; namespace Bit.Core.Billing.Organizations.Models;
public record OrganizationMetadata( public record OrganizationMetadata(
bool IsEligibleForSelfHost, bool IsEligibleForSelfHost,

View File

@ -1,11 +1,11 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Constants; using Bit.Core.Billing.Constants;
using Bit.Core.Billing.Models;
using Bit.Core.Billing.Models.Sales;
using Bit.Core.Billing.Tax.Models; using Bit.Core.Billing.Tax.Models;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
namespace Bit.Core.Billing.Models.Sales; namespace Bit.Core.Billing.Organizations.Models;
#nullable enable
public class OrganizationSale public class OrganizationSale
{ {

View File

@ -4,7 +4,7 @@
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Stripe; using Stripe;
namespace Bit.Core.Billing.Models.Business; namespace Bit.Core.Billing.Organizations.Models;
public class SponsorOrganizationSubscriptionUpdate : SubscriptionUpdate public class SponsorOrganizationSubscriptionUpdate : SubscriptionUpdate
{ {

View File

@ -3,8 +3,7 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
@ -12,9 +11,15 @@ using Bit.Core.Models.Business;
using Bit.Core.Platform.Installations; using Bit.Core.Platform.Installations;
using Bit.Core.Services; using Bit.Core.Services;
namespace Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses; namespace Bit.Core.Billing.Organizations.Queries;
public class CloudGetOrganizationLicenseQuery : ICloudGetOrganizationLicenseQuery public interface IGetCloudOrganizationLicenseQuery
{
Task<OrganizationLicense> GetLicenseAsync(Organization organization, Guid installationId,
int? version = null);
}
public class GetCloudOrganizationLicenseQuery : IGetCloudOrganizationLicenseQuery
{ {
private readonly IInstallationRepository _installationRepository; private readonly IInstallationRepository _installationRepository;
private readonly IPaymentService _paymentService; private readonly IPaymentService _paymentService;
@ -22,7 +27,7 @@ public class CloudGetOrganizationLicenseQuery : ICloudGetOrganizationLicenseQuer
private readonly IProviderRepository _providerRepository; private readonly IProviderRepository _providerRepository;
private readonly IFeatureService _featureService; private readonly IFeatureService _featureService;
public CloudGetOrganizationLicenseQuery( public GetCloudOrganizationLicenseQuery(
IInstallationRepository installationRepository, IInstallationRepository installationRepository,
IPaymentService paymentService, IPaymentService paymentService,
ILicensingService licensingService, ILicensingService licensingService,

View File

@ -2,8 +2,7 @@
#nullable disable #nullable disable
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
@ -13,13 +12,18 @@ using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.SelfHosted; namespace Bit.Core.Billing.Organizations.Queries;
public class SelfHostedGetOrganizationLicenseQuery : BaseIdentityClientService, ISelfHostedGetOrganizationLicenseQuery public interface IGetSelfHostedOrganizationLicenseQuery
{
Task<OrganizationLicense> GetLicenseAsync(Organization organization, OrganizationConnection billingSyncConnection);
}
public class GetSelfHostedOrganizationLicenseQuery : BaseIdentityClientService, IGetSelfHostedOrganizationLicenseQuery
{ {
private readonly IGlobalSettings _globalSettings; private readonly IGlobalSettings _globalSettings;
public SelfHostedGetOrganizationLicenseQuery(IHttpClientFactory httpFactory, IGlobalSettings globalSettings, ILogger<SelfHostedGetOrganizationLicenseQuery> logger, ICurrentContext currentContext) public GetSelfHostedOrganizationLicenseQuery(IHttpClientFactory httpFactory, IGlobalSettings globalSettings, ILogger<GetSelfHostedOrganizationLicenseQuery> logger, ICurrentContext currentContext)
: base( : base(
httpFactory, httpFactory,
globalSettings.Installation.ApiUri, globalSettings.Installation.ApiUri,

View File

@ -1,7 +1,7 @@
using Bit.Core.Billing.Entities; using Bit.Core.Billing.Organizations.Entities;
using Bit.Core.Repositories; using Bit.Core.Repositories;
namespace Bit.Core.Billing.Repositories; namespace Bit.Core.Billing.Organizations.Repositories;
public interface IOrganizationInstallationRepository : IRepository<OrganizationInstallation, Guid> public interface IOrganizationInstallationRepository : IRepository<OrganizationInstallation, Guid>
{ {

View File

@ -1,11 +1,9 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models; using Bit.Core.Billing.Models;
using Bit.Core.Billing.Models.Sales; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Tax.Models; using Bit.Core.Billing.Tax.Models;
namespace Bit.Core.Billing.Services; namespace Bit.Core.Billing.Organizations.Services;
#nullable enable
public interface IOrganizationBillingService public interface IOrganizationBillingService
{ {

View File

@ -5,7 +5,9 @@ using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Extensions; using Bit.Core.Billing.Extensions;
using Bit.Core.Billing.Models; using Bit.Core.Billing.Models;
using Bit.Core.Billing.Models.Sales; using Bit.Core.Billing.Models.Sales;
using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services;
using Bit.Core.Billing.Tax.Models; using Bit.Core.Billing.Tax.Models;
using Bit.Core.Billing.Tax.Services; using Bit.Core.Billing.Tax.Services;
using Bit.Core.Enums; using Bit.Core.Enums;
@ -16,14 +18,11 @@ using Bit.Core.Settings;
using Braintree; using Braintree;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Stripe; using Stripe;
using static Bit.Core.Billing.Utilities; using static Bit.Core.Billing.Utilities;
using Customer = Stripe.Customer; using Customer = Stripe.Customer;
using Subscription = Stripe.Subscription; using Subscription = Stripe.Subscription;
namespace Bit.Core.Billing.Services.Implementations; namespace Bit.Core.Billing.Organizations.Services;
#nullable enable
public class OrganizationBillingService( public class OrganizationBillingService(
IBraintreeGateway braintreeGateway, IBraintreeGateway braintreeGateway,

View File

@ -3,6 +3,7 @@
using System.Security.Claims; using System.Security.Claims;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Models.Business;
using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;

View File

@ -10,6 +10,7 @@ using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Licenses.Services; using Bit.Core.Billing.Licenses.Services;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Models.Business;
using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;

View File

@ -3,6 +3,7 @@
using System.Security.Claims; using System.Security.Claims;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Models.Business;
using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -8,9 +8,9 @@ using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Repositories; using Bit.Core.Auth.Repositories;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Sales; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;

View File

@ -8,7 +8,7 @@ using Bit.Core.Billing.Constants;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Extensions; using Bit.Core.Billing.Extensions;
using Bit.Core.Billing.Models; using Bit.Core.Billing.Models;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Tax.Models; using Bit.Core.Billing.Tax.Models;
using Bit.Core.Billing.Tax.Requests; using Bit.Core.Billing.Tax.Requests;

View File

@ -2,8 +2,8 @@
#nullable disable #nullable disable
using System.Data; using System.Data;
using Bit.Core.Billing.Entities; using Bit.Core.Billing.Organizations.Entities;
using Bit.Core.Billing.Repositories; using Bit.Core.Billing.Organizations.Repositories;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Infrastructure.Dapper.Repositories; using Bit.Infrastructure.Dapper.Repositories;
using Dapper; using Dapper;

View File

@ -1,7 +1,7 @@
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.Repositories; using Bit.Core.Auth.Repositories;
using Bit.Core.Billing.Organizations.Repositories;
using Bit.Core.Billing.Providers.Repositories; using Bit.Core.Billing.Providers.Repositories;
using Bit.Core.Billing.Repositories;
using Bit.Core.Dirt.Reports.Repositories; using Bit.Core.Dirt.Reports.Repositories;
using Bit.Core.Dirt.Repositories; using Bit.Core.Dirt.Repositories;
using Bit.Core.KeyManagement.Repositories; using Bit.Core.KeyManagement.Repositories;

View File

@ -7,7 +7,7 @@ using Bit.Infrastructure.EntityFramework.Platform;
namespace Bit.Infrastructure.EntityFramework.Billing.Models; namespace Bit.Infrastructure.EntityFramework.Billing.Models;
public class OrganizationInstallation : Core.Billing.Entities.OrganizationInstallation public class OrganizationInstallation : Core.Billing.Organizations.Entities.OrganizationInstallation
{ {
public virtual Installation Installation { get; set; } public virtual Installation Installation { get; set; }
public virtual Organization Organization { get; set; } public virtual Organization Organization { get; set; }
@ -17,6 +17,6 @@ public class OrganizationInstallationMapperProfile : Profile
{ {
public OrganizationInstallationMapperProfile() public OrganizationInstallationMapperProfile()
{ {
CreateMap<Core.Billing.Entities.OrganizationInstallation, OrganizationInstallation>().ReverseMap(); CreateMap<Core.Billing.Organizations.Entities.OrganizationInstallation, OrganizationInstallation>().ReverseMap();
} }
} }

View File

@ -2,8 +2,8 @@
#nullable disable #nullable disable
using AutoMapper; using AutoMapper;
using Bit.Core.Billing.Entities; using Bit.Core.Billing.Organizations.Entities;
using Bit.Core.Billing.Repositories; using Bit.Core.Billing.Organizations.Repositories;
using Bit.Infrastructure.EntityFramework.Repositories; using Bit.Infrastructure.EntityFramework.Repositories;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;

View File

@ -1,7 +1,7 @@
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.Repositories; using Bit.Core.Auth.Repositories;
using Bit.Core.Billing.Organizations.Repositories;
using Bit.Core.Billing.Providers.Repositories; using Bit.Core.Billing.Providers.Repositories;
using Bit.Core.Billing.Repositories;
using Bit.Core.Dirt.Reports.Repositories; using Bit.Core.Dirt.Reports.Repositories;
using Bit.Core.Dirt.Repositories; using Bit.Core.Dirt.Repositories;
using Bit.Core.Enums; using Bit.Core.Enums;

View File

@ -4,7 +4,7 @@ using Bit.Api.AdminConsole.Models.Request.Organizations;
using Bit.Api.AdminConsole.Models.Response.Organizations; using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs; using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs;
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;

View File

@ -2,7 +2,8 @@
using Bit.Api.Billing.Models.Responses; using Bit.Api.Billing.Models.Responses;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models; using Bit.Core.Billing.Models;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services; using Bit.Core.Services;

View File

@ -10,9 +10,9 @@ using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models.Data; using Bit.Core.Auth.Models.Data;
using Bit.Core.Auth.Repositories; using Bit.Core.Auth.Repositories;
using Bit.Core.Auth.Services; using Bit.Core.Auth.Services;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Billing.Organizations.Repositories;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Repositories;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
@ -40,7 +40,7 @@ public class OrganizationsControllerTests : IDisposable
private readonly IPaymentService _paymentService; private readonly IPaymentService _paymentService;
private readonly ISsoConfigRepository _ssoConfigRepository; private readonly ISsoConfigRepository _ssoConfigRepository;
private readonly IUserService _userService; private readonly IUserService _userService;
private readonly ICloudGetOrganizationLicenseQuery _cloudGetOrganizationLicenseQuery; private readonly IGetCloudOrganizationLicenseQuery _getCloudOrganizationLicenseQuery;
private readonly ILicensingService _licensingService; private readonly ILicensingService _licensingService;
private readonly IUpdateSecretsManagerSubscriptionCommand _updateSecretsManagerSubscriptionCommand; private readonly IUpdateSecretsManagerSubscriptionCommand _updateSecretsManagerSubscriptionCommand;
private readonly IUpgradeOrganizationPlanCommand _upgradeOrganizationPlanCommand; private readonly IUpgradeOrganizationPlanCommand _upgradeOrganizationPlanCommand;
@ -64,7 +64,7 @@ public class OrganizationsControllerTests : IDisposable
_ssoConfigRepository = Substitute.For<ISsoConfigRepository>(); _ssoConfigRepository = Substitute.For<ISsoConfigRepository>();
Substitute.For<ISsoConfigService>(); Substitute.For<ISsoConfigService>();
_userService = Substitute.For<IUserService>(); _userService = Substitute.For<IUserService>();
_cloudGetOrganizationLicenseQuery = Substitute.For<ICloudGetOrganizationLicenseQuery>(); _getCloudOrganizationLicenseQuery = Substitute.For<IGetCloudOrganizationLicenseQuery>();
_licensingService = Substitute.For<ILicensingService>(); _licensingService = Substitute.For<ILicensingService>();
_updateSecretsManagerSubscriptionCommand = Substitute.For<IUpdateSecretsManagerSubscriptionCommand>(); _updateSecretsManagerSubscriptionCommand = Substitute.For<IUpdateSecretsManagerSubscriptionCommand>();
_upgradeOrganizationPlanCommand = Substitute.For<IUpgradeOrganizationPlanCommand>(); _upgradeOrganizationPlanCommand = Substitute.For<IUpgradeOrganizationPlanCommand>();
@ -81,7 +81,7 @@ public class OrganizationsControllerTests : IDisposable
_userService, _userService,
_paymentService, _paymentService,
_currentContext, _currentContext,
_cloudGetOrganizationLicenseQuery, _getCloudOrganizationLicenseQuery,
_globalSettings, _globalSettings,
_licensingService, _licensingService,
_updateSecretsManagerSubscriptionCommand, _updateSecretsManagerSubscriptionCommand,

View File

@ -1,6 +1,6 @@
using System.Text; using System.Text;
using Bit.Api.Utilities; using Bit.Api.Utilities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using NSubstitute; using NSubstitute;
using Xunit; using Xunit;

View File

@ -5,7 +5,7 @@ using Bit.Core.Auth.Entities;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models.Data; using Bit.Core.Auth.Models.Data;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Models.Data.Organizations; using Bit.Core.Models.Data.Organizations;

View File

@ -1,9 +1,9 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.OrganizationFeatures.Organizations; using Bit.Core.AdminConsole.OrganizationFeatures.Organizations;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Sales; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;

View File

@ -1,5 +1,5 @@
using AutoFixture; using AutoFixture;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Test.Common.AutoFixture.Attributes; using Bit.Test.Common.AutoFixture.Attributes;
namespace Bit.Core.Test.Billing.AutoFixture; namespace Bit.Core.Test.Billing.AutoFixture;

View File

@ -1,7 +1,7 @@
using System.Text.Json; using System.Text.Json;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Enums; using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Enums; using Bit.Core.Enums;
namespace Bit.Core.Test.Billing.Models.Business; namespace Bit.Core.Test.Billing.Models.Business;

View File

@ -1,5 +1,5 @@
using System.Security.Claims; using System.Security.Claims;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Test.Common.AutoFixture.Attributes; using Bit.Test.Common.AutoFixture.Attributes;
using NSubstitute; using NSubstitute;

View File

@ -2,7 +2,7 @@
using Bit.Core.AdminConsole.Entities.Provider; using Bit.Core.AdminConsole.Entities.Provider;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Models.Business;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses; using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
@ -23,11 +23,11 @@ namespace Bit.Core.Test.Billing.OrganizationFeatures.OrganizationLicenses;
[SubscriptionInfoCustomize] [SubscriptionInfoCustomize]
[OrganizationLicenseCustomize] [OrganizationLicenseCustomize]
[SutProviderCustomize] [SutProviderCustomize]
public class CloudGetOrganizationLicenseQueryTests public class GetCloudOrganizationLicenseQueryTests
{ {
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task GetLicenseAsync_InvalidInstallationId_Throws(SutProvider<CloudGetOrganizationLicenseQuery> sutProvider, public async Task GetLicenseAsync_InvalidInstallationId_Throws(SutProvider<GetCloudOrganizationLicenseQuery> sutProvider,
Organization organization, Guid installationId, int version) Organization organization, Guid installationId, int version)
{ {
sutProvider.GetDependency<IInstallationRepository>().GetByIdAsync(installationId).ReturnsNull(); sutProvider.GetDependency<IInstallationRepository>().GetByIdAsync(installationId).ReturnsNull();
@ -38,7 +38,7 @@ public class CloudGetOrganizationLicenseQueryTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task GetLicenseAsync_DisabledOrganization_Throws(SutProvider<CloudGetOrganizationLicenseQuery> sutProvider, public async Task GetLicenseAsync_DisabledOrganization_Throws(SutProvider<GetCloudOrganizationLicenseQuery> sutProvider,
Organization organization, Guid installationId, Installation installation) Organization organization, Guid installationId, Installation installation)
{ {
installation.Enabled = false; installation.Enabled = false;
@ -51,7 +51,7 @@ public class CloudGetOrganizationLicenseQueryTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task GetLicenseAsync_CreatesAndReturns(SutProvider<CloudGetOrganizationLicenseQuery> sutProvider, public async Task GetLicenseAsync_CreatesAndReturns(SutProvider<GetCloudOrganizationLicenseQuery> sutProvider,
Organization organization, Guid installationId, Installation installation, SubscriptionInfo subInfo, Organization organization, Guid installationId, Installation installation, SubscriptionInfo subInfo,
byte[] licenseSignature) byte[] licenseSignature)
{ {
@ -71,7 +71,7 @@ public class CloudGetOrganizationLicenseQueryTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task GetLicenseAsync_WhenFeatureFlagEnabled_CreatesToken(SutProvider<CloudGetOrganizationLicenseQuery> sutProvider, public async Task GetLicenseAsync_WhenFeatureFlagEnabled_CreatesToken(SutProvider<GetCloudOrganizationLicenseQuery> sutProvider,
Organization organization, Guid installationId, Installation installation, SubscriptionInfo subInfo, Organization organization, Guid installationId, Installation installation, SubscriptionInfo subInfo,
byte[] licenseSignature, string token) byte[] licenseSignature, string token)
{ {
@ -90,7 +90,7 @@ public class CloudGetOrganizationLicenseQueryTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task GetLicenseAsync_MSPManagedOrganization_UsesProviderSubscription(SutProvider<CloudGetOrganizationLicenseQuery> sutProvider, public async Task GetLicenseAsync_MSPManagedOrganization_UsesProviderSubscription(SutProvider<GetCloudOrganizationLicenseQuery> sutProvider,
Organization organization, Guid installationId, Installation installation, SubscriptionInfo subInfo, Organization organization, Guid installationId, Installation installation, SubscriptionInfo subInfo,
byte[] licenseSignature, Provider provider) byte[] licenseSignature, Provider provider)
{ {

View File

@ -1,7 +1,7 @@
using System.Text.Json; using System.Text.Json;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses.SelfHosted; using Bit.Core.Billing.Organizations.Queries;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.OrganizationConnectionConfigs; using Bit.Core.Models.OrganizationConnectionConfigs;
@ -15,12 +15,12 @@ using Xunit;
namespace Bit.Core.Test.Billing.OrganizationFeatures.OrganizationLicenses; namespace Bit.Core.Test.Billing.OrganizationFeatures.OrganizationLicenses;
[SutProviderCustomize] [SutProviderCustomize]
public class SelfHostedGetOrganizationLicenseQueryTests public class GetSelfHostedOrganizationLicenseQueryTests
{ {
private static SutProvider<SelfHostedGetOrganizationLicenseQuery> GetSutProvider(BillingSyncConfig config, private static SutProvider<GetSelfHostedOrganizationLicenseQuery> GetSutProvider(BillingSyncConfig config,
string apiResponse = null) string apiResponse = null)
{ {
return new SutProvider<SelfHostedGetOrganizationLicenseQuery>() return new SutProvider<GetSelfHostedOrganizationLicenseQuery>()
.ConfigureBaseIdentityClientService($"licenses/organization/{config.CloudOrganizationId}", .ConfigureBaseIdentityClientService($"licenses/organization/{config.CloudOrganizationId}",
HttpMethod.Get, apiResponse: apiResponse); HttpMethod.Get, apiResponse: apiResponse);
} }

View File

@ -1,7 +1,7 @@
using System.Security.Claims; using System.Security.Claims;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Commands;
using Bit.Core.Billing.OrganizationFeatures.OrganizationLicenses; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Models.Data.Organizations; using Bit.Core.Models.Data.Organizations;

View File

@ -1,7 +1,7 @@
using System.Text.Json; using System.Text.Json;
using AutoFixture; using AutoFixture;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Models.Business; using Bit.Core.Billing.Organizations.Models;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Core.Test.Billing.AutoFixture; using Bit.Core.Test.Billing.AutoFixture;

View File

@ -1,8 +1,8 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Constants; using Bit.Core.Billing.Constants;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Billing.Services.Implementations;
using Bit.Core.Models.Data.Organizations.OrganizationUsers; using Bit.Core.Models.Data.Organizations.OrganizationUsers;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Utilities; using Bit.Core.Utilities;

View File

@ -1,4 +1,5 @@
using AspNetCoreRateLimit; using AspNetCoreRateLimit;
using Bit.Core.Billing.Organizations.Services;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Platform.Push; using Bit.Core.Platform.Push;
using Bit.Core.Platform.Push.Internal; using Bit.Core.Platform.Push.Internal;