Esempio n. 1
0
        public async Task ConfirmUserAccountAsync(ClientToBeConfirmedViewModel user)
        {
            var userToBeConfirmed = await this.userRepository.GetByIdWithDeletedAsync(user.UserId);

            userToBeConfirmed.Account = new Account
            {
                Balance    = user.Balance,
                MonthlyFee = user.MonthlyFee,
                TradeFee   = user.TradeFee,
                Confirmed  = true,
                Notes      = user.Notes,
                Positions  = new List <Position>(),
            };

            var result = await this.userManager.RemoveFromRoleAsync(userToBeConfirmed, GlobalConstants.NotConfirmedUserRoleName);

            if (result.Succeeded)
            {
                await this.userManager.AddToRoleAsync(userToBeConfirmed, GlobalConstants.ConfirmedUserRoleName);
            }

            this.userRepository.Update(userToBeConfirmed);

            await this.userRepository.SaveChangesAsync();
        }
        public async Task ConfirmUserAccountAsyncWorkCorrectly()
        {
            var context                      = ApplicationDbContextInMemoryFactory.InitializeContext();
            var testUserRepository           = new EfDeletableEntityRepository <ApplicationUser>(context);
            var testNotConfirmedUsers        = TestDataHelpers.GetTestNotConfirmedUsers();
            var testAccountManagementService = new AccountManagementService(this.userManager.Object, testUserRepository, this.accountRepository.Object, this.positionService.Object, this.feePaymentsRepository.Object);

            foreach (var tester in testNotConfirmedUsers)
            {
                await testUserRepository.AddAsync(tester);

                await testUserRepository.SaveChangesAsync();
            }

            var user = new ClientToBeConfirmedViewModel
            {
                UserId     = "11",
                Username   = "******",
                Email      = "[email protected]",
                Balance    = 5000,
                TradeFee   = 50,
                MonthlyFee = 100,
                Notes      = null,
            };

            var testUser = testUserRepository.All().FirstOrDefault(u => u.Id == "11");

            Assert.IsNull(testUser.Account);

            await testAccountManagementService.ConfirmUserAccountAsync(user);

            Assert.IsNotNull(testUser.Account);
        }
        public async Task ConfirmUserAccountAsyncShouldCallUserManager()
        {
            var context                      = ApplicationDbContextInMemoryFactory.InitializeContext();
            var testUserRepository           = new EfDeletableEntityRepository <ApplicationUser>(context);
            var testNotConfirmedUsers        = TestDataHelpers.GetTestNotConfirmedUsers();
            var testAccountManagementService = new AccountManagementService(this.userManager.Object, testUserRepository, this.accountRepository.Object, this.positionService.Object, this.feePaymentsRepository.Object);

            foreach (var tester in testNotConfirmedUsers)
            {
                await testUserRepository.AddAsync(tester);

                await testUserRepository.SaveChangesAsync();
            }

            var user = new ClientToBeConfirmedViewModel
            {
                UserId     = "11",
                Username   = "******",
                Email      = "[email protected]",
                Balance    = 5000,
                TradeFee   = 50,
                MonthlyFee = 100,
                Notes      = null,
            };

            await testAccountManagementService.ConfirmUserAccountAsync(user);

            this.userManager.Verify(u => u.RemoveFromRoleAsync(It.IsAny <ApplicationUser>(), GlobalConstants.NotConfirmedUserRoleName), Times.Once);
            this.userManager.Verify(u => u.AddToRoleAsync(It.IsAny <ApplicationUser>(), GlobalConstants.ConfirmedUserRoleName), Times.Once);
        }
Esempio n. 4
0
        public async Task <IActionResult> ConfirmAccount(ClientToBeConfirmedViewModel input)
        {
            if (!this.ModelState.IsValid)
            {
                return(await this.ConfirmAccount(input.UserId));
            }

            await this.accountManagement.ConfirmUserAccountAsync(input);

            await this.emailSender.SendEmailAsync(
                GlobalConstants.SystemEmail,
                this.User.Identity.Name,
                input.Email,
                GlobalConstants.ConfirmSubject,
                GlobalConstants.ConfirmMessage);

            return(this.RedirectToAction(nameof(this.Index)));
        }