diff --git a/test/Core.Test/Auth/Services/TwoFactorEmailServiceTests.cs b/test/Core.Test/Auth/Services/TwoFactorEmailServiceTests.cs index f24b3cb05e..efd5160a9c 100644 --- a/test/Core.Test/Auth/Services/TwoFactorEmailServiceTests.cs +++ b/test/Core.Test/Auth/Services/TwoFactorEmailServiceTests.cs @@ -58,6 +58,65 @@ public class TwoFactorEmailServiceTests TwoFactorEmailPurpose.Login); } + [Theory, BitAutoData] + public async Task SendTwoFactorSetupEmailAsync_Success(SutProvider sutProvider, User user) + { + var email = user.Email.ToLowerInvariant(); + var token = "thisisatokentocompare"; + var IpAddress = "1.1.1.1"; + var deviceType = "Android"; + + var userTwoFactorTokenProvider = Substitute.For>(); + userTwoFactorTokenProvider + .CanGenerateTwoFactorTokenAsync(Arg.Any>(), user) + .Returns(Task.FromResult(true)); + userTwoFactorTokenProvider + .GenerateAsync("TwoFactor", Arg.Any>(), user) + .Returns(Task.FromResult(token)); + + var context = Substitute.For(); + context.DeviceType = DeviceType.Android; + context.IpAddress = IpAddress; + + await sutProvider.Sut.SendTwoFactorEmailAsync(user); + + await sutProvider.GetDependency() + .Received(1) + .SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType, + TwoFactorEmailPurpose.Login); + } + + [Theory, BitAutoData] + public async Task SendNewDeviceVerificationEmailAsync_Success(SutProvider sutProvider, User user) + { + var email = user.Email.ToLowerInvariant(); + var token = "thisisatokentocompare"; + var IpAddress = "1.1.1.1"; + var deviceType = "Android"; + + var userTwoFactorTokenProvider = Substitute.For>(); + userTwoFactorTokenProvider + .CanGenerateTwoFactorTokenAsync(Arg.Any>(), user) + .Returns(Task.FromResult(true)); + userTwoFactorTokenProvider + .GenerateAsync("TwoFactor", Arg.Any>(), user) + .Returns(Task.FromResult(token)); + + var context = Substitute.For(); + context.DeviceType = DeviceType.Android; + context.IpAddress = IpAddress; + + var userManager = sutProvider.GetDependency>(); + userManager.RegisterTokenProvider(CoreHelpers.CustomProviderName(TwoFactorProviderType.Email), userTwoFactorTokenProvider); + + await sutProvider.Sut.SendNewDeviceVerificationEmailAsync(user); + + await sutProvider.GetDependency() + .Received(1) + .SendTwoFactorEmailAsync(email, user.Email, token, IpAddress, deviceType, + TwoFactorEmailPurpose.NewDeviceVerification); + } + [Theory, BitAutoData] public async Task SendTwoFactorEmailAsync_ExceptionBecauseNoProviderOnUser(SutProvider sutProvider, User user) { @@ -180,8 +239,6 @@ public class TwoFactorEmailServiceTests .Received(1) .SendTwoFactorEmailAsync(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), "Unknown Browser", Arg.Any()); } - - // [Theory, BitAutoData] // public async Task ResendNewDeviceVerificationEmail_UserNull_SendTwoFactorEmailAsyncNotCalled(