public void TestUserDuplicate()
 {
     user u = new user()
     {
         username = "******",
         password = "******"
     };
     ViewResult result = myAccountCon.Register(u) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("", result.ViewName);
     Assert.AreEqual(myAccountCon.ModelState.IsValid, false);
     Assert.AreEqual(true, myAccountCon.ModelState.ContainsKey("username"));
 }
 public void TestMyProfileEditException()
 {
     user u = new user()
     {
         id = 3
     };
     db.Setup(c => c.SaveChanges()).Throws(new Exception());
     ViewResult result = myProfileCon.Edit(u) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("DetailedError", result.ViewName);
     Assert.IsInstanceOfType(result.Model, typeof(HttpStatusCodeResult));
     var model = result.Model as HttpStatusCodeResult;
     Assert.AreEqual(500, model.StatusCode);
     Assert.AreEqual("Failed to edit user.", model.StatusDescription);
 }
        public ActionResult Edit(user user)
        {
            if (user == null || user.id != userAccess.getUserId(User.Identity.Name))
            {
                return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Could not get user."));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    string hashedPassword = Hasher.HashPassword(user.username, user.password);
                    user.password = hashedPassword;
                    var u = db.users.Find(user.id);

                    var entry = db.Entry(u);
                    var state = entry.State;
                    if (state == EntityState.Detached)
                    {
                        db.Entry(user).State = EntityState.Modified;
                    }
                    else
                    {
                        entry.OriginalValues["timestamp"] = user.timestamp;
                        entry.CurrentValues.SetValues(user);
                    }
                    db.SaveChanges();
                    if (Session.Contents != null && Session.SessionID != null) FormsAuthentication.SetAuthCookie(user.username, false);
                    return RedirectToAction("Index", "MyProfile");
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to edit user as another user/admin may have already update this user"));
                }
                catch (DbUpdateException ex)
                {
                    return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to edit user."));
                }
                catch (Exception ex)
                {
                    return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to edit user."));
                }
            }
            else
            {
                return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Invalid changes."));
            }
        }
 public void TestMyProfileEditConcurrencyException()
 {
     user u = new user()
     {
         id = 3,
         username = "******",
         password = "******"
     };
     db.Setup(c => c.SaveChanges()).Throws(new DbUpdateConcurrencyException());
     ViewResult result = myProfileCon.Edit(u) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("DetailedError", result.ViewName);
     Assert.IsInstanceOfType(result.Model, typeof(HttpStatusCodeResult));
     var model = result.Model as HttpStatusCodeResult;
     Assert.AreEqual(500, model.StatusCode);
     Assert.AreEqual("Failed to edit user as another user/admin may have already update this user", model.StatusDescription);
 }
 public void TestMyProfileEditWithNoUserId()
 {
     user u = new user();
     ViewResult result = myProfileCon.Edit(u) as ViewResult;
     Assert.IsNotNull(result);
     Assert.AreEqual("DetailedError", result.ViewName);
     Assert.IsInstanceOfType(result.Model, typeof(HttpStatusCodeResult));
     var model = result.Model as HttpStatusCodeResult;
     Assert.AreEqual(400, model.StatusCode);
     Assert.AreEqual("Could not get user.", model.StatusDescription);
 }
        public ActionResult Register(user user)
        {
            Login login = new Login();
            login.Username = user.username;
            login.Password = user.password;

            string hashedPassword = Hasher.HashPassword(user.username, user.password);
            user.password = hashedPassword;
            user.is_admin = 0;

            //checks if username already exists in db
            var isDuplicate = db.users.Where(u => u.username == user.username).FirstOrDefault();
            if (isDuplicate != null)
            {
                ModelState.AddModelError("username", "This username already exists. Please choose another one.");
                return View();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    db.users.Add(user);
                    db.SaveChanges();

                    return Login(login);
                }
                catch (Exception ex)
                {
                    return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "An error occured while trying to register new account"));
                }
            }
            else
            {
                return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "An error occured while trying to register new account"));
            }
        }
 /// <summary>
 /// Gets the fake users
 /// </summary>
 /// <returns>A queryable list of fake users</returns>
 private List<user> getSeedUsers()
 {
     user user1 = new user
     {
         id = 1,
         username = "******",
         password = "******"
     };
     user user2 = new user
     {
         id = 2,
         username = "******"
     };
     user user3 = new user
     {
         id = 3,
         username = "******"
     };
     user user4 = new user
     {
         id = 4,
         username = "******"
     };
     var users = new List<user> { user1, user2, user3, user4 };
     return users;
 }