mirror of
https://github.com/bitwarden/server
synced 2025-12-14 07:13:39 +00:00
* Add PolicyValidatorsRefactor constant to FeatureFlagKeys in Constants.cs * Add Metadata property and ToSavePolicyModel method to PolicyUpdateRequestModel * Refactor PoliciesController to utilize IVNextSavePolicyCommand based on feature flag - Added IFeatureService and IVNextSavePolicyCommand dependencies to PoliciesController. - Updated PutVNext method to conditionally use VNextSavePolicyCommand or SavePolicyCommand based on the PolicyValidatorsRefactor feature flag. - Enhanced unit tests to verify behavior for both enabled and disabled states of the feature flag. * Update public PoliciesController to to utilize IVNextSavePolicyCommand based on feature flag - Introduced IFeatureService and IVNextSavePolicyCommand to manage policy saving based on the PolicyValidatorsRefactor feature flag. - Updated the Put method to conditionally use the new VNextSavePolicyCommand or the legacy SavePolicyCommand. - Added unit tests to validate the behavior of the Put method for both enabled and disabled states of the feature flag. * Refactor VerifyOrganizationDomainCommand to utilize IVNextSavePolicyCommand based on feature flag - Added IFeatureService and IVNextSavePolicyCommand dependencies to VerifyOrganizationDomainCommand. - Updated EnableSingleOrganizationPolicyAsync method to conditionally use VNextSavePolicyCommand or SavePolicyCommand based on the PolicyValidatorsRefactor feature flag. - Enhanced unit tests to validate the behavior when the feature flag is enabled. * Enhance SsoConfigService to utilize IVNextSavePolicyCommand based on feature flag - Added IFeatureService and IVNextSavePolicyCommand dependencies to SsoConfigService. - Updated SaveAsync method to conditionally use VNextSavePolicyCommand or SavePolicyCommand based on the PolicyValidatorsRefactor feature flag. - Added unit tests to validate the behavior when the feature flag is enabled. * Refactor SavePolicyModel to simplify constructor usage by removing EmptyMetadataModel parameter. Update related usages across the codebase to reflect the new constructor overloads. * Update PolicyUpdateRequestModel to make Metadata property nullable for improved null safety
88 lines
3.0 KiB
C#
88 lines
3.0 KiB
C#
using Bit.Api.AdminConsole.Public.Controllers;
|
|
using Bit.Api.AdminConsole.Public.Models.Request;
|
|
using Bit.Core;
|
|
using Bit.Core.AdminConsole.Entities;
|
|
using Bit.Core.AdminConsole.Enums;
|
|
using Bit.Core.AdminConsole.Models.Data;
|
|
using Bit.Core.AdminConsole.OrganizationFeatures.Policies;
|
|
using Bit.Core.AdminConsole.OrganizationFeatures.Policies.Models;
|
|
using Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyUpdateEvents.Interfaces;
|
|
using Bit.Core.Context;
|
|
using Bit.Core.Services;
|
|
using Bit.Test.Common.AutoFixture;
|
|
using Bit.Test.Common.AutoFixture.Attributes;
|
|
using NSubstitute;
|
|
using Xunit;
|
|
|
|
namespace Bit.Api.Test.AdminConsole.Public.Controllers;
|
|
|
|
[ControllerCustomize(typeof(PoliciesController))]
|
|
[SutProviderCustomize]
|
|
public class PoliciesControllerTests
|
|
{
|
|
[Theory]
|
|
[BitAutoData]
|
|
public async Task Put_WhenPolicyValidatorsRefactorEnabled_UsesVNextSavePolicyCommand(
|
|
Guid organizationId,
|
|
PolicyType policyType,
|
|
PolicyUpdateRequestModel model,
|
|
Policy policy,
|
|
SutProvider<PoliciesController> sutProvider)
|
|
{
|
|
// Arrange
|
|
policy.Data = null;
|
|
sutProvider.GetDependency<ICurrentContext>()
|
|
.OrganizationId.Returns(organizationId);
|
|
sutProvider.GetDependency<IFeatureService>()
|
|
.IsEnabled(FeatureFlagKeys.PolicyValidatorsRefactor)
|
|
.Returns(true);
|
|
sutProvider.GetDependency<IVNextSavePolicyCommand>()
|
|
.SaveAsync(Arg.Any<SavePolicyModel>())
|
|
.Returns(policy);
|
|
|
|
// Act
|
|
await sutProvider.Sut.Put(policyType, model);
|
|
|
|
// Assert
|
|
await sutProvider.GetDependency<IVNextSavePolicyCommand>()
|
|
.Received(1)
|
|
.SaveAsync(Arg.Is<SavePolicyModel>(m =>
|
|
m.PolicyUpdate.OrganizationId == organizationId &&
|
|
m.PolicyUpdate.Type == policyType &&
|
|
m.PolicyUpdate.Enabled == model.Enabled.GetValueOrDefault() &&
|
|
m.PerformedBy is SystemUser));
|
|
}
|
|
|
|
[Theory]
|
|
[BitAutoData]
|
|
public async Task Put_WhenPolicyValidatorsRefactorDisabled_UsesLegacySavePolicyCommand(
|
|
Guid organizationId,
|
|
PolicyType policyType,
|
|
PolicyUpdateRequestModel model,
|
|
Policy policy,
|
|
SutProvider<PoliciesController> sutProvider)
|
|
{
|
|
// Arrange
|
|
policy.Data = null;
|
|
sutProvider.GetDependency<ICurrentContext>()
|
|
.OrganizationId.Returns(organizationId);
|
|
sutProvider.GetDependency<IFeatureService>()
|
|
.IsEnabled(FeatureFlagKeys.PolicyValidatorsRefactor)
|
|
.Returns(false);
|
|
sutProvider.GetDependency<ISavePolicyCommand>()
|
|
.SaveAsync(Arg.Any<PolicyUpdate>())
|
|
.Returns(policy);
|
|
|
|
// Act
|
|
await sutProvider.Sut.Put(policyType, model);
|
|
|
|
// Assert
|
|
await sutProvider.GetDependency<ISavePolicyCommand>()
|
|
.Received(1)
|
|
.SaveAsync(Arg.Is<PolicyUpdate>(p =>
|
|
p.OrganizationId == organizationId &&
|
|
p.Type == policyType &&
|
|
p.Enabled == model.Enabled));
|
|
}
|
|
}
|