public void UsersController_Delete_SimulatedServerFailure() { var options = CreateNewContextOptions(); using (var context = new HighFiveContext(_config, options)) { var organization = new Organization() { Name = "Ariel Partners" }; context.Organizations.Add(organization); var user = new HighFiveUser() { Email = "*****@*****.**", Organization = organization }; context.Users.Add(user); context.SaveChanges(); var repo = new Mock <IHighFiveRepository>(); repo.Setup(r => r.GetUserByEmail(It.IsAny <String>())).Returns(user); repo.Setup(r => r.DeleteUser(It.IsAny <HighFiveUser>())).Throws <HighFiveException>(); UsersController controller = new UsersController(repo.Object, _controllerLogger); var result = controller.Delete("*****@*****.**"); result.Should().BeOfType <BadRequestObjectResult>(); var badRequestResult = result as BadRequestObjectResult; AssertMessageProperty("Failed to delete user [email protected]", badRequestResult.Value); } }
public void Repository_GetUserByEmail() { var options = CreateNewContextOptions(); // add a user HighFiveUser highFiveUser = new HighFiveUser(); highFiveUser.Organization = new Organization(); highFiveUser.Email = "*****@*****.**"; highFiveUser.Organization.Name = "Ariel Partners"; using (var context = new HighFiveContext(_config, options)) { context.Users.Add(highFiveUser); context.SaveChanges(); } highFiveUser = null; // make sure the user was added using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); highFiveUser = repo.GetUserByEmail("*****@*****.**"); Assert.IsNotNull(highFiveUser); } }
public DisplayPointBalanceSteps() { Mapper.Initialize(config => { config.CreateMap <UserViewModel, HighFiveUser>().ReverseMap(); }); _options = CreateNewContextOptions(); _highFiveUser = new HighFiveUser(); }
public void Then_the_following_user_should_exist(Table table) { HighFiveUser user = table.CreateInstance <HighFiveUser>(); HighFiveRepository repo = new HighFiveRepository(_context, _repoLogger); UsersController controller = new UsersController(repo, _usersControllerLogger); var result = controller.GetByEmail(user.Email); result.Should().BeOfType <OkObjectResult>(); var okResult = result as OkObjectResult; var userViewModel = okResult.Value as UserViewModel; userViewModel.Email.Should().Be(user.Email); }
public void Given_the_following_user_does_not_exist(Table table) { var nonExistingUser = new HighFiveUser { Email = "*****@*****.**" }; HighFiveRepository repo = new HighFiveRepository(_context, _repoLogger); UsersController controller = new UsersController(repo, _usersControllerLogger); var result = controller.GetByEmail(nonExistingUser.Email); result.Should().BeOfType <NotFoundObjectResult>(); var notFoundResult = result as NotFoundObjectResult; AssertMessageProperty("User " + nonExistingUser.Email + " not found", notFoundResult.Value); }
public void Given_The_following_user_exists(Table table) { _existingUser = table.CreateInstance <HighFiveUser>(); _existingUserViewModel = Mapper.Map <UserViewModel>(_existingUser); _repo.Setup(r => r.GetUserByEmail(It.IsAny <string>())).Returns(_existingUser); var signInManager = new Mock <IWrapSignInManager <HighFiveUser> >(); signInManager.Setup(m => m.PasswordSignInAsync("*****@*****.**", "password", It.IsAny <bool>(), It.IsAny <bool>())) .Returns(Task.FromResult(Microsoft.AspNetCore.Identity.SignInResult.Success)); signInManager.Setup(m => m.PasswordSignInAsync("*****@*****.**", It.Is <string>(s => s != "password"), It.IsAny <bool>(), It.IsAny <bool>())) .Returns(Task.FromResult(Microsoft.AspNetCore.Identity.SignInResult.Failed)); signInManager.Setup(m => m.PasswordSignInAsync(It.Is <string>(s => s != "*****@*****.**"), "password", It.IsAny <bool>(), It.IsAny <bool>())) .Returns(Task.FromResult(Microsoft.AspNetCore.Identity.SignInResult.Failed)); _controller = new AuthController(signInManager.Object, _repo.Object, _controllerLogger); }
public void Repository_UpdateUser() { var options = CreateNewContextOptions(); // add the user HighFiveUser highFiveUser = new HighFiveUser(); highFiveUser.Organization = new Organization(); highFiveUser.Email = "*****@*****.**"; highFiveUser.Organization.Name = "Ariel Partners"; using (var context = new HighFiveContext(_config, options)) { context.Users.Add(highFiveUser); context.SaveChanges(); } highFiveUser = null; // update the user's email address using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); highFiveUser = repo.GetUserByEmail("*****@*****.**"); highFiveUser.Email = "*****@*****.**"; context.Update(highFiveUser); context.SaveChanges(); } //TODO - add a test too make sure original email [email protected] is not on file // read the user and make sure the email was updated using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); highFiveUser = null; highFiveUser = repo.GetUserByEmail("*****@*****.**"); Assert.AreEqual("*****@*****.**", highFiveUser.Email); } }
public void Repository_AddUser() { var options = CreateNewContextOptions(); HighFiveUser highFiveUser; // make sure this user is not on file using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); highFiveUser = repo.GetUserByEmail("*****@*****.**"); //Assert.IsNull(highFiveUser); highFiveUser.Should().BeNull(); } // add the user highFiveUser = new HighFiveUser(); highFiveUser.Organization = new Organization(); highFiveUser.Email = "*****@*****.**"; highFiveUser.Organization.Name = "Ariel Partners"; using (var context = new HighFiveContext(_config, options)) { context.Users.Add(highFiveUser); context.SaveChanges(); } highFiveUser = null; // get the user by email using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); highFiveUser = repo.GetUserByEmail("*****@*****.**"); Assert.IsNotNull(highFiveUser); highFiveUser.Email.Should().Be("*****@*****.**"); Assert.AreEqual("Ariel Partners", highFiveUser.Organization.Name); } }
public void UsersController_Put_SimulateServerFailure() { var options = CreateNewContextOptions(); using (var context = new HighFiveContext(_config, options)) { var organization = new Organization() { Name = "Ariel Partners" }; context.Organizations.Add(organization); var organization2 = new Organization() { Name = "Acme" }; context.Organizations.Add(organization2); var user = new HighFiveUser() { Email = "*****@*****.**", Organization = organization }; context.Users.Add(user); context.SaveChanges(); var repo = new Mock <IHighFiveRepository>(); UsersController controller = new UsersController(repo.Object, _controllerLogger); repo.Setup(r => r.GetUserByEmail(It.IsAny <String>())).Returns(user); repo.Setup(r => r.UpdateUser(It.IsAny <HighFiveUser>())).Throws <Exception>(); var updatedUser = new UserViewModel() { Email = "*****@*****.**", OrganizationName = "IDontExist" }; var result = controller.Put("*****@*****.**", updatedUser); result.Should().BeOfType <NotFoundObjectResult>(); var notFoundResult = result as NotFoundObjectResult; AssertMessageProperty("Organization IDontExist not found", notFoundResult.Value); } }
public void Repository_ForDuplicateUserEmails() { var options = CreateNewContextOptions(); HighFiveUser highFiveUser; // make sure this user is not on file using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); highFiveUser = repo.GetUserByEmail("*****@*****.**"); Assert.IsNull(highFiveUser); } // add the user highFiveUser = new HighFiveUser(); highFiveUser.Organization = new Organization(); highFiveUser.Email = "*****@*****.**"; highFiveUser.Organization.Name = "Ariel Partners"; using (var context = new HighFiveContext(_config, options)) { context.Users.Add(highFiveUser); context.SaveChanges(); } // check the repo add user method won't add a duplicate email using (var context = new HighFiveContext(_config, options)) { HighFiveRepository repo = new HighFiveRepository(context, _repoLogger); //Assert.Throws<Exception>(() => { repo.AddUser(highFiveUser); }); repo.Invoking(y => y.AddUser(highFiveUser)) .ShouldThrow <HighFiveException>() .WithMessage("User [email protected] already exists in the database"); } }
public void Given_I_am_logged_in_as_the_following_user2(Table table) { var userViewModel = table.CreateInstance <UserViewModel>(); // add recognition to the in memory repository using (var context = new HighFiveContext(_config, _options)) { // Add user HighFiveUser user = new HighFiveUser { FirstName = "Clark", LastName = "Kent", Email = "*****@*****.**" }; context.Users.Add(user); context.SaveChanges(); user = context.Users.FirstOrDefault(); // Add recoginition Recognition recoginition = new Recognition(); recoginition.Receiver = user; recoginition.Points = 200; context.Recognitions.Add(recoginition); context.SaveChangesAsync(); } }
public async Task <IActionResult> Post([FromBody] RecognitionViewModel recognition) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (string.IsNullOrEmpty(recognition.SenderEmail)) { return(BadRequest(new { Message = "Missing Sender Information" })); } if (string.IsNullOrEmpty(recognition.OrganizationName)) { return(BadRequest(new { Message = "Missing Organization Information" })); } if (string.IsNullOrEmpty(recognition.CorporateValueName)) { return(BadRequest(new { Message = "Missing Corporate Value Information" })); } try { var newRecognition = Mapper.Map <Recognition>(recognition); newRecognition.Organization = _repository.GetOrganizationByName(recognition.OrganizationName); if (!String.IsNullOrEmpty(recognition.NewUserEmail)) { // we need to make a new user var newUser = _repository.GetUserByEmail(recognition.NewUserEmail); if (newUser == null) { var theNewUser = new HighFiveUser() { Email = recognition.NewUserEmail, FirstName = HighFiveUser.FirstNameFromName(recognition.NewUserName), LastName = HighFiveUser.LastNameFromName(recognition.NewUserName), Organization = newRecognition.Organization }; _repository.AddUser(theNewUser); await _repository.SaveChangesAsync(); } newRecognition.Receiver = _repository.GetUserByEmail(recognition.NewUserEmail); } else { newRecognition.Receiver = _repository.GetUserByEmail(recognition.ReceiverEmail); } newRecognition.Sender = _repository.GetUserByEmail(recognition.SenderEmail); newRecognition.Value = _repository.GetCorporateValueByName(recognition.CorporateValueName); if (newRecognition.Value == null) { return(BadRequest(new { Message = "Missing Corporate Value Information" })); } newRecognition.DateCreated = DateTime.UtcNow; _repository.AddRecognition(newRecognition); if (await _repository.SaveChangesAsync()) { return(Created($"api/recognitions/{newRecognition.Id}", Mapper.Map <RecognitionViewModel>(newRecognition))); } } catch (HighFiveException ex) { _logger.LogError("Failed to add new recognition: {0}", ex); return(BadRequest(new { ex.Message })); } catch (Exception ex) { _logger.LogError("Failed to add new recognition: {0}", ex); } return(BadRequest(new { Message = $"Failed to add new recognition {recognition.Id}" })); }