public void AddAdmin_UserNotInGoodRole_RedirectToHomePage() { //Arrange System_AdminController sac = new System_AdminController(); var userMock = new Mock <IPrincipal>(); userMock.Setup(p => p.IsInRole("Regular_User")).Returns(true); var requestMock = new Mock <HttpRequestBase>(); requestMock.SetupGet(x => x.IsAuthenticated).Returns(true); var contextMock = new Mock <HttpContextBase>(); contextMock.SetupGet(ctx => ctx.User).Returns(userMock.Object); contextMock.SetupGet(ctx => ctx.Request).Returns(requestMock.Object); var controllerContextMock = new Mock <ControllerContext>(); controllerContextMock.SetupGet(con => con.HttpContext).Returns(contextMock.Object); sac.ControllerContext = controllerContextMock.Object; var inputVM = new AddNewAdminViewModel(); //Act var result = sac.AddAdmin(inputVM).Result; RedirectToRouteResult routeResult = result as RedirectToRouteResult; //Assert Assert.That(routeResult, Is.Not.Null); Assert.AreEqual(routeResult.RouteValues["action"], "Index"); Assert.That(sac.TempData.ContainsKey("success"), Is.False); }
public void AddAdmin_RequestNotAuthenticated_RedirectToLoginPage() { //Arrange System_AdminController sac = new System_AdminController(); var requestMock = new Mock <HttpRequestBase>(); requestMock.SetupGet(x => x.IsAuthenticated).Returns(false); var contextMock = new Mock <HttpContextBase>(); contextMock.SetupGet(x => x.Request).Returns(requestMock.Object); sac.ControllerContext = new ControllerContext(contextMock.Object, new RouteData(), sac); var inputVM = new AddNewAdminViewModel(); //Act var result = sac.AddAdmin(inputVM).Result; RedirectToRouteResult routeResult = result as RedirectToRouteResult; //Assers Assert.That(routeResult, Is.Not.Null); Assert.AreEqual(routeResult.RouteValues["action"], "Login"); Assert.That(sac.TempData.ContainsKey("success"), Is.False); }
public IActionResult AddNewAdmin(AddNewAdminViewModel input) { if (ModelState.IsValid) { string result = _userService.AddNewAdmin(input); if (result == "Succeeded") { return(RedirectToAction("Index", "Home", new { message = "New admin has successfully been added" })); } return(RedirectToAction("AddNewAdmin", "Admin", new { input = input, message = "New admin has not been added" })); } return(View(input)); }
public void AddAdmin_AddLocationAdminAndSomeVMAttributesAreNull_RedirectToAddNewAdminPage() { //Arrange System_AdminController sac = new System_AdminController(); var userMock = new Mock <IPrincipal>(); userMock.Setup(p => p.IsInRole("System_Admin")).Returns(true); var requestMock = new Mock <HttpRequestBase>(); requestMock.SetupGet(x => x.IsAuthenticated).Returns(true); var contextMock = new Mock <HttpContextBase>(); contextMock.SetupGet(ctx => ctx.User).Returns(userMock.Object); contextMock.SetupGet(ctx => ctx.Request).Returns(requestMock.Object); var controllerContextMock = new Mock <ControllerContext>(); controllerContextMock.SetupGet(con => con.HttpContext).Returns(contextMock.Object); sac.ControllerContext = controllerContextMock.Object; var inputVM = new AddNewAdminViewModel() { Admin_Type = AdminType.LOCATION_ADMIN, Email = "", Name = null, LastName = "", UserName = null, MyLocationId = "" }; //Act var result = sac.AddAdmin(inputVM).Result; RedirectToRouteResult routeResult = result as RedirectToRouteResult; //Assert Assert.That(routeResult, Is.Not.Null); Assert.AreEqual(routeResult.RouteValues["action"], "AddNewAdmin"); Assert.AreEqual(sac.ModelState.Values.Count, 1); Assert.AreEqual(sac.ModelState.Values.ElementAt(0).Errors.ElementAt(0).ErrorMessage, "Error while trying to add new admin (some fields are null)"); }
public string AddNewAdmin(AddNewAdminViewModel viewModel) { bool userNameIsUnique = NewAdminIsValid(viewModel.Email); if (userNameIsUnique == true) { ApplicationUser newAdmin = new ApplicationUser(); newAdmin.UserName = viewModel.Email; newAdmin.Email = viewModel.Email; IdentityResult result = _userManager.CreateAsync(newAdmin, viewModel.Password).Result; if (result.Succeeded) { _userManager.AddToRoleAsync(newAdmin, "Admin").Wait(); } return("Succeeded" /*result.ToString()*/); } return("Failed"); }
public async Task <ActionResult> AddAdmin(AddNewAdminViewModel adminVM) { if (!Request.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } else { if (!User.IsInRole("System_Admin")) { return(RedirectToAction("Index", "Home")); } else { if (adminVM.Name != null && adminVM.LastName != null && adminVM.Email != null && adminVM.UserName != null) { Admin newAdmin = null; if (adminVM.Admin_Type == AdminType.SYSTEM_ADMIN) { newAdmin = new SystemAdmin { Admin_Type = adminVM.Admin_Type, Name = adminVM.Name, LastName = adminVM.LastName, Email = adminVM.Email, UserName = adminVM.UserName, IsMainAdmin = false }; } else if (adminVM.Admin_Type == AdminType.FANZONE_ADMIN) { newAdmin = new FanZoneAdmin { Admin_Type = adminVM.Admin_Type, Name = adminVM.Name, LastName = adminVM.LastName, Email = adminVM.Email, UserName = adminVM.UserName, HasSetPassword = false }; } else if (adminVM.Admin_Type == AdminType.LOCATION_ADMIN) { if (adminVM.MyLocationId != null) { newAdmin = new LocationAdmin { Admin_Type = adminVM.Admin_Type, Name = adminVM.Name, LastName = adminVM.LastName, Email = adminVM.Email, UserName = adminVM.UserName, MyLocationId = adminVM.MyLocationId }; } else { ModelState.AddModelError("", "Error: Admin location is null."); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } } if (newAdmin != null) { using (var um = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()))) { IdentityResult result; if (um.Users.FirstOrDefault(usr => usr.Email == newAdmin.Email) == null) { //RandomString() string newPassword = "******"; result = await um.CreateAsync(newAdmin, newPassword); if (result.Succeeded) { if (adminVM.Admin_Type == AdminType.SYSTEM_ADMIN) { if (!um.IsInRole(newAdmin.Id, "System_Admin")) { var userResult = um.AddToRole(newAdmin.Id, "System_Admin"); if (!userResult.Succeeded) { ModelState.AddModelError("", "Adding user '" + newAdmin.UserName + "' to '" + "System_Admin" + "' role failed with error(s): " + userResult.Errors); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } } } else if (adminVM.Admin_Type == AdminType.FANZONE_ADMIN) { if (!um.IsInRole(newAdmin.Id, "Fanzone_Admin")) { var userResult = um.AddToRole(newAdmin.Id, "Fanzone_Admin"); if (!userResult.Succeeded) { ModelState.AddModelError("", "Adding user '" + newAdmin.UserName + "' to '" + "Fanzone_Admin" + "' role failed with error(s): " + userResult.Errors); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } else { //email to [email protected] from the same address var fromAddress = new MailAddress("*****@*****.**", "ISA NS"); var toAddress = new MailAddress("*****@*****.**", "ISA NS"); string fromPassword = "******"; string subject = "Welcome to ISA2017 Cinemas"; string body = "Hello new Fanzone admin!" + System.Environment.NewLine + "Your sign-in credentials are:" + System.Environment.NewLine + "Email: " + adminVM.Email + System.Environment.NewLine + "Password: "******"smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { smtp.Send(message); } } } } else if (adminVM.Admin_Type == AdminType.LOCATION_ADMIN) { if (!um.IsInRole(newAdmin.Id, "Location_Admin")) { var userResult = um.AddToRole(newAdmin.Id, "Location_Admin"); if (!userResult.Succeeded) { ModelState.AddModelError("", "Adding user '" + newAdmin.UserName + "' to '" + "Location_Admin" + "' role failed with error(s): " + userResult.Errors); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } else { ApplicationDbContext ctx = new ApplicationDbContext(); var resLoc = ctx.Locations.FirstOrDefault(x => x.Id.ToString() == adminVM.MyLocationId); if (resLoc != null) { resLoc.MyAdminId = newAdmin.Id; ctx.SaveChanges(); } else { um.RemoveFromRole(newAdmin.Id, "Location_Admin"); ModelState.AddModelError("", "Error: Given admin location is not found! Please try again."); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } } } } } else { ModelState.AddModelError("", "Error while trying to create new admin"); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } } else { ModelState.AddModelError("", "User with this email adress already exists"); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } } } else { ModelState.AddModelError("", "Error while trying to add new admin (newAdmin is null)"); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } } else { ModelState.AddModelError("", "Error while trying to add new admin (some fields are null)"); TempData["ModelState"] = ModelState; return(RedirectToAction("AddNewAdmin", "System_Admin")); } TempData["success"] = "Succesfully added a new: " + adminVM.Admin_Type.ToString(); return(RedirectToAction("Index", "Home")); } } }