1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-22 12:04:27 -05:00

Add TwoFactorPoliciesForActiveMemberships property to RequireTwoFactorPolicyRequirement and corresponding unit tests for policy retrieval based on user status

This commit is contained in:
Rui Tome 2025-05-21 15:48:46 +01:00
parent 1b0632ae52
commit 73bf74dac4
No known key found for this signature in database
GPG Key ID: 526239D96A8EC066
2 changed files with 57 additions and 0 deletions

View File

@ -58,6 +58,11 @@ public class RequireTwoFactorPolicyRequirement : IPolicyRequirement
OrganizationUserStatusType.Invited or
OrganizationUserStatusType.Accepted or
OrganizationUserStatusType.Confirmed));
public IEnumerable<PolicyDetails> TwoFactorPoliciesForActiveMemberships =>
_policyDetails.Where(p => p.OrganizationUserStatus is
OrganizationUserStatusType.Accepted or
OrganizationUserStatusType.Confirmed);
}
public class RequireTwoFactorPolicyRequirementFactory : BasePolicyRequirementFactory<RequireTwoFactorPolicyRequirement>

View File

@ -211,4 +211,56 @@ public class RequireTwoFactorPolicyRequirementFactoryTests
Assert.False(actual.CanBeRestored(false, organizationId));
}
[Theory, BitAutoData]
public void TwoFactorPoliciesForActiveMemberships_WithNoPolicies_ReturnsEmptyCollection(
SutProvider<RequireTwoFactorPolicyRequirementFactory> sutProvider)
{
var actual = sutProvider.Sut.Create([]);
Assert.Empty(actual.TwoFactorPoliciesForActiveMemberships);
}
[Theory, BitAutoData]
public void TwoFactorPoliciesForActiveMemberships_WithMultiplePolicies_ReturnsActiveMemberships(
Guid orgId1, Guid orgId2, Guid orgId3, Guid orgId4,
SutProvider<RequireTwoFactorPolicyRequirementFactory> sutProvider)
{
var policies = new[]
{
new PolicyDetails
{
OrganizationId = orgId1,
PolicyType = PolicyType.TwoFactorAuthentication,
OrganizationUserStatus = OrganizationUserStatusType.Accepted
},
new PolicyDetails
{
OrganizationId = orgId2,
PolicyType = PolicyType.TwoFactorAuthentication,
OrganizationUserStatus = OrganizationUserStatusType.Confirmed
},
new PolicyDetails
{
OrganizationId = orgId3,
PolicyType = PolicyType.TwoFactorAuthentication,
OrganizationUserStatus = OrganizationUserStatusType.Invited
},
new PolicyDetails
{
OrganizationId = orgId4,
PolicyType = PolicyType.TwoFactorAuthentication,
OrganizationUserStatus = OrganizationUserStatusType.Revoked
}
};
var actual = sutProvider.Sut.Create(policies);
var result = actual.TwoFactorPoliciesForActiveMemberships.ToList();
Assert.Equal(2, result.Count);
Assert.Contains(result, p => p.OrganizationId == orgId1);
Assert.Contains(result, p => p.OrganizationId == orgId2);
Assert.DoesNotContain(result, p => p.OrganizationId == orgId3);
Assert.DoesNotContain(result, p => p.OrganizationId == orgId4);
}
}