public void TestInitialize()
        {
            DapperTypeHandlerRegistration.Register(FifthweekAssembliesResolver.Assemblies);

            this.connectionFactory = new Mock <IFifthweekDbConnectionFactory>(MockBehavior.Strict);
            this.userManager       = new Mock <IUserManager>(MockBehavior.Strict);

            var passwordHasher = new Mock <IPasswordHasher>();

            this.userManager.Setup(v => v.PasswordHasher).Returns(passwordHasher.Object);
            passwordHasher.Setup(v => v.HashPassword(Password.Value)).Returns(PasswordHash);
            passwordHasher.Setup(v => v.VerifyHashedPassword(PasswordHash, Password.Value)).Returns(PasswordVerificationResult.Success);

            this.target = new GetUserAndRolesFromCredentialsDbStatement(
                this.userManager.Object,
                this.connectionFactory.Object);
        }
        public async Task WhenCalledWithIncorrectUsername_ItShouldReturnNull()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new GetUserAndRolesFromCredentialsDbStatement(
                    this.userManager.Object,
                    testDatabase);

                await this.CreateUser(testDatabase);

                await testDatabase.TakeSnapshotAsync();

                var result = await this.target.ExecuteAsync(new Username(Username + "Incorrect"), Password);

                Assert.IsNull(result);
                return(ExpectedSideEffects.None);
            });
        }
        public async Task WhenCalled_AndUserHasNoRoles_ItShouldReturnResult()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new GetUserAndRolesFromCredentialsDbStatement(
                    this.userManager.Object,
                    testDatabase);

                var userId = await this.CreateUser(testDatabase, false);

                await testDatabase.TakeSnapshotAsync();

                var result = await this.target.ExecuteAsync(Username, Password);

                Assert.IsNotNull(result);
                Assert.AreEqual(userId, result.UserId);
                Assert.AreEqual(0, result.Roles.Count);
                return(ExpectedSideEffects.None);
            });
        }