1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-25 05:08:48 -05:00

[PM-20633] rename personal ownership (#5978)

* rename personal ownership

* rename enums, files, tests
This commit is contained in:
Brandon Treston 2025-06-24 10:29:09 -04:00 committed by GitHub
parent 86a4ce5a51
commit 70703cb3b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 131 additions and 131 deletions

View File

@ -7,7 +7,7 @@ public enum PolicyType : byte
PasswordGenerator = 2, PasswordGenerator = 2,
SingleOrg = 3, SingleOrg = 3,
RequireSso = 4, RequireSso = 4,
PersonalOwnership = 5, OrganizationDataOwnership = 5,
DisableSend = 6, DisableSend = 6,
SendOptions = 7, SendOptions = 7,
ResetPassword = 8, ResetPassword = 8,
@ -35,7 +35,7 @@ public static class PolicyTypeExtensions
PolicyType.PasswordGenerator => "Password generator", PolicyType.PasswordGenerator => "Password generator",
PolicyType.SingleOrg => "Single organization", PolicyType.SingleOrg => "Single organization",
PolicyType.RequireSso => "Require single sign-on authentication", PolicyType.RequireSso => "Require single sign-on authentication",
PolicyType.PersonalOwnership => "Remove individual vault", PolicyType.OrganizationDataOwnership => "Enforce organization data ownership",
PolicyType.DisableSend => "Remove Send", PolicyType.DisableSend => "Remove Send",
PolicyType.SendOptions => "Send options", PolicyType.SendOptions => "Send options",
PolicyType.ResetPassword => "Account recovery administration", PolicyType.ResetPassword => "Account recovery administration",

View File

@ -223,7 +223,7 @@ public class ConfirmOrganizationUserCommand : IConfirmOrganizationUserCommand
private async Task HandleConfirmationSideEffectsAsync(Guid organizationId, OrganizationUser organizationUser, string defaultUserCollectionName) private async Task HandleConfirmationSideEffectsAsync(Guid organizationId, OrganizationUser organizationUser, string defaultUserCollectionName)
{ {
// Create DefaultUserCollection type collection for the user if the PersonalOwnership policy is enabled for the organization // Create DefaultUserCollection type collection for the user if the OrganizationDataOwnership policy is enabled for the organization
var requiresDefaultCollection = await OrganizationRequiresDefaultCollectionAsync(organizationId, organizationUser.UserId.Value, defaultUserCollectionName); var requiresDefaultCollection = await OrganizationRequiresDefaultCollectionAsync(organizationId, organizationUser.UserId.Value, defaultUserCollectionName);
if (requiresDefaultCollection) if (requiresDefaultCollection)
{ {
@ -244,8 +244,8 @@ public class ConfirmOrganizationUserCommand : IConfirmOrganizationUserCommand
return false; return false;
} }
var personalOwnershipRequirement = await _policyRequirementQuery.GetAsync<PersonalOwnershipPolicyRequirement>(userId); var organizationDataOwnershipRequirement = await _policyRequirementQuery.GetAsync<OrganizationDataOwnershipPolicyRequirement>(userId);
return personalOwnershipRequirement.RequiresDefaultCollection(organizationId); return organizationDataOwnershipRequirement.RequiresDefaultCollection(organizationId);
} }
private async Task CreateDefaultCollectionAsync(Guid organizationId, Guid organizationUserId, string defaultCollectionName) private async Task CreateDefaultCollectionAsync(Guid organizationId, Guid organizationUserId, string defaultCollectionName)

View File

@ -0,0 +1,72 @@
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.Data.Organizations.Policies;
namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements;
/// <summary>
/// Represents the Organization Data Ownership policy state.
/// </summary>
public enum OrganizationDataOwnershipState
{
/// <summary>
/// Organization Data Ownership is enforced- members are required to save items to an organization.
/// </summary>
Enabled = 1,
/// <summary>
/// Organization Data Ownership is not enforced- users can save items to their personal vault.
/// </summary>
Disabled = 2
}
/// <summary>
/// Policy requirements for the Organization data ownership policy
/// </summary>
public class OrganizationDataOwnershipPolicyRequirement : IPolicyRequirement
{
private readonly IEnumerable<Guid> _organizationIdsWithPolicyEnabled;
/// <param name="organizationDataOwnershipState">
/// The organization data ownership state for the user.
/// </param>
/// <param name="organizationIdsWithPolicyEnabled">
/// The collection of Organization IDs that have the Organization Data Ownership policy enabled.
/// </param>
public OrganizationDataOwnershipPolicyRequirement(
OrganizationDataOwnershipState organizationDataOwnershipState,
IEnumerable<Guid> organizationIdsWithPolicyEnabled)
{
_organizationIdsWithPolicyEnabled = organizationIdsWithPolicyEnabled ?? [];
State = organizationDataOwnershipState;
}
/// <summary>
/// The Organization data ownership policy state for the user.
/// </summary>
public OrganizationDataOwnershipState State { get; }
/// <summary>
/// Returns true if the Organization Data Ownership policy is enforced in that organization.
/// </summary>
public bool RequiresDefaultCollection(Guid organizationId)
{
return _organizationIdsWithPolicyEnabled.Contains(organizationId);
}
}
public class OrganizationDataOwnershipPolicyRequirementFactory : BasePolicyRequirementFactory<OrganizationDataOwnershipPolicyRequirement>
{
public override PolicyType PolicyType => PolicyType.OrganizationDataOwnership;
public override OrganizationDataOwnershipPolicyRequirement Create(IEnumerable<PolicyDetails> policyDetails)
{
var organizationDataOwnershipState = policyDetails.Any()
? OrganizationDataOwnershipState.Enabled
: OrganizationDataOwnershipState.Disabled;
var organizationIdsWithPolicyEnabled = policyDetails.Select(p => p.OrganizationId).ToHashSet();
return new OrganizationDataOwnershipPolicyRequirement(
organizationDataOwnershipState,
organizationIdsWithPolicyEnabled);
}
}

View File

@ -1,72 +0,0 @@
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.Data.Organizations.Policies;
namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements;
/// <summary>
/// Represents the personal ownership policy state.
/// </summary>
public enum PersonalOwnershipState
{
/// <summary>
/// Personal ownership is allowed - users can save items to their personal vault.
/// </summary>
Allowed,
/// <summary>
/// Personal ownership is restricted - members are required to save items to an organization.
/// </summary>
Restricted
}
/// <summary>
/// Policy requirements for the Disable Personal Ownership policy.
/// </summary>
public class PersonalOwnershipPolicyRequirement : IPolicyRequirement
{
private readonly IEnumerable<Guid> _organizationIdsWithPolicyEnabled;
/// <param name="personalOwnershipState">
/// The personal ownership state for the user.
/// </param>
/// <param name="organizationIdsWithPolicyEnabled">
/// The collection of Organization IDs that have the Disable Personal Ownership policy enabled.
/// </param>
public PersonalOwnershipPolicyRequirement(
PersonalOwnershipState personalOwnershipState,
IEnumerable<Guid> organizationIdsWithPolicyEnabled)
{
_organizationIdsWithPolicyEnabled = organizationIdsWithPolicyEnabled ?? [];
State = personalOwnershipState;
}
/// <summary>
/// The personal ownership policy state for the user.
/// </summary>
public PersonalOwnershipState State { get; }
/// <summary>
/// Returns true if the Disable Personal Ownership policy is enforced in that organization.
/// </summary>
public bool RequiresDefaultCollection(Guid organizationId)
{
return _organizationIdsWithPolicyEnabled.Contains(organizationId);
}
}
public class PersonalOwnershipPolicyRequirementFactory : BasePolicyRequirementFactory<PersonalOwnershipPolicyRequirement>
{
public override PolicyType PolicyType => PolicyType.PersonalOwnership;
public override PersonalOwnershipPolicyRequirement Create(IEnumerable<PolicyDetails> policyDetails)
{
var personalOwnershipState = policyDetails.Any()
? PersonalOwnershipState.Restricted
: PersonalOwnershipState.Allowed;
var organizationIdsWithPolicyEnabled = policyDetails.Select(p => p.OrganizationId).ToHashSet();
return new PersonalOwnershipPolicyRequirement(
personalOwnershipState,
organizationIdsWithPolicyEnabled);
}
}

View File

@ -34,7 +34,7 @@ public static class PolicyServiceCollectionExtensions
services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, DisableSendPolicyRequirementFactory>(); services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, DisableSendPolicyRequirementFactory>();
services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, SendOptionsPolicyRequirementFactory>(); services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, SendOptionsPolicyRequirementFactory>();
services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, ResetPasswordPolicyRequirementFactory>(); services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, ResetPasswordPolicyRequirementFactory>();
services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, PersonalOwnershipPolicyRequirementFactory>(); services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, OrganizationDataOwnershipPolicyRequirementFactory>();
services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, RequireSsoPolicyRequirementFactory>(); services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, RequireSsoPolicyRequirementFactory>();
services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, RequireTwoFactorPolicyRequirementFactory>(); services.AddScoped<IPolicyRequirementFactory<IPolicyRequirement>, RequireTwoFactorPolicyRequirementFactory>();
} }

View File

@ -55,11 +55,11 @@ public class ImportCiphersCommand : IImportCiphersCommand
Guid importingUserId) Guid importingUserId)
{ {
// Make sure the user can save new ciphers to their personal vault // Make sure the user can save new ciphers to their personal vault
var isPersonalVaultRestricted = _featureService.IsEnabled(FeatureFlagKeys.PolicyRequirements) var organizationDataOwnershipEnabled = _featureService.IsEnabled(FeatureFlagKeys.PolicyRequirements)
? (await _policyRequirementQuery.GetAsync<PersonalOwnershipPolicyRequirement>(importingUserId)).State == PersonalOwnershipState.Restricted ? (await _policyRequirementQuery.GetAsync<OrganizationDataOwnershipPolicyRequirement>(importingUserId)).State == OrganizationDataOwnershipState.Enabled
: await _policyService.AnyPoliciesApplicableToUserAsync(importingUserId, PolicyType.PersonalOwnership); : await _policyService.AnyPoliciesApplicableToUserAsync(importingUserId, PolicyType.OrganizationDataOwnership);
if (isPersonalVaultRestricted) if (organizationDataOwnershipEnabled)
{ {
throw new BadRequestException("You cannot import items into your personal vault because you are " + throw new BadRequestException("You cannot import items into your personal vault because you are " +
"a member of an organization which forbids it."); "a member of an organization which forbids it.");

View File

@ -142,11 +142,11 @@ public class CipherService : ICipherService
} }
else else
{ {
var isPersonalVaultRestricted = _featureService.IsEnabled(FeatureFlagKeys.PolicyRequirements) var organizationDataOwnershipEnabled = _featureService.IsEnabled(FeatureFlagKeys.PolicyRequirements)
? (await _policyRequirementQuery.GetAsync<PersonalOwnershipPolicyRequirement>(savingUserId)).State == PersonalOwnershipState.Restricted ? (await _policyRequirementQuery.GetAsync<OrganizationDataOwnershipPolicyRequirement>(savingUserId)).State == OrganizationDataOwnershipState.Enabled
: await _policyService.AnyPoliciesApplicableToUserAsync(savingUserId, PolicyType.PersonalOwnership); : await _policyService.AnyPoliciesApplicableToUserAsync(savingUserId, PolicyType.OrganizationDataOwnership);
if (isPersonalVaultRestricted) if (organizationDataOwnershipEnabled)
{ {
throw new BadRequestException("Due to an Enterprise Policy, you are restricted from saving items to your personal vault."); throw new BadRequestException("Due to an Enterprise Policy, you are restricted from saving items to your personal vault.");
} }

View File

@ -445,7 +445,7 @@ public class ConfirmOrganizationUserCommandTests
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public async Task ConfirmUserAsync_WithCreateDefaultLocationEnabled_WithPersonalOwnershipPolicyApplicable_WithValidCollectionName_CreatesDefaultCollection( public async Task ConfirmUserAsync_WithCreateDefaultLocationEnabled_WithOrganizationDataOwnershipPolicyApplicable_WithValidCollectionName_CreatesDefaultCollection(
Organization organization, OrganizationUser confirmingUser, Organization organization, OrganizationUser confirmingUser,
[OrganizationUser(OrganizationUserStatusType.Accepted)] OrganizationUser orgUser, User user, [OrganizationUser(OrganizationUserStatusType.Accepted)] OrganizationUser orgUser, User user,
string key, string collectionName, SutProvider<ConfirmOrganizationUserCommand> sutProvider) string key, string collectionName, SutProvider<ConfirmOrganizationUserCommand> sutProvider)
@ -461,9 +461,9 @@ public class ConfirmOrganizationUserCommandTests
sutProvider.GetDependency<IFeatureService>().IsEnabled(FeatureFlagKeys.CreateDefaultLocation).Returns(true); sutProvider.GetDependency<IFeatureService>().IsEnabled(FeatureFlagKeys.CreateDefaultLocation).Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(user.Id) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(user.Id)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Restricted, OrganizationDataOwnershipState.Enabled,
[organization.Id])); [organization.Id]));
await sutProvider.Sut.ConfirmUserAsync(orgUser.OrganizationId, orgUser.Id, key, confirmingUser.Id, collectionName); await sutProvider.Sut.ConfirmUserAsync(orgUser.OrganizationId, orgUser.Id, key, confirmingUser.Id, collectionName);
@ -482,7 +482,7 @@ public class ConfirmOrganizationUserCommandTests
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public async Task ConfirmUserAsync_WithCreateDefaultLocationEnabled_WithPersonalOwnershipPolicyApplicable_WithInvalidCollectionName_DoesNotCreateDefaultCollection( public async Task ConfirmUserAsync_WithCreateDefaultLocationEnabled_WithOrganizationDataOwnershipPolicyApplicable_WithInvalidCollectionName_DoesNotCreateDefaultCollection(
Organization org, OrganizationUser confirmingUser, Organization org, OrganizationUser confirmingUser,
[OrganizationUser(OrganizationUserStatusType.Accepted)] OrganizationUser orgUser, User user, [OrganizationUser(OrganizationUserStatusType.Accepted)] OrganizationUser orgUser, User user,
string key, SutProvider<ConfirmOrganizationUserCommand> sutProvider) string key, SutProvider<ConfirmOrganizationUserCommand> sutProvider)
@ -498,9 +498,9 @@ public class ConfirmOrganizationUserCommandTests
sutProvider.GetDependency<IFeatureService>().IsEnabled(FeatureFlagKeys.CreateDefaultLocation).Returns(true); sutProvider.GetDependency<IFeatureService>().IsEnabled(FeatureFlagKeys.CreateDefaultLocation).Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(user.Id) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(user.Id)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Restricted, OrganizationDataOwnershipState.Enabled,
[org.Id])); [org.Id]));
await sutProvider.Sut.ConfirmUserAsync(orgUser.OrganizationId, orgUser.Id, key, confirmingUser.Id, ""); await sutProvider.Sut.ConfirmUserAsync(orgUser.OrganizationId, orgUser.Id, key, confirmingUser.Id, "");
@ -511,7 +511,7 @@ public class ConfirmOrganizationUserCommandTests
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public async Task ConfirmUserAsync_WithCreateDefaultLocationEnabled_WithPersonalOwnershipPolicyNotApplicable_DoesNotCreateDefaultCollection( public async Task ConfirmUserAsync_WithCreateDefaultLocationEnabled_WithOrganizationDataOwnershipPolicyNotApplicable_DoesNotCreateDefaultCollection(
Organization org, OrganizationUser confirmingUser, Organization org, OrganizationUser confirmingUser,
[OrganizationUser(OrganizationUserStatusType.Accepted)] OrganizationUser orgUser, User user, [OrganizationUser(OrganizationUserStatusType.Accepted)] OrganizationUser orgUser, User user,
string key, string collectionName, SutProvider<ConfirmOrganizationUserCommand> sutProvider) string key, string collectionName, SutProvider<ConfirmOrganizationUserCommand> sutProvider)
@ -526,9 +526,9 @@ public class ConfirmOrganizationUserCommandTests
sutProvider.GetDependency<IFeatureService>().IsEnabled(FeatureFlagKeys.CreateDefaultLocation).Returns(true); sutProvider.GetDependency<IFeatureService>().IsEnabled(FeatureFlagKeys.CreateDefaultLocation).Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(user.Id) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(user.Id)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Restricted, OrganizationDataOwnershipState.Enabled,
[Guid.NewGuid()])); [Guid.NewGuid()]));
await sutProvider.Sut.ConfirmUserAsync(orgUser.OrganizationId, orgUser.Id, key, confirmingUser.Id, collectionName); await sutProvider.Sut.ConfirmUserAsync(orgUser.OrganizationId, orgUser.Id, key, confirmingUser.Id, collectionName);

View File

@ -9,30 +9,30 @@ using Xunit;
namespace Bit.Core.Test.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements; namespace Bit.Core.Test.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements;
[SutProviderCustomize] [SutProviderCustomize]
public class PersonalOwnershipPolicyRequirementFactoryTests public class OrganizationDataOwnershipPolicyRequirementFactoryTests
{ {
[Theory, BitAutoData] [Theory, BitAutoData]
public void State_WithNoPolicies_ReturnsAllowed(SutProvider<PersonalOwnershipPolicyRequirementFactory> sutProvider) public void State_WithNoPolicies_ReturnsAllowed(SutProvider<OrganizationDataOwnershipPolicyRequirementFactory> sutProvider)
{ {
var actual = sutProvider.Sut.Create([]); var actual = sutProvider.Sut.Create([]);
Assert.Equal(PersonalOwnershipState.Allowed, actual.State); Assert.Equal(OrganizationDataOwnershipState.Disabled, actual.State);
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public void State_WithPersonalOwnershipPolicies_ReturnsRestricted( public void State_WithOrganizationDataOwnershipPolicies_ReturnsRestricted(
[PolicyDetails(PolicyType.PersonalOwnership)] PolicyDetails[] policies, [PolicyDetails(PolicyType.OrganizationDataOwnership)] PolicyDetails[] policies,
SutProvider<PersonalOwnershipPolicyRequirementFactory> sutProvider) SutProvider<OrganizationDataOwnershipPolicyRequirementFactory> sutProvider)
{ {
var actual = sutProvider.Sut.Create(policies); var actual = sutProvider.Sut.Create(policies);
Assert.Equal(PersonalOwnershipState.Restricted, actual.State); Assert.Equal(OrganizationDataOwnershipState.Enabled, actual.State);
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public void RequiresDefaultCollection_WithNoPolicies_ReturnsFalse( public void RequiresDefaultCollection_WithNoPolicies_ReturnsFalse(
Guid organizationId, Guid organizationId,
SutProvider<PersonalOwnershipPolicyRequirementFactory> sutProvider) SutProvider<OrganizationDataOwnershipPolicyRequirementFactory> sutProvider)
{ {
var actual = sutProvider.Sut.Create([]); var actual = sutProvider.Sut.Create([]);
@ -40,10 +40,10 @@ public class PersonalOwnershipPolicyRequirementFactoryTests
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public void RequiresDefaultCollection_WithPersonalOwnershipPolicies_ReturnsCorrectResult( public void RequiresDefaultCollection_WithOrganizationDataOwnershipPolicies_ReturnsCorrectResult(
[PolicyDetails(PolicyType.PersonalOwnership)] PolicyDetails[] policies, [PolicyDetails(PolicyType.OrganizationDataOwnership)] PolicyDetails[] policies,
Guid nonPolicyOrganizationId, Guid nonPolicyOrganizationId,
SutProvider<PersonalOwnershipPolicyRequirementFactory> sutProvider) SutProvider<OrganizationDataOwnershipPolicyRequirementFactory> sutProvider)
{ {
var actual = sutProvider.Sut.Create(policies); var actual = sutProvider.Sut.Create(policies);

View File

@ -31,7 +31,7 @@ public class ImportCiphersAsyncCommandTests
SutProvider<ImportCiphersCommand> sutProvider) SutProvider<ImportCiphersCommand> sutProvider)
{ {
sutProvider.GetDependency<IPolicyService>() sutProvider.GetDependency<IPolicyService>()
.AnyPoliciesApplicableToUserAsync(importingUserId, PolicyType.PersonalOwnership) .AnyPoliciesApplicableToUserAsync(importingUserId, PolicyType.OrganizationDataOwnership)
.Returns(false); .Returns(false);
sutProvider.GetDependency<IFolderRepository>() sutProvider.GetDependency<IFolderRepository>()
@ -51,7 +51,7 @@ public class ImportCiphersAsyncCommandTests
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public async Task ImportIntoIndividualVaultAsync_WithPolicyRequirementsEnabled_WithDisablePersonalOwnershipPolicyDisabled_Success( public async Task ImportIntoIndividualVaultAsync_WithPolicyRequirementsEnabled_WithOrganizationDataOwnershipPolicyDisabled_Success(
Guid importingUserId, Guid importingUserId,
List<CipherDetails> ciphers, List<CipherDetails> ciphers,
SutProvider<ImportCiphersCommand> sutProvider) SutProvider<ImportCiphersCommand> sutProvider)
@ -61,9 +61,9 @@ public class ImportCiphersAsyncCommandTests
.Returns(true); .Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(importingUserId) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(importingUserId)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Allowed, OrganizationDataOwnershipState.Disabled,
[])); []));
sutProvider.GetDependency<IFolderRepository>() sutProvider.GetDependency<IFolderRepository>()
@ -91,7 +91,7 @@ public class ImportCiphersAsyncCommandTests
ciphers.ForEach(c => c.UserId = userId); ciphers.ForEach(c => c.UserId = userId);
sutProvider.GetDependency<IPolicyService>() sutProvider.GetDependency<IPolicyService>()
.AnyPoliciesApplicableToUserAsync(userId, PolicyType.PersonalOwnership) .AnyPoliciesApplicableToUserAsync(userId, PolicyType.OrganizationDataOwnership)
.Returns(true); .Returns(true);
var folderRelationships = new List<KeyValuePair<int, int>>(); var folderRelationships = new List<KeyValuePair<int, int>>();
@ -103,7 +103,7 @@ public class ImportCiphersAsyncCommandTests
} }
[Theory, BitAutoData] [Theory, BitAutoData]
public async Task ImportIntoIndividualVaultAsync_WithPolicyRequirementsEnabled_WithDisablePersonalOwnershipPolicyEnabled_ThrowsBadRequestException( public async Task ImportIntoIndividualVaultAsync_WithPolicyRequirementsEnabled_WithOrganizationDataOwnershipPolicyEnabled_ThrowsBadRequestException(
List<Folder> folders, List<Folder> folders,
List<CipherDetails> ciphers, List<CipherDetails> ciphers,
SutProvider<ImportCiphersCommand> sutProvider) SutProvider<ImportCiphersCommand> sutProvider)
@ -117,9 +117,9 @@ public class ImportCiphersAsyncCommandTests
.Returns(true); .Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(userId) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(userId)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Restricted, OrganizationDataOwnershipState.Enabled,
[Guid.NewGuid()])); [Guid.NewGuid()]));
var folderRelationships = new List<KeyValuePair<int, int>>(); var folderRelationships = new List<KeyValuePair<int, int>>();

View File

@ -114,7 +114,7 @@ public class CipherServiceTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task SaveDetailsAsync_PersonalVault_WithDisablePersonalOwnershipPolicyEnabled_Throws( public async Task SaveDetailsAsync_PersonalVault_WithOrganizationDataOwnershipPolicyEnabled_Throws(
SutProvider<CipherService> sutProvider, SutProvider<CipherService> sutProvider,
CipherDetails cipher, CipherDetails cipher,
Guid savingUserId) Guid savingUserId)
@ -124,7 +124,7 @@ public class CipherServiceTests
cipher.OrganizationId = null; cipher.OrganizationId = null;
sutProvider.GetDependency<IPolicyService>() sutProvider.GetDependency<IPolicyService>()
.AnyPoliciesApplicableToUserAsync(savingUserId, PolicyType.PersonalOwnership) .AnyPoliciesApplicableToUserAsync(savingUserId, PolicyType.OrganizationDataOwnership)
.Returns(true); .Returns(true);
var exception = await Assert.ThrowsAsync<BadRequestException>( var exception = await Assert.ThrowsAsync<BadRequestException>(
@ -134,7 +134,7 @@ public class CipherServiceTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task SaveDetailsAsync_PersonalVault_WithDisablePersonalOwnershipPolicyDisabled_Succeeds( public async Task SaveDetailsAsync_PersonalVault_WithOrganizationDataOwnershipPolicyDisabled_Succeeds(
SutProvider<CipherService> sutProvider, SutProvider<CipherService> sutProvider,
CipherDetails cipher, CipherDetails cipher,
Guid savingUserId) Guid savingUserId)
@ -144,7 +144,7 @@ public class CipherServiceTests
cipher.OrganizationId = null; cipher.OrganizationId = null;
sutProvider.GetDependency<IPolicyService>() sutProvider.GetDependency<IPolicyService>()
.AnyPoliciesApplicableToUserAsync(savingUserId, PolicyType.PersonalOwnership) .AnyPoliciesApplicableToUserAsync(savingUserId, PolicyType.OrganizationDataOwnership)
.Returns(false); .Returns(false);
await sutProvider.Sut.SaveDetailsAsync(cipher, savingUserId, null); await sutProvider.Sut.SaveDetailsAsync(cipher, savingUserId, null);
@ -156,7 +156,7 @@ public class CipherServiceTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task SaveDetailsAsync_PersonalVault_WithPolicyRequirementsEnabled_WithDisablePersonalOwnershipPolicyEnabled_Throws( public async Task SaveDetailsAsync_PersonalVault_WithPolicyRequirementsEnabled_WithOrganizationDataOwnershipPolicyEnabled_Throws(
SutProvider<CipherService> sutProvider, SutProvider<CipherService> sutProvider,
CipherDetails cipher, CipherDetails cipher,
Guid savingUserId) Guid savingUserId)
@ -170,9 +170,9 @@ public class CipherServiceTests
.Returns(true); .Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(savingUserId) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(savingUserId)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Restricted, OrganizationDataOwnershipState.Enabled,
[Guid.NewGuid()])); [Guid.NewGuid()]));
var exception = await Assert.ThrowsAsync<BadRequestException>( var exception = await Assert.ThrowsAsync<BadRequestException>(
@ -182,7 +182,7 @@ public class CipherServiceTests
[Theory] [Theory]
[BitAutoData] [BitAutoData]
public async Task SaveDetailsAsync_PersonalVault_WithPolicyRequirementsEnabled_WithDisablePersonalOwnershipPolicyDisabled_Succeeds( public async Task SaveDetailsAsync_PersonalVault_WithPolicyRequirementsEnabled_WithOrganizationDataOwnershipPolicyDisabled_Succeeds(
SutProvider<CipherService> sutProvider, SutProvider<CipherService> sutProvider,
CipherDetails cipher, CipherDetails cipher,
Guid savingUserId) Guid savingUserId)
@ -196,9 +196,9 @@ public class CipherServiceTests
.Returns(true); .Returns(true);
sutProvider.GetDependency<IPolicyRequirementQuery>() sutProvider.GetDependency<IPolicyRequirementQuery>()
.GetAsync<PersonalOwnershipPolicyRequirement>(savingUserId) .GetAsync<OrganizationDataOwnershipPolicyRequirement>(savingUserId)
.Returns(new PersonalOwnershipPolicyRequirement( .Returns(new OrganizationDataOwnershipPolicyRequirement(
PersonalOwnershipState.Allowed, OrganizationDataOwnershipState.Disabled,
[])); []));
await sutProvider.Sut.SaveDetailsAsync(cipher, savingUserId, null); await sutProvider.Sut.SaveDetailsAsync(cipher, savingUserId, null);