Beispiel #1
0
        public async Task ForgotPasswordAsync_ShouldBeOkResult()
        {
            // Arrange
            var user = new User
            {
                Id    = new UserId(),
                Email = "*****@*****.**"
            };

            TestMock.UserService.Setup(userManager => userManager.FindByEmailAsync(user.Email)).ReturnsAsync(user).Verifiable();

            TestMock.UserService.Setup(userManager => userManager.GeneratePasswordResetTokenAsync(user)).ReturnsAsync("code").Verifiable();

            TestMock.ServiceBusPublisher.Setup(serviceBusPublisher => serviceBusPublisher.PublishAsync(It.IsAny <UserPasswordResetTokenGeneratedIntegrationEvent>()))
            .Returns(Task.CompletedTask)
            .Verifiable();

            var controller = new PasswordController(TestMock.UserService.Object, TestMock.ServiceBusPublisher.Object);

            // Act
            var result = await controller.ForgotPasswordAsync(
                new ForgotPasswordRequest
            {
                Email = user.Email
            });

            // Assert
            result.Should().BeOfType <OkResult>();

            TestMock.UserService.Verify(userManager => userManager.FindByEmailAsync(user.Email), Times.Once);

            TestMock.UserService.Verify(userManager => userManager.GeneratePasswordResetTokenAsync(user), Times.Once);

            TestMock.ServiceBusPublisher.Verify(
                serviceBusPublisher => serviceBusPublisher.PublishAsync(It.IsAny <UserPasswordResetTokenGeneratedIntegrationEvent>()),
                Times.Once);
        }