Esempio n. 1
0
        public async Task TestGetForProcessingAsync_WithIncorrectData_ShouldThrowNullRefEx()
        {
            var testUserId            = "testUserId";
            var testWithdrawalId      = "testWithdrawalId";
            var incorrectWithdrawalId = "incorrectWithdrawalId";

            var user = new TrainConnectedUser()
            {
                Id      = testUserId,
                Balance = 100.00m,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            var withdrawal = new Withdrawal()
            {
                Amount               = 10.05m,
                Id                   = testWithdrawalId,
                CreatedOn            = DateTime.Now,
                TrainConnectedUserId = testUserId,
                TrainConnectedUser   = user,
                Status               = StatusCode.Initiated,
            };

            await this.withdrawalsRepository.AddAsync(withdrawal);

            await this.withdrawalsRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.withdrawalsService.GetForProcessingAsync(incorrectWithdrawalId));
        }
        public async Task TestAddAsync_WithSameUserAndBuddyId_ShouldThrowInvOpEx()
        {
            var testUserId    = "testUserId";
            var testUserName  = "******";
            var testBuddyId   = "testBuddyId";
            var testBuddyName = "testBuddyName";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <InvalidOperationException>(async() => await this.buddiesService.AddAsync(testUserId, testUserId));
        }
        public async Task TestRemoveAsync_WithNoBuddyRelation_ShouldThrowArgEx()
        {
            var testUserId    = "testUserId";
            var testUserName  = "******";
            var testBuddyId   = "testBuddyId";
            var testBuddyName = "testBuddyName";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <ArgumentException>(async() => await this.buddiesService.RemoveAsync(testBuddyId, testUserId));
        }
Esempio n. 4
0
        public async Task TestCancelAsync_WithIncorrectWorkoutId_ShouldThrowNullRefEx()
        {
            var testUserId   = "testUserId";
            var testUserName = "******";

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            var workoutActivity = new WorkoutActivity()
            {
                Id   = "activityId1",
                Name = "activityName1",
                Icon = "iconUrl1",
            };

            await this.workoutActivityRepository.AddAsync(workoutActivity);

            await this.workoutActivityRepository.SaveChangesAsync();

            var paymentMethod = new PaymentMethod()
            {
                Id               = "activityId1",
                Name             = "activityName1",
                PaymentInAdvance = false,
            };

            await this.paymentMethodsRepository.AddAsync(paymentMethod);

            await this.paymentMethodsRepository.SaveChangesAsync();

            WorkoutCreateInputModel workoutCreateInputModel = new WorkoutCreateInputModel()
            {
                Activity        = workoutActivity.Name,
                Duration        = 15,
                Location        = "location1",
                MaxParticipants = 10,
                Price           = 10.50m,
                Time            = DateTime.Now.AddDays(1),
                PaymentMethods  = new List <string>()
                {
                    paymentMethod.Name
                },
            };

            await this.workoutsService.CreateAsync(workoutCreateInputModel, testUserId);

            var createdWorkout = await this.workoutsRepository.All()
                                 .FirstOrDefaultAsync();

            var incorrectWorkoutId = "incorrect" + createdWorkout.Id;

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.workoutsService.CancelAsync(incorrectWorkoutId, testUserId));
        }
Esempio n. 5
0
        public async Task TestCreateAsync_WithTestData_ShouldCreateWithdrawal()
        {
            var testUserId   = "testUserId";
            var testUserName = "******";

            var withdrawalCreateInputModel = new WithdrawalCreateInputModel()
            {
                Amount = 15.45m,
                AdditionalInstructions = "NoneOfTheAbove",
            };

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                Balance  = 30.00m,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            await this.withdrawalsService.CreateAsync(withdrawalCreateInputModel, testUserId);

            var result = await this.withdrawalsRepository.All()
                         .Where(u => u.TrainConnectedUserId == testUserId)
                         .FirstOrDefaultAsync();

            Assert.NotNull(result);
            Assert.True(result.Status == StatusCode.Initiated);
        }
        public async Task TestAddAsync_WithInCorrectBuddyId_ShouldThrowNullRefEx()
        {
            var testUserId       = "testUserId";
            var testUserName     = "******";
            var testBuddyId      = "testBuddyId";
            var testBuddyName    = "testBuddyName";
            var incorrectBuddyId = "incorrectBuddyId";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.buddiesService.AddAsync(incorrectBuddyId, testUserId));
        }
Esempio n. 7
0
        public async Task TestCreateAsync_WithoutWorkoutActivity_ShouldThrowNullRefEx()
        {
            var testUserId        = "testUserId1";
            var testCertificateId = "testCertificateId";
            var testIssuedBy      = "TestOrganization1";
            var testActivityName  = "activityName1";

            var testUser = new TrainConnectedUser()
            {
                Id = testUserId,
            };

            await this.usersRepository.AddAsync(testUser);

            await this.usersRepository.SaveChangesAsync();

            var certificate = new Certificate()
            {
                Id = testCertificateId,
                TrainConnectedUserId = testUserId,
                ActivityId           = "testId1",
                Description          = "TestDescriptionForTesting1",
                IssuedBy             = testIssuedBy,
                IssuedOn             = DateTime.Now.AddDays(-5),
            };

            var certificateCreateInputModel = AutoMapper.Mapper.Map <CertificateCreateInputModel>(certificate);

            certificateCreateInputModel.Activity = testActivityName;

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.certificatesService.CreateAsync(certificateCreateInputModel, testUserId));
        }
 protected override IdentityUserLogin <string> CreateUserLogin(TrainConnectedUser user, UserLoginInfo login) =>
 new IdentityUserLogin <string>
 {
     UserId              = user.Id,
     ProviderKey         = login.ProviderKey,
     LoginProvider       = login.LoginProvider,
     ProviderDisplayName = login.ProviderDisplayName,
 };
Esempio n. 9
0
        public async Task TestUpdateAsync_WithIncorrectUser_ShouldThrowArgEx()
        {
            var testUserId        = "testUserId1";
            var incorrectUserId   = "incorrectUserId";
            var testCertificateId = "testCertificateId";
            var testIssuedBy      = "TestOrganization1";
            var testActivityName  = "activityName1";
            var updatedIssuedById = "TestOrganization2";

            var workoutActivity = new WorkoutActivity()
            {
                Id          = "testId1",
                Name        = testActivityName,
                Icon        = "testIconUrl1",
                Description = "TestDescription1",
            };

            await this.workoutActivityRepository.AddAsync(workoutActivity);

            await this.workoutActivityRepository.SaveChangesAsync();

            var testUser = new TrainConnectedUser()
            {
                Id = testUserId,
            };

            var incorrectTestUser = new TrainConnectedUser()
            {
                Id = incorrectUserId,
            };

            await this.usersRepository.AddAsync(testUser);

            await this.usersRepository.AddAsync(incorrectTestUser);

            await this.usersRepository.SaveChangesAsync();

            var certificate = new Certificate()
            {
                Id = testCertificateId,
                TrainConnectedUserId = testUserId,
                ActivityId           = "testId1",
                Description          = "TestDescriptionForTesting1",
                IssuedBy             = testIssuedBy,
                Activity             = workoutActivity,
                IssuedOn             = DateTime.Now.AddDays(-5),
            };

            await this.certificatesRepository.AddAsync(certificate);

            await this.certificatesRepository.SaveChangesAsync();

            var certificateEditInputModel = AutoMapper.Mapper.Map <CertificateEditInputModel>(certificate);

            certificateEditInputModel.IssuedBy = updatedIssuedById;

            await Assert.ThrowsAsync <ArgumentException>(async() => await this.certificatesService.UpdateAsync(certificateEditInputModel, incorrectUserId));
        }
        protected override IdentityUserClaim <string> CreateUserClaim(TrainConnectedUser user, Claim claim)
        {
            var identityUserClaim = new IdentityUserClaim <string> {
                UserId = user.Id
            };

            identityUserClaim.InitializeFromClaim(claim);
            return(identityUserClaim);
        }
Esempio n. 11
0
        public async Task TestUpdateAsync_WithTestData_ShouldUpdateCertificate()
        {
            var testUserId        = "testUserId1";
            var testCertificateId = "testCertificateId";
            var testIssuedBy      = "TestOrganization1";
            var testActivityName  = "activityName1";
            var updatedIssuedById = "TestOrganization2";

            var workoutActivity = new WorkoutActivity()
            {
                Id          = "testId1",
                Name        = testActivityName,
                Icon        = "testIconUrl1",
                Description = "TestDescription1",
            };

            await this.workoutActivityRepository.AddAsync(workoutActivity);

            await this.workoutActivityRepository.SaveChangesAsync();

            var testUser = new TrainConnectedUser()
            {
                Id = testUserId,
            };

            await this.usersRepository.AddAsync(testUser);

            await this.usersRepository.SaveChangesAsync();

            var certificate = new Certificate()
            {
                Id = testCertificateId,
                TrainConnectedUserId = testUserId,
                ActivityId           = "testId1",
                Description          = "TestDescriptionForTesting1",
                IssuedBy             = testIssuedBy,
                Activity             = workoutActivity,
                IssuedOn             = DateTime.Now.AddDays(-5),
            };

            await this.certificatesRepository.AddAsync(certificate);

            await this.certificatesRepository.SaveChangesAsync();

            var certificateEditInputModel = AutoMapper.Mapper.Map <CertificateEditInputModel>(certificate);

            certificateEditInputModel.IssuedBy = updatedIssuedById;

            await this.certificatesService.UpdateAsync(certificateEditInputModel, testUserId);

            var actualResult = await this.certificatesRepository.All()
                               .Where(u => u.TrainConnectedUserId == testUserId)
                               .FirstOrDefaultAsync();

            Assert.Equal(updatedIssuedById, actualResult.IssuedBy);
        }
Esempio n. 12
0
        public async Task TestDeleteAsync_WithIncorrectUserId_ShouldThrowArgEx()
        {
            var testUserId        = "testUserId1";
            var incorrectUserId   = "incorrectUserId";
            var testCertificateId = "testCertificateId";
            var testIssuedBy      = "TestOrganization1";
            var testActivityName  = "activityName1";

            var workoutActivity = new WorkoutActivity()
            {
                Id          = "testId1",
                Name        = testActivityName,
                Icon        = "testIconUrl1",
                Description = "TestDescription1",
            };

            await this.workoutActivityRepository.AddAsync(workoutActivity);

            await this.workoutActivityRepository.SaveChangesAsync();

            var testUser = new TrainConnectedUser()
            {
                Id = testUserId,
            };

            var incorrectUser = new TrainConnectedUser()
            {
                Id = incorrectUserId,
            };

            await this.usersRepository.AddAsync(testUser);

            await this.usersRepository.AddAsync(incorrectUser);

            await this.usersRepository.SaveChangesAsync();

            var certificate = new Certificate()
            {
                Id = testCertificateId,
                TrainConnectedUserId = testUserId,
                ActivityId           = "testId1",
                Description          = "TestDescriptionForTesting1",
                IssuedBy             = testIssuedBy,
                Activity             = workoutActivity,
                IssuedOn             = DateTime.Now.AddDays(-5),
            };

            await this.certificatesRepository.AddAsync(certificate);

            await this.certificatesRepository.SaveChangesAsync();

            Assert.NotEmpty(await this.certificatesRepository.All().ToArrayAsync());

            await Assert.ThrowsAsync <ArgumentException>(async() => await this.certificatesService.DeleteAsync(testCertificateId, incorrectUserId));
        }
Esempio n. 13
0
        public async Task TestProcessAsync_WithTestData_ShouldProcessWithdrawal()
        {
            var testUserId       = "testUserId";
            var testAdminId      = "testAdminId";
            var testWithdrawalId = "testWithdrawalId";

            var user = new TrainConnectedUser()
            {
                Id      = testUserId,
                Balance = 100.00m,
            };

            var adminUser = new TrainConnectedUser()
            {
                Id = testAdminId,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.AddAsync(adminUser);

            await this.usersRepository.SaveChangesAsync();

            var withdrawal = new Withdrawal()
            {
                Amount               = 10.05m,
                Id                   = testWithdrawalId,
                CreatedOn            = DateTime.Now,
                TrainConnectedUserId = testUserId,
            };

            await this.withdrawalsRepository.AddAsync(withdrawal);

            await this.withdrawalsRepository.SaveChangesAsync();

            var inputModel = new WithdrawalProcessInputModel()
            {
                Amount = 10.05m,
                Id     = testWithdrawalId,
                Status = true,
                TrainConnectedUserId = testUserId,
            };

            await this.withdrawalsService.ProcessAsync(inputModel, testAdminId);

            var expectedWithdrawalStatus = "Approved";

            var actualWithdrawalStatus = await this.withdrawalsRepository.All()
                                         .Where(w => w.Id == testWithdrawalId)
                                         .Select(s => s.Status.ToString())
                                         .FirstOrDefaultAsync();

            Assert.Equal(expectedWithdrawalStatus, actualWithdrawalStatus);
        }
Esempio n. 14
0
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? this.Url.Content("~/");

            // Get the information about the user from the external login provider
            var info = await this.signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                this.ErrorMessage = "Error loading external login information during confirmation.";
                return(this.RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (this.ModelState.IsValid)
            {
                var user = new TrainConnectedUser {
                    UserName    = this.Input.Email,
                    Email       = this.Input.Email,
                    FirstName   = info.Principal.Identity.Name.Split(" ").ToArray().FirstOrDefault(),
                    LastName    = info.Principal.Identity.Name.Split(" ").ToArray().LastOrDefault(),
                    PhoneNumber = "0123 456 789",
                };
                var result = await this.userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await this.userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await this.signInManager.SignInAsync(user, isPersistent : false);

                        this.logger.LogInformation(
                            "User created an account using {Name} provider.",
                            info.LoginProvider);
                        return(this.LocalRedirect(returnUrl));
                    }
                }

                foreach (var error in result.Errors)
                {
                    this.ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            this.LoginProvider = info.LoginProvider;
            this.ReturnUrl     = returnUrl;
            return(this.Page());
        }
        public async Task SeedAsync(TrainConnectedDbContext dbContext, IServiceProvider serviceProvider)
        {
            var userManager = serviceProvider.GetRequiredService <UserManager <TrainConnectedUser> >();

            var adminUser = new TrainConnectedUser()
            {
                UserName    = GlobalConstants.AdministratorUserName,
                FirstName   = GlobalConstants.AdministratorFirstName,
                LastName    = GlobalConstants.AdministratorLastName,
                Email       = GlobalConstants.AdministratorEmail,
                PhoneNumber = GlobalConstants.AdministratorPhoneNumber,
            };

            await SeedAdminAsync(userManager, adminUser);
        }
        protected override IdentityUserToken <string> CreateUserToken(
            TrainConnectedUser user,
            string loginProvider,
            string name,
            string value)
        {
            var token = new IdentityUserToken <string>
            {
                UserId        = user.Id,
                LoginProvider = loginProvider,
                Name          = name,
                Value         = value,
            };

            return(token);
        }
Esempio n. 17
0
        public async Task TestProcessAsync_WithIncorrectUser_ShouldThrowNullRefEx()
        {
            var testUserId          = "testUserId";
            var incorrectTestUserId = "incorrectTestUserId";
            var testAdminId         = "testAdminId";
            var testWithdrawalId    = "testWithdrawalId";

            var user = new TrainConnectedUser()
            {
                Id      = testUserId,
                Balance = 100.00m,
            };

            var adminUser = new TrainConnectedUser()
            {
                Id = testAdminId,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.AddAsync(adminUser);

            await this.usersRepository.SaveChangesAsync();

            var withdrawal = new Withdrawal()
            {
                Amount               = 10.05m,
                Id                   = testWithdrawalId,
                CreatedOn            = DateTime.Now,
                TrainConnectedUserId = incorrectTestUserId,
            };

            await this.withdrawalsRepository.AddAsync(withdrawal);

            await this.withdrawalsRepository.SaveChangesAsync();

            var inputModel = new WithdrawalProcessInputModel()
            {
                Amount = 10.05m,
                Id     = testWithdrawalId,
                Status = true,
                TrainConnectedUserId = incorrectTestUserId,
            };

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.withdrawalsService.ProcessAsync(inputModel, testAdminId));
        }
Esempio n. 18
0
        public async Task TestRemoveRoleAsync_WithIncorrectRole_ShouldThrowNullRefEx()
        {
            var testUserId            = "testUserId";
            var testUserName          = "******";
            var testIncorrectRoleName = "testIncorrectRoleName";

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.usersService.RemoveRoleAsync(testIncorrectRoleName, testUserId));
        }
        public async Task TestGetDetailsAsync_WithCorrectData_ShouldReturnBuddyDetails()
        {
            var testUserId    = "testUserId";
            var testUserName  = "******";
            var testBuddyId   = "testBuddyId";
            var testBuddyName = "testBuddyName";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersBuddiesRepository.AddAsync(new TrainConnectedUsersBuddies()
            {
                TrainConnectedUserId  = testUserId,
                TrainConnectedUser    = testUser,
                TrainConnectedBuddyId = testBuddyId,
                TrainConnectedBuddy   = testBuddyUser,
            });

            await this.usersRepository.SaveChangesAsync();

            await this.usersBuddiesRepository.SaveChangesAsync();

            var expectedResult = await this.usersBuddiesRepository.All()
                                 .Where(u => u.TrainConnectedUserId == testUserId)
                                 .Where(b => b.TrainConnectedBuddyId == testBuddyId)
                                 .FirstOrDefaultAsync();

            var actualResult = await this.buddiesService.GetDetailsAsync(testBuddyId, testUserId);

            Assert.Equal(expectedResult.TrainConnectedBuddyId, actualResult.Id);
        }
        public async Task TestRemoveAsync_WithCorrectData_ShouldRemoveBuddy()
        {
            var testUserId    = "testUserId";
            var testUserName  = "******";
            var testBuddyId   = "testBuddyId";
            var testBuddyName = "testBuddyName";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersBuddiesRepository.AddAsync(new TrainConnectedUsersBuddies()
            {
                TrainConnectedUserId  = testUserId,
                TrainConnectedUser    = testUser,
                TrainConnectedBuddyId = testBuddyId,
                TrainConnectedBuddy   = testBuddyUser,
            });

            await this.usersRepository.SaveChangesAsync();

            await this.usersBuddiesRepository.SaveChangesAsync();

            await this.buddiesService.RemoveAsync(testBuddyId, testUserId);

            var result = await this.usersBuddiesRepository.All().ToArrayAsync();

            var resultCount = result.Count();

            Assert.Equal(0, resultCount);
        }
        public async Task TestGetDetailsAsync_WithIncorrectBuddyData_ShouldThrowNullRefEx()
        {
            var testUserId       = "testUserId";
            var testUserName     = "******";
            var testBuddyId      = "testBuddyId";
            var testBuddyName    = "testBuddyName";
            var incorrectBuddyId = "incorrectBuddyId";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersBuddiesRepository.AddAsync(new TrainConnectedUsersBuddies()
            {
                TrainConnectedUserId  = testUserId,
                TrainConnectedUser    = testUser,
                TrainConnectedBuddyId = testBuddyId,
                TrainConnectedBuddy   = testBuddyUser,
            });

            await this.usersRepository.SaveChangesAsync();

            await this.usersBuddiesRepository.SaveChangesAsync();

            var expectedResult = await this.usersBuddiesRepository.All()
                                 .Where(u => u.TrainConnectedUserId == testUserId)
                                 .Where(b => b.TrainConnectedBuddyId == testBuddyId)
                                 .FirstOrDefaultAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.buddiesService.GetDetailsAsync(incorrectBuddyId, testUserId));
        }
Esempio n. 22
0
        public async Task TestGetUserBalanceAsync_WithIncorrectUser_ShouldThrowNullRefEx()
        {
            var testUserId      = "testUserId";
            var incorrectUserId = "incorrectUserId";
            var testUserName    = "******";
            var testUserBalance = 13480037.63m;

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                Balance  = testUserBalance,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.withdrawalsService.GetUserBalanceAsync(incorrectUserId));
        }
Esempio n. 23
0
        public async Task TestGetUserBalanceAsync_WithTestData_ShouldReturnUserBalance()
        {
            var testUserId      = "testUserId";
            var testUserName    = "******";
            var testUserBalance = 13480037.63m;

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                Balance  = testUserBalance,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            var result = await this.withdrawalsService.GetUserBalanceAsync(testUserId);

            Assert.Equal(testUserBalance, result);
        }
Esempio n. 24
0
        public async Task TestGetUserPendingWithdrawalsAsync_WithIncorrectUser_ShouldThrowNullRefEx()
        {
            var testUserId      = "testUserId";
            var incorrectUserId = "incorrectUserId";
            var testUserName    = "******";
            var testUserBalance = 13480037.63m;

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                Balance  = testUserBalance,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            var withdrawals = new List <Withdrawal>()
            {
                new Withdrawal
                {
                    Amount               = 100.10m,
                    Id                   = "testWithdrawalId1",
                    CreatedOn            = DateTime.Now,
                    TrainConnectedUserId = testUserId,
                    Status               = StatusCode.Initiated,
                },
            };

            foreach (var w in withdrawals)
            {
                await this.withdrawalsRepository.AddAsync(w);
            }

            await this.withdrawalsRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.withdrawalsService.GetUserPendingWithdrawalsBalance(incorrectUserId));
        }
        public async Task TestGetCoachDetailsAsync_WithInCorrectData_ShouldThrowNullRefEx()
        {
            var testCoachId            = "testCoachId";
            var testCoachUserName      = "******";
            var incorrectCoachUserName = "******";

            var testCoach = new TrainConnectedUser()
            {
                Id       = testCoachId,
                UserName = testCoachUserName,
            };

            await this.usersRepository.AddAsync(testCoach);

            await this.usersRepository.SaveChangesAsync();

            var expectedResult = await this.usersRepository.All()
                                 .Where(x => x.UserName == testCoachUserName)
                                 .FirstOrDefaultAsync();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await this.buddiesService.GetCoachDetailsAsync(incorrectCoachUserName));
        }
Esempio n. 26
0
        public async Task TestGetForProcessingAsync_WithTestData_ShouldReturnWithdrawal()
        {
            var testUserId       = "testUserId";
            var testWithdrawalId = "testWithdrawalId";

            var user = new TrainConnectedUser()
            {
                Id      = testUserId,
                Balance = 100.00m,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            var withdrawal = new Withdrawal()
            {
                Amount               = 10.05m,
                Id                   = testWithdrawalId,
                CreatedOn            = DateTime.Now,
                TrainConnectedUserId = testUserId,
                TrainConnectedUser   = user,
                Status               = StatusCode.Initiated,
            };

            await this.withdrawalsRepository.AddAsync(withdrawal);

            await this.withdrawalsRepository.SaveChangesAsync();

            var expectedResult = await this.withdrawalsRepository.All()
                                 .To <WithdrawalsProcessingViewModel>()
                                 .FirstOrDefaultAsync();

            var actualResult = await this.withdrawalsService.GetForProcessingAsync(testWithdrawalId);

            Assert.Equal(expectedResult.TrainConnectedUserId, actualResult.TrainConnectedUserId);
            Assert.Equal(expectedResult.Amount, actualResult.Amount);
        }
Esempio n. 27
0
        public async Task TestCreateAsync_WithNegativeAmount_ShouldThrowInvOpEx()
        {
            var testUserId   = "testUserId";
            var testUserName = "******";

            var withdrawalCreateInputModel = new WithdrawalCreateInputModel()
            {
                Amount = -15.45m,
                AdditionalInstructions = "NoneOfTheAbove",
            };

            var user = new TrainConnectedUser()
            {
                Id       = testUserId,
                Balance  = 30.00m,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(user);

            await this.usersRepository.SaveChangesAsync();

            await Assert.ThrowsAsync <InvalidOperationException>(async() => await this.withdrawalsService.CreateAsync(withdrawalCreateInputModel, testUserId));
        }
        public async Task TestGetCoachDetailsAsync_WithCorrectData_ShouldReturnCoach()
        {
            var testCoachId       = "testCoachId";
            var testCoachUserName = "******";

            var testCoach = new TrainConnectedUser()
            {
                Id       = testCoachId,
                UserName = testCoachUserName,
            };

            await this.usersRepository.AddAsync(testCoach);

            await this.usersRepository.SaveChangesAsync();

            var expectedResult = await this.usersRepository.All()
                                 .Where(x => x.UserName == testCoachUserName)
                                 .FirstOrDefaultAsync();

            var actualResult = await this.buddiesService.GetCoachDetailsAsync(testCoachUserName);

            Assert.Equal(expectedResult.Id, actualResult.Id);
            Assert.Equal(expectedResult.UserName, actualResult.UserName);
        }
        public async Task TestAddAsync_WithCorrectData_ShouldAddBuddy()
        {
            var testUserId    = "testUserId";
            var testUserName  = "******";
            var testBuddyId   = "testBuddyId";
            var testBuddyName = "testBuddyName";

            var testUser = new TrainConnectedUser()
            {
                Id       = testUserId,
                UserName = testUserName,
            };

            await this.usersRepository.AddAsync(testUser);

            var testBuddyUser = new TrainConnectedUser()
            {
                Id       = testBuddyId,
                UserName = testBuddyName,
            };

            await this.usersRepository.AddAsync(testBuddyUser);

            await this.usersRepository.SaveChangesAsync();

            await this.buddiesService.AddAsync(testBuddyId, testUserId);

            var result = await this.usersBuddiesRepository.All()
                         .Where(u => u.TrainConnectedUserId == testUserId)
                         .Where(b => b.TrainConnectedBuddyId == testBuddyId)
                         .FirstOrDefaultAsync();

            Assert.NotNull(result);
            Assert.Equal(result.TrainConnectedUserId, testUserId);
            Assert.Equal(result.TrainConnectedBuddyId, testBuddyId);
        }
        private static async Task SeedAdminAsync(UserManager <TrainConnectedUser> userManager, TrainConnectedUser adminUser)
        {
            var result = await userManager.CreateAsync(adminUser, GlobalConstants.AdministratorPassword);

            if (result.Succeeded)
            {
                await userManager.AddToRoleAsync(adminUser, GlobalConstants.AdministratorRoleName);
            }
        }