mirror of
https://github.com/bitwarden/server.git
synced 2025-06-25 13:18:48 -05:00
[PM-20633] rename personal ownership (#5978)
* rename personal ownership * rename enums, files, tests
This commit is contained in:
parent
86a4ce5a51
commit
70703cb3b0
@ -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",
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -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>();
|
||||||
}
|
}
|
||||||
|
@ -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.");
|
||||||
|
@ -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.");
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
|
@ -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>>();
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user