From 9ff82ab176b4a36f7239146ab9f7735c7570a853 Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Thu, 9 Jun 2022 18:57:56 -0500 Subject: [PATCH] Use the correct policy enum type (#2045) Explicit conversion from non-generics to generics doesn't seem to work here, so I moved to using the read methods already on base Policy. --- src/Api/Controllers/OrganizationUsersController.cs | 4 ++-- src/Core/Entities/Policy.cs | 9 --------- src/Core/Repositories/IPolicyRepository.cs | 1 - .../Repositories/PolicyRepository.cs | 2 -- .../Repositories/PolicyRepository.cs | 2 -- .../Controllers/OrganizationUsersControllerTests.cs | 9 +++++---- test/Core.Test/AutoFixture/PolicyFixtures.cs | 10 ---------- test/Core.Test/Services/PolicyServiceTests.cs | 2 +- 8 files changed, 8 insertions(+), 31 deletions(-) diff --git a/src/Api/Controllers/OrganizationUsersController.cs b/src/Api/Controllers/OrganizationUsersController.cs index 08cce27a49..903a6c6f6b 100644 --- a/src/Api/Controllers/OrganizationUsersController.cs +++ b/src/Api/Controllers/OrganizationUsersController.cs @@ -182,10 +182,10 @@ namespace Bit.Api.Controllers throw new UnauthorizedAccessException(); } - var masterPasswordPolicy = await _policyRepository.GetByOrganizationIdTypeAsync(orgId, PolicyType.MasterPassword); + var masterPasswordPolicy = await _policyRepository.GetByOrganizationIdTypeAsync(orgId, PolicyType.ResetPassword); var useMasterPasswordPolicy = masterPasswordPolicy != null && masterPasswordPolicy.Enabled && - masterPasswordPolicy.DataModel.AutoEnrollEnabled; + masterPasswordPolicy.GetDataModel().AutoEnrollEnabled; if (useMasterPasswordPolicy && string.IsNullOrWhiteSpace(model.ResetPasswordKey)) diff --git a/src/Core/Entities/Policy.cs b/src/Core/Entities/Policy.cs index 12731a6df3..b721ed01e9 100644 --- a/src/Core/Entities/Policy.cs +++ b/src/Core/Entities/Policy.cs @@ -30,13 +30,4 @@ namespace Bit.Core.Entities Data = CoreHelpers.ClassToJsonData(dataModel); } } - - public class Policy : Policy where T : IPolicyDataModel, new() - { - public T DataModel - { - get => GetDataModel(); - set => SetDataModel(value); - } - } } diff --git a/src/Core/Repositories/IPolicyRepository.cs b/src/Core/Repositories/IPolicyRepository.cs index 6aa4300709..97c8f1ba12 100644 --- a/src/Core/Repositories/IPolicyRepository.cs +++ b/src/Core/Repositories/IPolicyRepository.cs @@ -10,7 +10,6 @@ namespace Bit.Core.Repositories public interface IPolicyRepository : IRepository { Task GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType type); - Task> GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType type) where T : IPolicyDataModel, new(); Task> GetManyByOrganizationIdAsync(Guid organizationId); Task> GetManyByUserIdAsync(Guid userId); Task> GetManyByTypeApplicableToUserIdAsync(Guid userId, PolicyType policyType, diff --git a/src/Infrastructure.Dapper/Repositories/PolicyRepository.cs b/src/Infrastructure.Dapper/Repositories/PolicyRepository.cs index 913eb69236..50adc6cda9 100644 --- a/src/Infrastructure.Dapper/Repositories/PolicyRepository.cs +++ b/src/Infrastructure.Dapper/Repositories/PolicyRepository.cs @@ -23,8 +23,6 @@ namespace Bit.Infrastructure.Dapper.Repositories : base(connectionString, readOnlyConnectionString) { } - public async Task> GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType type) where T : IPolicyDataModel, new() => - (Policy)await GetByOrganizationIdTypeAsync(organizationId, type); public async Task GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType type) { using (var connection = new SqlConnection(ConnectionString)) diff --git a/src/Infrastructure.EntityFramework/Repositories/PolicyRepository.cs b/src/Infrastructure.EntityFramework/Repositories/PolicyRepository.cs index f6884123ea..c9c2752e94 100644 --- a/src/Infrastructure.EntityFramework/Repositories/PolicyRepository.cs +++ b/src/Infrastructure.EntityFramework/Repositories/PolicyRepository.cs @@ -19,8 +19,6 @@ namespace Bit.Infrastructure.EntityFramework.Repositories : base(serviceScopeFactory, mapper, (DatabaseContext context) => context.Policies) { } - public async Task> GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType type) where T : IPolicyDataModel, new() => - (Core.Entities.Policy)await GetByOrganizationIdTypeAsync(organizationId, type); public async Task GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType type) { using (var scope = ServiceScopeFactory.CreateScope()) diff --git a/test/Api.Test/Controllers/OrganizationUsersControllerTests.cs b/test/Api.Test/Controllers/OrganizationUsersControllerTests.cs index a900bfdc25..4ac6ab0fd2 100644 --- a/test/Api.Test/Controllers/OrganizationUsersControllerTests.cs +++ b/test/Api.Test/Controllers/OrganizationUsersControllerTests.cs @@ -7,6 +7,7 @@ using Bit.Core.Entities; using Bit.Core.Models.Data.Organizations.Policies; using Bit.Core.Repositories; using Bit.Core.Services; +using Bit.Core.Utilities; using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture.Attributes; using NSubstitute; @@ -48,14 +49,14 @@ namespace Bit.Api.Test.Controllers public async Task Accept_RequireMasterPasswordReset(Guid orgId, Guid orgUserId, OrganizationUserAcceptRequestModel model, User user, SutProvider sutProvider) { - var policy = new Policy + var policy = new Policy { Enabled = true, - DataModel = new ResetPasswordDataModel { AutoEnrollEnabled = true, }, + Data = CoreHelpers.ClassToJsonData(new ResetPasswordDataModel { AutoEnrollEnabled = true, }), }; sutProvider.GetDependency().GetUserByPrincipalAsync(default).ReturnsForAnyArgs(user); - sutProvider.GetDependency().GetByOrganizationIdTypeAsync(orgId, - Core.Enums.PolicyType.MasterPassword).Returns(policy); + sutProvider.GetDependency().GetByOrganizationIdTypeAsync(orgId, + Core.Enums.PolicyType.ResetPassword).Returns(policy); await sutProvider.Sut.Accept(orgId, orgUserId, model); diff --git a/test/Core.Test/AutoFixture/PolicyFixtures.cs b/test/Core.Test/AutoFixture/PolicyFixtures.cs index 1ea6f74563..d892ed3b20 100644 --- a/test/Core.Test/AutoFixture/PolicyFixtures.cs +++ b/test/Core.Test/AutoFixture/PolicyFixtures.cs @@ -30,16 +30,6 @@ namespace Bit.Core.Test.AutoFixture.PolicyFixtures .With(o => o.OrganizationId, Guid.NewGuid()) .With(o => o.Type, Type) .With(o => o.Enabled, true)); - fixture.Customize>(composer => composer - .With(o => o.Data, JsonSerializer.Serialize(fixture.Create())) - .With(o => o.OrganizationId, Guid.NewGuid()) - .With(o => o.Type, Type) - .With(o => o.Enabled, true)); - fixture.Customize>(composer => composer - .With(o => o.Data, JsonSerializer.Serialize(fixture.Create())) - .With(o => o.OrganizationId, Guid.NewGuid()) - .With(o => o.Type, Type) - .With(o => o.Enabled, true)); } } diff --git a/test/Core.Test/Services/PolicyServiceTests.cs b/test/Core.Test/Services/PolicyServiceTests.cs index 4451eaf810..89d5ab2d3b 100644 --- a/test/Core.Test/Services/PolicyServiceTests.cs +++ b/test/Core.Test/Services/PolicyServiceTests.cs @@ -203,7 +203,7 @@ namespace Bit.Core.Test.Services [Theory, BitAutoData] public async Task SaveAsync_NewPolicy_Created( - [PolicyFixtures.Policy(PolicyType.MasterPassword)] Policy policy, SutProvider sutProvider) + [PolicyFixtures.Policy(PolicyType.ResetPassword)] Policy policy, SutProvider sutProvider) { policy.Id = default;