Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 9
0
        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();
            }
        }
Ejemplo n.º 12
0
        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}" }));
        }