OnPostAsync() public method

public OnPostAsync ( ) : Task
return Task
示例#1
0
        public async Task OnLogin_WhenPassSkipProfileUsers_RedirectToApiKey()
        {
            var portFreightUser = new PortFreightUser()
            {
                UserName     = "******",
                Email        = "*****@*****.**",
                PasswordHash = "TestTest1!",
                SenderId     = "T12345"
            };

            portFreightUsersList = new List <PortFreightUser>();
            portFreightUsersList.Add(portFreightUser);

            loginModel.Input = new LoginModel.InputModel
            {
                Email      = portFreightUser.Email,
                Password   = portFreightUser.PasswordHash,
                RememberMe = true
            };

            mockConfig.Setup(x => x[It.IsAny <string>()]).Returns("T12345");

            mockfakeSignInManager.Setup(x => x.PasswordSignInAsync(loginModel.Input.Email, loginModel.Input.Password, loginModel.Input.RememberMe, true)).ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success);

            mockUserManager.Setup(u => u.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(portFreightUsersList.FirstOrDefault());

            var result = (RedirectToPageResult)await loginModel.OnPostAsync();

            Assert.IsNotNull(result);
            Assert.AreEqual("/ApiKey/ApiKey", result.PageName);
            Assert.IsInstanceOfType(result, typeof(RedirectToPageResult));
        }
示例#2
0
        public async Task OnPostAsync_Login_ReturnAsPageResult()
        {
            var mockUserStore   = new Mock <IUserStore <ApplicationUser> >();
            var mockUserManager = new Mock <UserManager <ApplicationUser> >(
                mockUserStore.Object, null, null, null, null, null, null, null, null);
            var contextAccessor      = new Mock <IHttpContextAccessor>();
            var userPrincipalFactory = new Mock <IUserClaimsPrincipalFactory <ApplicationUser> >();
            var signInManager        = new SignInManager <ApplicationUser>(
                mockUserManager.Object, contextAccessor.Object, userPrincipalFactory.Object, null, null, null);
            var mockLogger = new Mock <ILogger <LoginViewModel> >();

            //set context into Login Page
            var pageModel = new LoginModel(signInManager, mockLogger.Object);

            pageModel.Input = new LoginViewModel
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            // Act
            var result = await pageModel.OnPostAsync("~/");

            // Assert
            Assert.IsType <PageResult>(result);
        }
示例#3
0
        public async Task TestLoginAccount(string email, string password)
        {
            using (var db = new AppDbContext(Utilities.Utilities.TestAppDbContext()))
            {
                var signInManagerMock = new Mock <FakeSignInManager>();
                signInManagerMock.Setup(fsim => fsim.PasswordSignInAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>()))
                .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success);

                // Arrange
                //---* FOR USAGE OF User.Identity *---//

                //Create test user
                var fakeIdentity = new GenericIdentity("*****@*****.**");
                var principal    = new ClaimsPrincipal(fakeIdentity);
                var httpContext  = new DefaultHttpContext()
                {
                    User = principal
                };

                //need these as well for the page context
                var modelState            = new ModelStateDictionary();
                var actionContext         = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState);
                var modelMetadataProvider = new EmptyModelMetadataProvider();
                var viewData = new ViewDataDictionary(modelMetadataProvider, modelState);

                // need page context for the page model
                var pageContext = new PageContext(actionContext)
                {
                    ViewData = viewData
                };

                LoginModel loginModel = new LoginModel(
                    signInManagerMock.Object
                    )
                {
                    PageContext = pageContext
                };


                var inputModel = new LoginModel.InputModel();
                inputModel.Email    = email;
                inputModel.Password = password;

                loginModel.Input = inputModel;

                // Act
                await loginModel.OnPostAsync("Index");

                var um          = new FakeSignInManager();
                var loginResult = um.IsSignedIn(loginModel.User);

                // Assert
                Assert.True(
                    loginResult
                    );
            }
        }
示例#4
0
        public async Task OnPostAsync()
        {
            // Arrange
            const string returnUrl  = "~/return-url";
            const string origin     = "~/origin";
            const string password   = "******";
            const bool   rememberMe = true;
            var          user       = new User
            {
                Email = "*****@*****.**"
            };
            var httpContext   = new DefaultHttpContext();
            var modelState    = new ModelStateDictionary();
            var actionContext = new ActionContext(
                httpContext: httpContext,
                routeData: new RouteData(),
                actionDescriptor: new PageActionDescriptor(),
                modelState: modelState);
            var viewData = new ViewDataDictionary(
                metadataProvider: new EmptyModelMetadataProvider(),
                modelState: modelState);

            _userManager.Setup(x => x.FindByEmailAsync(user.Email)).ReturnsAsync(user);
            _signInManager
            .Setup(x => x.PasswordSignInAsync(user.Email, password, rememberMe, true))
            .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success);
            var login = new LoginModel(_signInManager.Object, _userManager.Object, _logger.Object)
            {
                PageContext = new PageContext(actionContext)
                {
                    ViewData    = viewData,
                    HttpContext = httpContext
                },
                Url   = new UrlHelper(actionContext),
                Input = new LoginModel.InputModel
                {
                    Email      = user.Email,
                    Password   = password,
                    RememberMe = rememberMe
                },
                TempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>())
            };

            // Act
            var post = await login.OnPostAsync(returnUrl, origin).ConfigureAwait(false);

            // Assert
            var result = Assert.IsType <LocalRedirectResult>(post);

            Assert.Equal(returnUrl, result.Url);
            Assert.Equal(origin, login.TempData[nameof(login.Origin)]);
        }
示例#5
0
        public async Task OnPostAsync_NoReturnUrl_UserIsNotAdmin()
        {
            // Arrange
            const string password   = "******";
            const bool   rememberMe = true;
            var          user       = new User
            {
                Email = "*****@*****.**"
            };
            var httpContext   = new DefaultHttpContext();
            var modelState    = new ModelStateDictionary();
            var actionContext = new ActionContext(
                httpContext: httpContext,
                routeData: new RouteData(),
                actionDescriptor: new PageActionDescriptor(),
                modelState: modelState);
            var viewData = new ViewDataDictionary(
                metadataProvider: new EmptyModelMetadataProvider(),
                modelState: modelState);

            _userManager.Setup(x => x.FindByEmailAsync(user.Email)).ReturnsAsync(user);
            _userManager.Setup(x => x.IsInRoleAsync(user, "Admin")).ReturnsAsync(false);
            var login = new LoginModel(_signInManager.Object, _userManager.Object, _logger.Object)
            {
                PageContext = new PageContext(actionContext)
                {
                    ViewData    = viewData,
                    HttpContext = httpContext
                },
                Url   = new UrlHelper(actionContext),
                Input = new LoginModel.InputModel
                {
                    Email      = user.Email,
                    Password   = password,
                    RememberMe = rememberMe
                },
                TempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>())
            };

            // Act
            var post = await login.OnPostAsync().ConfigureAwait(false);

            // Assert
            Assert.IsType <PageResult>(post);
            _signInManager.Verify(
                x => x.PasswordSignInAsync(user.Email, password, rememberMe, true),
                Times.Never);
        }
        public async Task OnPostAsync_Incorrect_Login()
        {
            //// Arrange
            var authenticationResponse = new AuthenticationReponse()
            {
                WasAuthenticationCorrect = false
            };

            var authenticationServiceMock = new Mock <IAuthenticationService>();

            authenticationServiceMock.Setup(x => x.Login(It.IsAny <User>())).ReturnsAsync(authenticationResponse);

            var localizerMock = new Mock <ICultureLocalizer>();

            localizerMock.Setup(x => x.Text(It.IsAny <string>())).Returns(new LocalizedString("name", "localizedMessage"));

            var loginModel = new LoginModel(localizerMock.Object, authenticationServiceMock.Object)
            {
                LoginForm = new _LoginForm()
                {
                    Username = "******", Password = "******"
                }
            };
            var httpContext   = new DefaultHttpContext();
            var modelState    = new ModelStateDictionary();
            var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState);
            var pageContext   = new PageContext(actionContext);

            loginModel.PageContext = pageContext;

            //// Act
            await loginModel.OnPostAsync();

            //// Assert
            Assert.Equal("localizedMessage", loginModel.Msg);
        }
示例#7
0
        public async Task OnPostAsync_RequiresTwoFactor()
        {
            // Arrange
            const string returnUrl  = "~/return-url";
            const string password   = "******";
            const bool   rememberMe = true;
            var          user       = new User
            {
                Email = "*****@*****.**"
            };
            var httpContext   = new DefaultHttpContext();
            var modelState    = new ModelStateDictionary();
            var actionContext = new ActionContext(
                httpContext: httpContext,
                routeData: new RouteData(),
                actionDescriptor: new PageActionDescriptor(),
                modelState: modelState);
            var viewData = new ViewDataDictionary(
                metadataProvider: new EmptyModelMetadataProvider(),
                modelState: modelState);

            _userManager.Setup(x => x.FindByEmailAsync(user.Email)).ReturnsAsync(user);
            _signInManager
            .Setup(x => x.PasswordSignInAsync(user.Email, password, rememberMe, true))
            .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.TwoFactorRequired);
            var login = new LoginModel(_signInManager.Object, _userManager.Object, _logger.Object)
            {
                PageContext = new PageContext(actionContext)
                {
                    ViewData    = viewData,
                    HttpContext = httpContext
                },
                Url   = new UrlHelper(actionContext),
                Input = new LoginModel.InputModel
                {
                    Email      = user.Email,
                    Password   = password,
                    RememberMe = rememberMe
                },
                TempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>())
            };

            // Act
            var post = await login.OnPostAsync(returnUrl).ConfigureAwait(false);

            // Assert
            var result = Assert.IsType <RedirectToPageResult>(post);

            Assert.Equal("./LoginWith2fa", result.PageName);
            Assert.Collection(
                result.RouteValues,
                routeValue1 =>
            {
                var(key, value) = routeValue1;
                Assert.Equal(nameof(returnUrl), key);
                Assert.Equal(returnUrl, value);
            },
                routeValue2 =>
            {
                var(key, value) = routeValue2;
                Assert.Equal(nameof(login.Input.RememberMe), key);
                Assert.Equal(rememberMe, value);
            });
        }