예제 #1
0
        public void Can_Create_Members()
        {
            // ARRANGE
            int beforeMembersCount = repo.Members.Count();

            MemberViewModel model = new MemberViewModel()
            {
                MemberId = 0,
                UserName = "******",
                Email = "*****@*****.**",
                FirstName = "NewFirstName",
                LastName = "NewLastName",
                Description = "",
                Address = "",
                Building = "",
                Floor = "",
                Office = "",
                Password = "******",
                PasswordConfirmation = "NewPassword"
            };

            // ACT
            target.Create(model);

            // ASSERT
            Assert.IsTrue(beforeMembersCount < repo.Members.Count());
            Assert.AreEqual(beforeMembersCount + 1, repo.Members.Count());
        }
예제 #2
0
        public void Check_UserId_Email_Edit_Uniqueness()
        {
            // ARRANGE
            Member toy = new Member()
            {
                MemberId = 0,
                UserName = "******",
                Email = "*****@*****.**",
                Password = new Password(),
                Profile = new Profile()
                {
                    FirstName = "Toy",
                    LastName = "Boy",
                }
            };

            repo.SaveMember(toy);

            MemberViewModel model = new MemberViewModel(
                repo.Members.FirstOrDefault(m => m.MemberId == 3));

            model.UserName = toy.UserName;
            model.Email = toy.Email;

            // ACT
            ViewResult expected = (ViewResult)target.Create(model);

            // ASSERT
            Assert.IsTrue(target.ModelState.Keys.Contains("UserAlreadyExist"));
        }
예제 #3
0
        public void Passwords_Should_Match()
        {
            // ARRANGE
            MemberViewModel model = new MemberViewModel()
            {
                MemberId = 0,
                UserName = "******",
                Email = "*****@*****.**",
                FirstName = "NewFirstName",
                LastName = "NewLastName",
                Description = "",
                Address = "",
                Building = "",
                Floor = "",
                Office = "",
                Password = "******",
                PasswordConfirmation = "WrongPassword"
            };

            // ACT
            target.Create(model);

            // ASSERT
            Assert.IsTrue(target.ModelState.Keys.Contains("PasswordConfirmation"));
        }
예제 #4
0
        public void Check_UserId_Email_Create_Uniqueness()
        {
            // ARRANGE
            Member toy = new Member()
            {
                MemberId = 0,
                UserName = "******",
                Email = "*****@*****.**",
                Password = new Password(),
                Profile = new Profile()
                {
                    FirstName = "Toy",
                    LastName = "Boy",
                }
            };

            repo.SaveMember(toy);

            MemberViewModel model = new MemberViewModel()
            {
                MemberId = 0,
                UserName = "******",
                Email = "*****@*****.**",
                FirstName = "NewFirstName",
                LastName = "NewLastName",
                Description = "",
                Address = "",
                Building = "",
                Floor = "",
                Office = "",
                Password = "******",
                PasswordConfirmation = "Password"
            };

            // ACT
            target.Create(model);

            // ASSERT
            Assert.IsTrue(target.ModelState.Keys.Contains("UserAlreadyExist"));
        }
예제 #5
0
        public void Can_Edit_Member()
        {
            // ARRANGE
            Member initialState = repo.Members.FirstOrDefault(p => p.MemberId == 3);
            string initialFirstName = initialState.Profile.FirstName;

            Member member = repo.Members.FirstOrDefault(p => p.MemberId == 3);

            MemberViewModel expected = new MemberViewModel(member);
            expected.FirstName = "EditedFirstName";
            expected.LastName = "EditedLastName";

            // ACT
            ActionResult result = target.Edit(expected);
            Member editedMember = repo.Members.FirstOrDefault(p => p.MemberId == 3);
            MemberViewModel actual = new MemberViewModel(editedMember);

            // ASSERT
            Assert.AreEqual(expected.MemberId, actual.MemberId);
            Assert.AreEqual(expected.FirstName, actual.FirstName);
            Assert.AreNotEqual(expected.LastName, actual.FirstName);
        }
예제 #6
0
        public ActionResult Create(MemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                Member member;

                if (UserExists(model.UserName, model.Email))
                {
                    ModelState.AddModelError("UserAlreadyExist", "Username or Email already in use.");
                    ShowUserAlreadyExistAlert();
                    return View();
                }

                // Check if passwords matches
                if (model.Password == model.PasswordConfirmation)
                {
                    string salt = PasswordHelper.CreateSalt();
                    string hashedPassword = PasswordHelper.CreatePasswordHash(model.Password, salt);

                    member = new Member()
                    {
                        MemberId = 0,
                        MemberGuid = Guid.NewGuid(),
                        UserName = model.UserName,
                        Email = model.Email,
                        Profile = new Profile()
                        {
                            FirstName = model.FirstName,
                            LastName = model.LastName,
                            Description = model.Description,
                            Phone = model.Phone,
                            Address = model.Address,
                            Building = model.Building,
                            Floor = model.Floor,
                            Office = model.Office
                        },
                        Password = new Password()
                        {
                            Salt = salt,
                            Hash = hashedPassword
                        }
                    };

                }
                else
                {
                    ModelState.AddModelError("PasswordConfirmation", "Confirmation Password doesn't match your Password.");
                    return View();
                }

                try
                {
                    repository.SaveMember(member);

                    TempData["message"] = new Alert()
                    {
                        Class = "Success",
                        Title = "New member created.",
                        Description = string.Format("{0} {1}",
                          model.LastName.ToUpper(),
                          model.FirstName)
                    };

                }
                catch (Exception e)
                {
                    TempData["message"] = new Alert(e);
                }

                return RedirectToAction("Index");
            }
            else
            {
                return View("Create", model);
            }
        }
예제 #7
0
        public ActionResult Edit(MemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Member member = repository.Members.FirstOrDefault(m => m.MemberId == model.MemberId);

                    // If UserName or Email are changed
                    // verify that we are not creating a duplicate member
                    if (member.UserName != model.UserName || member.Email != model.Email)
                    {
                        if (UserExists(model.UserName, model.Email))
                        {
                            ModelState.AddModelError("", "Username or Email already in use.");
                            ShowUserAlreadyExistAlert();
                            return View(model);
                        }
                    }

                    member.UserName = model.UserName;
                    member.Email = model.Email;
                    member.Profile.FirstName = model.FirstName;
                    member.Profile.LastName = model.LastName;
                    member.Profile.Phone = model.Phone;
                    member.Profile.Description = model.Description;
                    member.Profile.Address = model.Address;
                    member.Profile.Building = model.Building;
                    member.Profile.Floor = model.Floor;
                    member.Profile.Office = model.Office;

                    repository.SaveMember(member);

                    TempData["message"] = new Alert()
                    {
                        Class = "Success",
                        Title = "User successfully edited.",
                        Description = string.Format("{0} {1} has been edited.", model.LastName.ToUpper(), model.FirstName)
                    };
                }
                catch (Exception e)
                {
                    TempData["message"] = new Alert(e);
                    return View(model);
                }
            }
            else
            {
                return View("Edit", model);
            }

            return RedirectToAction("Index");
        }
예제 #8
0
        public ViewResult Edit(int id)
        {
            MemberViewModel model = new MemberViewModel(
                repository.Members.FirstOrDefault(m => m.MemberId == id));

            return View(model);
        }