private static AccountManagementService CreateAccountManagementService(Domain.FsDbContext dbContext, IVerificationService verificationService = null)
        {
            var entityRepostitory       = MockServices.EntityRepositoryMock(dbContext);
            var hashServiceMock         = MockServices.HashServiceMock().Object;
            var mailService             = MockServices.MailServiceMock().Object;
            var authenticationService   = MockServices.AuthenticationServiceMock().Object;
            var verificationServiceMock = verificationService ?? MockServices.VerificationServiceMock().Object;

            var target = new AccountManagementService(
                entityRepostitory,
                hashServiceMock,
                mailService,
                dbContext,
                authenticationService,
                verificationServiceMock);

            return(target);
        }
        public async Task RegistrationFlowShouldWork()
        {
            var registrationModel = new UserRegistrationModel
            {
                ConfirmationUrl = "https://test.nl",
                Email           = "*****@*****.**",
                FirstName       = "servicetest",
                LastName        = "servicetest",
                Password        = "******",
                Username        = "******"
            };

            var dbContext = MockServices.DbContextMock();
            var verificationServiceMock = MockServices.VerificationServiceMock();

            verificationServiceMock.Setup(x => x.ValidateVerificationKey(It.IsAny <string>(), It.IsAny <UserVerificationType>())).ReturnsAsync(() =>
            {
                return(dbContext.Users.SingleAsync(x => x.Email == registrationModel.Email).Result);
            });

            var target = CreateAccountManagementService(dbContext, verificationServiceMock.Object);



            var result = await target.Register(registrationModel);

            var userPart1 = dbContext.Users.Single(x => x.Username == registrationModel.Username);

            Assert.IsFalse(userPart1.IsEmailConfirmed);

            dbContext.Entry(userPart1).State = Microsoft.EntityFrameworkCore.EntityState.Detached;

            var fakeKey = "dsfsfd";
            await target.ConfirmEmail(fakeKey);

            var user = dbContext.Users.Single(x => x.Username == registrationModel.Username);

            Assert.IsNotNull(user);
            Assert.AreEqual(registrationModel.Password, user.Password);
            Assert.IsTrue(user.IsEmailConfirmed);
            Assert.IsNotNull(user.Owner);
        }