public void Register_creates_user_publishes_event_and_sends_email()
        {
            // Arrange
            ISignInManager signInManager = Mock.Of <ISignInManager>();
            ITokenService  tokenService  = Mock.Of <ITokenService>();

            var logger = new ConsoleLoggerMock <Services.AuthenticationService>();

            var userManager        = new UserManagerMock();
            var eventBus           = new EventPublisherMock();
            var confirmationSender = new EmailConfirmationSenderMock();

            var service = new Services.AuthenticationService(
                userManager.Object, signInManager, tokenService, eventBus.Object, logger.Object, confirmationSender.Object);

            // Act
            OperationResult result = service.RegisterUser("username", "email", "password").Result;

            // Assert
            Assert.True(result.IsValid);
            userManager.VerifyUserCreated("username", "email", "password");
            eventBus.VerifyEventPublished <UserRegisteredEvent, UserInfo>(u => u.Username == "username" && u.Email == "email");
            confirmationSender.VerifyEmailSent("username", "email");
        }