public ActionResult BeginLogin(BeginLoginModel model) { if ((string.IsNullOrWhiteSpace(model.Password)) || !_memeberShipService.IsUserRegistered(model.UserName.Trim())) { // If we got this far, something failed, redisplay form ModelState.AddModelError("CustomError", "User has not been registered."); return View("Login", model); } if (!_memeberShipService.IsValidUserNameAndPassword(model.UserName.Trim(), model.Password.Trim())) { ModelState.AddModelError("CustomError", "User/Password is not invalid."); return View("Login", model); } try { List<ServerChallenge> serverChallenge = _memeberShipService.GenerateServerChallenges(model.UserName.Trim()); if(serverChallenge == null || serverChallenge.Count == 0) throw new Exception("No server challenges were generated."); var challenges = JsonConvert.SerializeObject(serverChallenge); CompleteLoginModel loginModel = new CompleteLoginModel { AppId = serverChallenge.First().appId, Version = serverChallenge.First().version, UserName = model.UserName.Trim(), Challenges = challenges }; return View("FinishLogin", loginModel); } catch (Exception e) { Console.WriteLine(e); ModelState.AddModelError("CustomError", e.Message); return View("Login", model); } }
public void HomeController_CompletedLoginWithUsername() { _memeberShipService.Setup(s => s.IsUserRegistered(It.Is<string>(p => p == "tester"))).Returns(true); _memeberShipService.Setup(s => s.AuthenticateUser(It.Is<string>(p => p == "tester"), It.Is<string>(p => p == "notrealdeviceresponse"))).Returns(true); HomeController homeController = new HomeController(_memeberShipService.Object); CompleteLoginModel beginLoginModel = new CompleteLoginModel { UserName = "******", DeviceResponse = "notrealdeviceresponse" }; var result = homeController.CompletedLogin(beginLoginModel) as RedirectToRouteResult; Assert.IsNotNull(result); Assert.AreEqual("Index", result.RouteValues["action"] as string); }
public void HomeController_CompletedLoginNoUsername() { _memeberShipService.Setup(s => s.IsUserRegistered(It.IsAny<string>())).Returns(false); HomeController homeController = new HomeController(_memeberShipService.Object); CompleteLoginModel beginLoginModel = new CompleteLoginModel{UserName = string.Empty}; ViewResult result = homeController.CompletedLogin(beginLoginModel) as ViewResult; Assert.IsNotNull(result); Assert.IsFalse(homeController.ModelState.IsValid); Assert.AreEqual("FinishLogin", result.ViewName); }
public void HomeController_CompletedLoginExceptionThrown() { _memeberShipService.Setup(s => s.AuthenticateUser(It.IsAny<string>(), It.IsAny<string>())).Throws(new Exception()); _memeberShipService.Setup(s => s.IsUserRegistered(It.IsAny<string>())).Returns(true); HomeController homeController = new HomeController(_memeberShipService.Object); CompleteLoginModel beginLoginModel = new CompleteLoginModel { UserName = "******" }; ViewResult result = homeController.CompletedLogin(beginLoginModel) as ViewResult; Assert.IsNotNull(result); Assert.IsFalse(homeController.ModelState.IsValid); Assert.AreEqual("FinishLogin", result.ViewName); }
public ActionResult CompletedLogin(CompleteLoginModel model) { if (!_memeberShipService.IsUserRegistered(model.UserName.Trim())) { // If we got this far, something failed, redisplay form ModelState.AddModelError("", "User has not been registered."); return View("FinishLogin", model); } try { if (!_memeberShipService.AuthenticateUser(model.UserName.Trim(), model.DeviceResponse.Trim())) throw new Exception("Device response did not work with user."); FormsAuthentication.SetAuthCookie(model.UserName, true); return RedirectToAction("Index", "Profile", new {userName = model.UserName}); } catch (Exception e) { Console.WriteLine(e); ModelState.AddModelError("", "Error authenticating"); return View("FinishLogin", model); } }