mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 07:36:14 -05:00
[SG-841] Refactor GetOrganizationApiKeyCommand (#2436)
* Renamed and split up class to only query for an organization key * Added a command class to create an organization api key * Updated service registration and controller to include new changes * Updated test cases to reflect refactor * fixed lint issues * Fixed PR comment
This commit is contained in:
@ -26,9 +26,10 @@ public class OrganizationsControllerTests : IDisposable
|
||||
private readonly ISsoConfigRepository _ssoConfigRepository;
|
||||
private readonly ISsoConfigService _ssoConfigService;
|
||||
private readonly IUserService _userService;
|
||||
private readonly IGetOrganizationApiKeyCommand _getOrganizationApiKeyCommand;
|
||||
private readonly IGetOrganizationApiKeyQuery _getOrganizationApiKeyQuery;
|
||||
private readonly IRotateOrganizationApiKeyCommand _rotateOrganizationApiKeyCommand;
|
||||
private readonly IOrganizationApiKeyRepository _organizationApiKeyRepository;
|
||||
private readonly ICreateOrganizationApiKeyCommand _createOrganizationApiKeyCommand;
|
||||
|
||||
private readonly OrganizationsController _sut;
|
||||
|
||||
@ -43,15 +44,16 @@ public class OrganizationsControllerTests : IDisposable
|
||||
_policyRepository = Substitute.For<IPolicyRepository>();
|
||||
_ssoConfigRepository = Substitute.For<ISsoConfigRepository>();
|
||||
_ssoConfigService = Substitute.For<ISsoConfigService>();
|
||||
_getOrganizationApiKeyCommand = Substitute.For<IGetOrganizationApiKeyCommand>();
|
||||
_getOrganizationApiKeyQuery = Substitute.For<IGetOrganizationApiKeyQuery>();
|
||||
_rotateOrganizationApiKeyCommand = Substitute.For<IRotateOrganizationApiKeyCommand>();
|
||||
_organizationApiKeyRepository = Substitute.For<IOrganizationApiKeyRepository>();
|
||||
_userService = Substitute.For<IUserService>();
|
||||
_createOrganizationApiKeyCommand = Substitute.For<ICreateOrganizationApiKeyCommand>();
|
||||
|
||||
_sut = new OrganizationsController(_organizationRepository, _organizationUserRepository,
|
||||
_policyRepository, _organizationService, _userService, _paymentService, _currentContext,
|
||||
_ssoConfigRepository, _ssoConfigService, _getOrganizationApiKeyCommand, _rotateOrganizationApiKeyCommand,
|
||||
_organizationApiKeyRepository, _globalSettings);
|
||||
_ssoConfigRepository, _ssoConfigService, _getOrganizationApiKeyQuery, _rotateOrganizationApiKeyCommand,
|
||||
_createOrganizationApiKeyCommand, _organizationApiKeyRepository, _globalSettings);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
@ -0,0 +1,27 @@
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.OrganizationFeatures.OrganizationApiKeys;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Test.Common.AutoFixture;
|
||||
using Bit.Test.Common.AutoFixture.Attributes;
|
||||
using NSubstitute;
|
||||
using NSubstitute.ReceivedExtensions;
|
||||
using Xunit;
|
||||
|
||||
namespace Bit.Core.Test.OrganizationFeatures.OrganizationApiKeys;
|
||||
|
||||
[SutProviderCustomize]
|
||||
public class CreateOrganizationApiKeyCommandTest
|
||||
{
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task CreateAsync_CreatesOrganizationApiKey(SutProvider<CreateOrganizationApiKeyCommand> sutProvider,
|
||||
Guid organizationId, OrganizationApiKeyType keyType)
|
||||
{
|
||||
await sutProvider.Sut.CreateAsync(organizationId, keyType);
|
||||
|
||||
await sutProvider.GetDependency<IOrganizationApiKeyRepository>().Received(1)
|
||||
.CreateAsync(Arg.Is<OrganizationApiKey>(o => o.OrganizationId == organizationId
|
||||
&& o.Type == keyType));
|
||||
}
|
||||
}
|
@ -10,11 +10,11 @@ using Xunit;
|
||||
namespace Bit.Core.Test.OrganizationFeatures.OrganizationApiKeys;
|
||||
|
||||
[SutProviderCustomize]
|
||||
public class GetOrganizationApiKeyCommandTests
|
||||
public class GetOrganizationApiKeyQueryTests
|
||||
{
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task GetOrganizationApiKey_HasOne_Returns(SutProvider<GetOrganizationApiKeyCommand> sutProvider,
|
||||
public async Task GetOrganizationApiKey_HasOne_Returns(SutProvider<GetOrganizationApiKeyQuery> sutProvider,
|
||||
Guid id, Guid organizationId, OrganizationApiKeyType keyType)
|
||||
{
|
||||
sutProvider.GetDependency<IOrganizationApiKeyRepository>()
|
||||
@ -38,7 +38,7 @@ public class GetOrganizationApiKeyCommandTests
|
||||
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task GetOrganizationApiKey_HasTwo_Throws(SutProvider<GetOrganizationApiKeyCommand> sutProvider,
|
||||
public async Task GetOrganizationApiKey_HasTwo_Throws(SutProvider<GetOrganizationApiKeyQuery> sutProvider,
|
||||
Guid organizationId, OrganizationApiKeyType keyType)
|
||||
{
|
||||
sutProvider.GetDependency<IOrganizationApiKeyRepository>()
|
||||
@ -69,26 +69,7 @@ public class GetOrganizationApiKeyCommandTests
|
||||
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task GetOrganizationApiKey_HasNone_CreatesAndReturns(SutProvider<GetOrganizationApiKeyCommand> sutProvider,
|
||||
Guid organizationId, OrganizationApiKeyType keyType)
|
||||
{
|
||||
sutProvider.GetDependency<IOrganizationApiKeyRepository>()
|
||||
.GetManyByOrganizationIdTypeAsync(organizationId, keyType)
|
||||
.Returns(Enumerable.Empty<OrganizationApiKey>());
|
||||
|
||||
var apiKey = await sutProvider.Sut.GetOrganizationApiKeyAsync(organizationId, keyType);
|
||||
|
||||
Assert.NotNull(apiKey);
|
||||
Assert.Equal(organizationId, apiKey.OrganizationId);
|
||||
Assert.Equal(keyType, apiKey.Type);
|
||||
await sutProvider.GetDependency<IOrganizationApiKeyRepository>()
|
||||
.Received(1)
|
||||
.CreateAsync(Arg.Any<OrganizationApiKey>());
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task GetOrganizationApiKey_BadType_Throws(SutProvider<GetOrganizationApiKeyCommand> sutProvider,
|
||||
public async Task GetOrganizationApiKey_BadType_Throws(SutProvider<GetOrganizationApiKeyQuery> sutProvider,
|
||||
Guid organizationId, OrganizationApiKeyType keyType)
|
||||
{
|
||||
keyType = (OrganizationApiKeyType)byte.MaxValue;
|
Reference in New Issue
Block a user