1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-16 15:53:13 -05:00

Fixed tests.

This commit is contained in:
Todd Martin 2025-06-13 19:16:00 -04:00
parent 865bbc91b3
commit 5418d817d0
No known key found for this signature in database
GPG Key ID: 663E7AF5C839BC8F

View File

@ -18,14 +18,17 @@ namespace Bit.Core.Test.Auth.Services;
[SutProviderCustomize] [SutProviderCustomize]
public class TwoFactorEmailServiceTests public class TwoFactorEmailServiceTests
{ {
[Theory, BitAutoData] [Theory, BitAutoData]
public async Task SendTwoFactorEmailAsync_Success(SutProvider<TwoFactorEmailService> sutProvider, User user) public async Task SendTwoFactorEmailAsync_Success(SutProvider<TwoFactorEmailService> sutProvider, User user)
{ {
var email = user.Email.ToLowerInvariant(); var email = user.Email.ToLowerInvariant();
var token = "thisisatokentocompare"; var token = "thisisatokentocompare";
var IpAddress = "1.1.1.1"; var IpAddress = "1.1.1.1";
var deviceType = "Android"; var deviceType = DeviceType.Android;
var context = sutProvider.GetDependency<ICurrentContext>();
context.DeviceType = deviceType;
context.IpAddress = IpAddress;
var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>(); var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>();
userTwoFactorTokenProvider userTwoFactorTokenProvider
@ -35,10 +38,6 @@ public class TwoFactorEmailServiceTests
.GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user) .GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user)
.Returns(Task.FromResult(token)); .Returns(Task.FromResult(token));
var context = Substitute.For<ICurrentContext>();
context.DeviceType = DeviceType.Android;
context.IpAddress = IpAddress;
var userManager = sutProvider.GetDependency<UserManager<User>>(); var userManager = sutProvider.GetDependency<UserManager<User>>();
userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider); userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider);
@ -54,7 +53,7 @@ public class TwoFactorEmailServiceTests
await sutProvider.GetDependency<IMailService>() await sutProvider.GetDependency<IMailService>()
.Received(1) .Received(1)
.SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType, .SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType.ToString(),
TwoFactorEmailPurpose.Login); TwoFactorEmailPurpose.Login);
} }
@ -64,7 +63,11 @@ public class TwoFactorEmailServiceTests
var email = user.Email.ToLowerInvariant(); var email = user.Email.ToLowerInvariant();
var token = "thisisatokentocompare"; var token = "thisisatokentocompare";
var IpAddress = "1.1.1.1"; var IpAddress = "1.1.1.1";
var deviceType = "Android"; var deviceType = DeviceType.Android;
var context = sutProvider.GetDependency<ICurrentContext>();
context.DeviceType = deviceType;
context.IpAddress = IpAddress;
var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>(); var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>();
userTwoFactorTokenProvider userTwoFactorTokenProvider
@ -74,15 +77,23 @@ public class TwoFactorEmailServiceTests
.GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user) .GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user)
.Returns(Task.FromResult(token)); .Returns(Task.FromResult(token));
var context = Substitute.For<ICurrentContext>(); var userManager = sutProvider.GetDependency<UserManager<User>>();
context.DeviceType = DeviceType.Android; userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider);
context.IpAddress = IpAddress;
user.SetTwoFactorProviders(new Dictionary<TwoFactorProviderType, TwoFactorProvider>
{
[TwoFactorProviderType.Email] = new TwoFactorProvider
{
MetaData = new Dictionary<string, object> { ["Email"] = email },
Enabled = true
}
});
await sutProvider.Sut.SendTwoFactorEmailAsync(user); await sutProvider.Sut.SendTwoFactorEmailAsync(user);
await sutProvider.GetDependency<IMailService>() await sutProvider.GetDependency<IMailService>()
.Received(1) .Received(1)
.SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType, .SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType.ToString(),
TwoFactorEmailPurpose.Login); TwoFactorEmailPurpose.Login);
} }
@ -92,28 +103,28 @@ public class TwoFactorEmailServiceTests
var email = user.Email.ToLowerInvariant(); var email = user.Email.ToLowerInvariant();
var token = "thisisatokentocompare"; var token = "thisisatokentocompare";
var IpAddress = "1.1.1.1"; var IpAddress = "1.1.1.1";
var deviceType = "Android"; var deviceType = DeviceType.Android;
var context = sutProvider.GetDependency<ICurrentContext>();
context.DeviceType = deviceType;
context.IpAddress = IpAddress;
var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>(); var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>();
userTwoFactorTokenProvider userTwoFactorTokenProvider
.CanGenerateTwoFactorTokenAsync(Arg.Any<UserManager<User>>(), user) .CanGenerateTwoFactorTokenAsync(Arg.Any<UserManager<User>>(), user)
.Returns(Task.FromResult(true)); .Returns(Task.FromResult(true));
userTwoFactorTokenProvider userTwoFactorTokenProvider
.GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user) .GenerateAsync("otp:" + user.Email, Arg.Any<UserManager<User>>(), user)
.Returns(Task.FromResult(token)); .Returns(Task.FromResult(token));
var context = Substitute.For<ICurrentContext>();
context.DeviceType = DeviceType.Android;
context.IpAddress = IpAddress;
var userManager = sutProvider.GetDependency<UserManager<User>>(); var userManager = sutProvider.GetDependency<UserManager<User>>();
userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider); userManager.RegisterTokenProvider(TokenOptions.DefaultEmailProvider, userTwoFactorTokenProvider);
await sutProvider.Sut.SendNewDeviceVerificationEmailAsync(user); await sutProvider.Sut.SendNewDeviceVerificationEmailAsync(user);
await sutProvider.GetDependency<IMailService>() await sutProvider.GetDependency<IMailService>()
.Received(1) .Received(1)
.SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType, .SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType.ToString(),
TwoFactorEmailPurpose.NewDeviceVerification); TwoFactorEmailPurpose.NewDeviceVerification);
} }
@ -164,13 +175,18 @@ public class TwoFactorEmailServiceTests
[Theory] [Theory]
[BitAutoData(DeviceType.UnknownBrowser, "Unknown Browser")] [BitAutoData(DeviceType.UnknownBrowser, "Unknown Browser")]
[BitAutoData(DeviceType.Android, "Android")] [BitAutoData(DeviceType.Android, "Android")]
public async Task SendTwoFactorEmailAsync_DeviceMatches(SutProvider<TwoFactorEmailService> sutProvider, DeviceType deviceType, string deviceTypeName, public async Task SendTwoFactorEmailAsync_DeviceMatches(DeviceType deviceType, string deviceTypeName,
SutProvider<TwoFactorEmailService> sutProvider,
User user) User user)
{ {
var email = user.Email.ToLowerInvariant(); var email = user.Email.ToLowerInvariant();
var token = "thisisatokentocompare"; var token = "thisisatokentocompare";
var IpAddress = "1.1.1.1"; var IpAddress = "1.1.1.1";
var context = sutProvider.GetDependency<ICurrentContext>();
context.DeviceType = deviceType;
context.IpAddress = IpAddress;
var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>(); var userTwoFactorTokenProvider = Substitute.For<IUserTwoFactorTokenProvider<User>>();
userTwoFactorTokenProvider userTwoFactorTokenProvider
.CanGenerateTwoFactorTokenAsync(Arg.Any<UserManager<User>>(), user) .CanGenerateTwoFactorTokenAsync(Arg.Any<UserManager<User>>(), user)
@ -179,10 +195,6 @@ public class TwoFactorEmailServiceTests
.GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user) .GenerateAsync("TwoFactor", Arg.Any<UserManager<User>>(), user)
.Returns(Task.FromResult(token)); .Returns(Task.FromResult(token));
var context = Substitute.For<ICurrentContext>();
context.DeviceType = deviceType;
context.IpAddress = IpAddress;
var userManager = sutProvider.GetDependency<UserManager<User>>(); var userManager = sutProvider.GetDependency<UserManager<User>>();
userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider); userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider);
@ -199,7 +211,7 @@ public class TwoFactorEmailServiceTests
await sutProvider.GetDependency<IMailService>() await sutProvider.GetDependency<IMailService>()
.Received(1) .Received(1)
.SendTwoFactorEmailAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), deviceTypeName, Arg.Any<TwoFactorEmailPurpose>()); .SendTwoFactorEmailAsync(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>(), deviceTypeName, TwoFactorEmailPurpose.Login);
} }
[Theory, BitAutoData] [Theory, BitAutoData]