From ba9f0d5fb6cfc8ad1bb8812d150172df6a617a3f Mon Sep 17 00:00:00 2001 From: enmande <3836813+enmande@users.noreply.github.com> Date: Tue, 16 Dec 2025 08:58:10 -0500 Subject: [PATCH] test(webauthn) [PM-20109]: Update command tests to use global configs. --- ...eateWebAuthnLoginCredentialCommandTests.cs | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/test/Core.Test/Auth/UserFeatures/WebAuthnLogin/CreateWebAuthnLoginCredentialCommandTests.cs b/test/Core.Test/Auth/UserFeatures/WebAuthnLogin/CreateWebAuthnLoginCredentialCommandTests.cs index c7490e8ed6..811f566c0c 100644 --- a/test/Core.Test/Auth/UserFeatures/WebAuthnLogin/CreateWebAuthnLoginCredentialCommandTests.cs +++ b/test/Core.Test/Auth/UserFeatures/WebAuthnLogin/CreateWebAuthnLoginCredentialCommandTests.cs @@ -3,6 +3,7 @@ using Bit.Core.Auth.Entities; using Bit.Core.Auth.Repositories; using Bit.Core.Auth.UserFeatures.WebAuthnLogin.Implementations; using Bit.Core.Entities; +using Bit.Core.Services; using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture.Attributes; using Fido2NetLib; @@ -10,6 +11,7 @@ using Fido2NetLib.Objects; using NSubstitute; using Xunit; using static Fido2NetLib.Fido2; +using GlobalSettings = Bit.Core.Settings.GlobalSettings; namespace Bit.Core.Test.Auth.UserFeatures.WebAuthnLogin; @@ -17,10 +19,16 @@ namespace Bit.Core.Test.Auth.UserFeatures.WebAuthnLogin; public class CreateWebAuthnLoginCredentialCommandTests { [Theory, BitAutoData] - internal async Task ExceedsExistingCredentialsLimit_ReturnsFalse(SutProvider sutProvider, User user, CredentialCreateOptions options, AuthenticatorAttestationRawResponse response, Generator credentialGenerator) + internal async Task ExceedsExistingCredentialsLimit_ReturnsFalse(SutProvider sutProvider, User user, CredentialCreateOptions options, AuthenticatorAttestationRawResponse response, Generator credentialGenerator, bool userCanAccessPremium) { - // Arrange - var existingCredentials = credentialGenerator.Take(CreateWebAuthnLoginCredentialCommand.MaxCredentialsPerUser).ToList(); + var webAuthNGlobalSettings = sutProvider.GetDependency().WebAuthN = new GlobalSettings.WebAuthNSettings() + { + NonPremiumMaximumAllowedCredentials = 5, + PremiumMaximumAllowedCredentials = 10, + }; + sutProvider.GetDependency().CanAccessPremium(user).Returns(userCanAccessPremium); + var maximumAllowedCredentialCount = userCanAccessPremium ? webAuthNGlobalSettings.PremiumMaximumAllowedCredentials : webAuthNGlobalSettings.NonPremiumMaximumAllowedCredentials; + var existingCredentials = credentialGenerator.Take(maximumAllowedCredentialCount).ToList(); sutProvider.GetDependency().GetManyByUserIdAsync(user.Id).Returns(existingCredentials); // Act @@ -32,10 +40,17 @@ public class CreateWebAuthnLoginCredentialCommandTests } [Theory, BitAutoData] - internal async Task DoesNotExceedExistingCredentialsLimit_CreatesCredential(SutProvider sutProvider, User user, CredentialCreateOptions options, AuthenticatorAttestationRawResponse response, Generator credentialGenerator) + internal async Task DoesNotExceedExistingCredentialsLimit_CreatesCredential(SutProvider sutProvider, User user, CredentialCreateOptions options, AuthenticatorAttestationRawResponse response, Generator credentialGenerator, bool userCanAccessPremium) { // Arrange - var existingCredentials = credentialGenerator.Take(CreateWebAuthnLoginCredentialCommand.MaxCredentialsPerUser - 1).ToList(); + var webAuthNGlobalSettings = sutProvider.GetDependency().WebAuthN = new GlobalSettings.WebAuthNSettings() + { + NonPremiumMaximumAllowedCredentials = 5, + PremiumMaximumAllowedCredentials = 10, + }; + sutProvider.GetDependency().CanAccessPremium(user).Returns(userCanAccessPremium); + var maximumAllowedCredentialCount = userCanAccessPremium ? webAuthNGlobalSettings.PremiumMaximumAllowedCredentials : webAuthNGlobalSettings.NonPremiumMaximumAllowedCredentials; + var existingCredentials = credentialGenerator.Take(maximumAllowedCredentialCount - 1).ToList(); sutProvider.GetDependency().GetManyByUserIdAsync(user.Id).Returns(existingCredentials); sutProvider.GetDependency().MakeNewCredentialAsync( response, options, Arg.Any(), Arg.Any(), Arg.Any()