Ejemplo n.º 1
0
        public async Task <ActionResult> InternalLogin(InternalLoginViewModel viewModel)
        {
            var returnUrl = GetSafeReturnUrl(Request.UrlReferrer);

            if (!ModelState.IsValid)
            {
                InitializeLoginViewModel(viewModel);
                return(PartialView("Login", viewModel));
            }

            var result = await SignInManager.PasswordSignInAsync(viewModel.Email, viewModel.Password, viewModel.RememberMe, shouldLockout : true);

            switch (result)
            {
            case SignInStatus.Success:
                break;

            case SignInStatus.LockedOut:
                return(PartialView("Lockout", viewModel));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", "Login", new { ReturnUrl = viewModel.ReturnUrl, RememberMe = viewModel.RememberMe }));

            default:
                ModelState.AddModelError("Password", _localizationService.GetString("/Login/Form/Error/WrongPasswordOrEmail"));
                viewModel.Password = null;

                return(PartialView("Login", viewModel));
            }

            return(Json(new { Success = true, ReturnUrl = returnUrl }, JsonRequestBehavior.DenyGet));
        }
Ejemplo n.º 2
0
        public void InternalLogin_WhenSuccessful_ShouldReturnJson()
        {
            _signinManagerMock.Setup(
                x => x.PasswordSignInAsync(
                    It.IsAny <string>(),
                    It.IsAny <string>(),
                    It.IsAny <bool>(),
                    It.IsAny <bool>()))
            .Returns(Task.FromResult(SignInStatus.Success));

            var model = new InternalLoginViewModel
            {
                Email      = "*****@*****.**",
                Password   = "******",
                RememberMe = true,
                ReturnUrl  = _testUrl,
            };

            var result = _subject.InternalLogin(model).Result as JsonResult;

            var expectedResult = new JsonResult
            {
                Data = new { Success = true, ReturnUrl = "/" },     // ReturnUrl should always be without hostname
                JsonRequestBehavior = JsonRequestBehavior.DenyGet
            };

            result.ShouldBeEquivalentTo(expectedResult);
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> SignIn(InternalLoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var loginResult =
                    await weeeAuthorization.SignIn(model.Email, model.Password, model.RememberMe);

                if (loginResult.Successful)
                {
                    return(this.LoginRedirect(loginResult.DefaultLoginAction, returnUrl));
                }

                ModelState.AddModelError(string.Empty, loginResult.ErrorMessage);
            }

            return(View(model));
        }
Ejemplo n.º 4
0
        public async void HttpPost_SignIn_ModelIsInvalid_ShouldRedirectViewWithModel()
        {
            var controller = AccountController();

            controller.ModelState.AddModelError("Key", "Any error");

            var model = new InternalLoginViewModel
            {
                Email      = "*****@*****.**",
                Password   = "******",
                RememberMe = false
            };
            var result = await controller.SignIn(model, "AnyUrl");

            Assert.IsType <ViewResult>(result);
            Assert.Equal(model, ((ViewResult)(result)).Model);
            Assert.False(controller.ModelState.IsValid);
        }
Ejemplo n.º 5
0
        public async void HttpPost_SignIn_ModelIsValid_AndSignInSucceeds_ShouldRedirectToDefaultLoginAction()
        {
            var model = new InternalLoginViewModel
            {
                Email      = "*****@*****.**",
                Password   = "******",
                RememberMe = false
            };

            var defaultLoginAction = A.Dummy <ActionResult>();

            A.CallTo(() => apiClient.SendAsync(A <string> ._, A <GetAdminUserStatus> ._)).Returns(UserStatus.Active);

            A.CallTo(() => weeeAuthorization.SignIn(A <string> ._, A <string> ._, A <bool> ._))
            .Returns(LoginResult.Success("dsadsada", defaultLoginAction));

            var result = await AccountController().SignIn(model, string.Empty);

            Assert.Equal(defaultLoginAction, result);
        }
Ejemplo n.º 6
0
        public void InternalLogin_WhenFailure_ShouldReturnModelErrors()
        {
            _signinManagerMock.Setup(
                x => x.PasswordSignInAsync(
                    It.IsAny <string>(),
                    It.IsAny <string>(),
                    It.IsAny <bool>(),
                    It.IsAny <bool>()))
            .Returns(Task.FromResult(SignInStatus.Failure));

            var model = new InternalLoginViewModel
            {
                Email      = "*****@*****.**",
                Password   = "******",
                RememberMe = true,
                ReturnUrl  = _testUrl,
            };

            var result = _subject.InternalLogin(model);

            _subject.ModelState.Values.First().Errors.First().ErrorMessage.Should().Be("WrongPasswordOrEmail");
        }
Ejemplo n.º 7
0
        public void InternalLogin_WhenLockedOut_ShoulReturndLockoutView()
        {
            _signinManagerMock.Setup(
                x => x.PasswordSignInAsync(
                    It.IsAny <string>(),
                    It.IsAny <string>(),
                    It.IsAny <bool>(),
                    It.IsAny <bool>()))
            .Returns(Task.FromResult(SignInStatus.LockedOut));

            var model = new InternalLoginViewModel
            {
                Email      = "*****@*****.**",
                Password   = "******",
                RememberMe = true,
                ReturnUrl  = _testUrl,
            };

            var result = _subject.InternalLogin(model).Result as PartialViewResult;

            result.ViewName.Should().Be("Lockout");
        }
Ejemplo n.º 8
0
        public async void HttpPost_SignIn_ModelIsValid_ButSignInFails_ShouldAddModelError_AndReturnViewWithModel()
        {
            var loginError = ":(";
            var model      = new InternalLoginViewModel
            {
                Email      = "*****@*****.**",
                Password   = "******",
                RememberMe = false
            };

            A.CallTo(() => weeeAuthorization.SignIn(A <string> ._, A <string> ._, A <bool> ._))
            .Returns(LoginResult.Fail(loginError));

            var controller = AccountController();
            var result     = await controller.SignIn(model, "AnyUrl");

            Assert.IsType <ViewResult>(result);
            Assert.Equal(model, ((ViewResult)result).Model);

            Assert.False(controller.ModelState.IsValid);
            Assert.Single(controller.ModelState.Values);
            Assert.Single(controller.ModelState.Values.Single().Errors);
            Assert.Equal(loginError, controller.ModelState.Values.Single().Errors.Single().ErrorMessage);
        }
        public async void HttpPost_SignIn_ModelIsValid_ButSignInFails_ShouldAddModelError_AndReturnViewWithModel()
        {
            var loginError = ":(";
            var model = new InternalLoginViewModel
            {
                Email = "*****@*****.**",
                Password = "******",
                RememberMe = false
            };

            A.CallTo(() => weeeAuthorization.SignIn(A<string>._, A<string>._, A<bool>._))
                .Returns(LoginResult.Fail(loginError));

            var controller = AccountController();
            var result = await controller.SignIn(model, "AnyUrl");

            Assert.IsType<ViewResult>(result);
            Assert.Equal(model, ((ViewResult)result).Model);

            Assert.False(controller.ModelState.IsValid);
            Assert.Single(controller.ModelState.Values);
            Assert.Single(controller.ModelState.Values.Single().Errors);
            Assert.Equal(loginError, controller.ModelState.Values.Single().Errors.Single().ErrorMessage);
        }
        public async void HttpPost_SignIn_ModelIsValid_AndSignInSucceeds_ShouldRedirectToDefaultLoginAction()
        {
            var model = new InternalLoginViewModel
            {
                Email = "*****@*****.**",
                Password = "******",
                RememberMe = false
            };

            var defaultLoginAction = A.Dummy<ActionResult>();

            A.CallTo(() => apiClient.SendAsync(A<string>._, A<GetAdminUserStatus>._)).Returns(UserStatus.Active);

            A.CallTo(() => weeeAuthorization.SignIn(A<string>._, A<string>._, A<bool>._))
              .Returns(LoginResult.Success("dsadsada", defaultLoginAction));

            var result = await AccountController().SignIn(model, string.Empty);

            Assert.Equal(defaultLoginAction, result);
        }
        public async void HttpPost_SignIn_ModelIsInvalid_ShouldRedirectViewWithModel()
        {
            var controller = AccountController();
            controller.ModelState.AddModelError("Key", "Any error");

            var model = new InternalLoginViewModel
            {
                Email = "*****@*****.**",
                Password = "******",
                RememberMe = false
            };
            var result = await controller.SignIn(model, "AnyUrl");

            Assert.IsType<ViewResult>(result);
            Assert.Equal(model, ((ViewResult)(result)).Model);
            Assert.False(controller.ModelState.IsValid);
        }
        public async Task<ActionResult> SignIn(InternalLoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var loginResult =
                await weeeAuthorization.SignIn(model.Email, model.Password, model.RememberMe);

                if (loginResult.Successful)
                {
                    return this.LoginRedirect(loginResult.DefaultLoginAction, returnUrl);
                }

                ModelState.AddModelError(string.Empty, loginResult.ErrorMessage);
            }

            return View(model);
        }
Ejemplo n.º 13
0
        private void InitializeLoginViewModel(InternalLoginViewModel viewModel)
        {
            StartPage startPage = _contentLoader.Get <StartPage>(ContentReference.StartPage);

            viewModel.ResetPasswordPage = startPage.ResetPasswordPage;
        }