Example #1
0
 public LoginQueryHandlerTests()
 {
     userRepositoryMock = new Mock <IUserRepository>();
     passwordMock       = new Mock <IPasswordEncrypt>();
     tokenMock          = new Mock <ITokenManager>();
     sut = new LoginQueryHandler(userRepositoryMock.Object, passwordMock.Object, tokenMock.Object);
 }
        public async Task HandleShouldReturnFailWhenWrongPassword()
        {
            // Arrange
            var id = Guid.NewGuid();

            var userFinderMock = new Mock <IUserFinder>();

            userFinderMock.Setup(x => x.Get(It.IsAny <string>())).Returns(Task.FromResult(new User(id, new Login("login"), "password", new FullName(new FirstName("FirstName"), new LastName("FirstName")))));
            var userFinder = userFinderMock.Object;

            var passwordProviderMock = new Mock <IPasswordProvider>();

            passwordProviderMock.Setup(x => x.Verify(It.IsAny <string>(), It.IsAny <string>())).Returns(false);
            var passwordProvider = passwordProviderMock.Object;

            var query = new LoginQuery(null, null);

            var handler = new LoginQueryHandler(userFinder, passwordProvider);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.InvalidCredentials.Name &&
                                                 x.Message == HandlerFailures.InvalidCredentials &&
                                                 x.Target == "credentials");
        }
        public async Task HandleShouldReturnOk()
        {
            // Arrange
            var id = Guid.NewGuid();

            var userFinderMock = new Mock <IUserFinder>();

            userFinderMock.Setup(x => x.Get(It.IsAny <string>())).Returns(Task.FromResult(new User(id, new Login("login"), "password", new FullName(new FirstName("FirstName"), new LastName("FirstName")))));
            var userFinder = userFinderMock.Object;

            var passwordProviderMock = new Mock <IPasswordProvider>();

            passwordProviderMock.Setup(x => x.Verify(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            var passwordProvider = passwordProviderMock.Object;

            var query = new LoginQuery(null, null);

            var handler = new LoginQueryHandler(userFinder, passwordProvider);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeFalse();
            result.Should().BeOfType(typeof(Result <AuthenticatedUserModel>));
        }
        public async Task HandleShouldReturnFailWhenDatabaseSpecificErrorOccurs()
        {
            var id = Guid.NewGuid();

            var userFinderMock = new Mock <IUserFinder>();

            userFinderMock.Setup(x => x.Get(id)).Throws <SomeDatabaseSpecificException>();
            var userFinder = userFinderMock.Object;

            var passwordProviderMock = new Mock <IPasswordProvider>();

            passwordProviderMock.Setup(x => x.Verify(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            var passwordProvider = passwordProviderMock.Object;

            var query = new LoginQuery(null, null);

            var handler = new LoginQueryHandler(userFinder, passwordProvider);

            // Act
            var result = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Message == CustomFailures.LoginUserFailure);
        }
        public LoginQueryHandlerTests()
        {
            _ripeRepository = Substitute.For <IRipeRepository>();
            var logger = Substitute.For <ILogger <LoginQueryHandler> >();

            _reportService = Substitute.For <IReportService>();

            _handler = new LoginQueryHandler(logger,
                                             _ripeRepository,
                                             _reportService);
        }
        public HttpResponseMessage Login([FromUri] UserDomainModel user)
        {
            if (string.IsNullOrEmpty(user.Username))
            {
                throw new NullReferenceException(nameof(user.Username));
            }

            if (string.IsNullOrEmpty(user.PasswordHash))
            {
                throw new NullReferenceException(nameof(user.PasswordHash));
            }

            LoginQuery query = new LoginQuery()
            {
                PasswordHash = user.PasswordHash,
                Username     = user.Username
            };

            LoginQueryHandler handler = new LoginQueryHandler(query, UnityContainer);


            return(Request.CreateResponse(HttpStatusCode.OK, handler.Handle()));
        }
Example #7
0
 public UserLoginController(LoginQueryHandler loginQueryHandler)
 {
     _loginQueryHandler = loginQueryHandler;
 }
Example #8
0
 public LoginController(LoginQueryHandler queryHandler)
 {
     _queryHandler = queryHandler;
 }
Example #9
0
        public HttpResponseMessage Login([FromBody] JObject data)
        {
            JToken parameterUsername = data["Username"];
            JToken parameterPassword = data["Password"];

            try
            {
                if (string.IsNullOrEmpty(parameterUsername.ToString()))
                {
                    throw new ArgumentNullException(nameof(parameterUsername));
                }

                if (string.IsNullOrEmpty(parameterPassword.ToString()))
                {
                    throw new ArgumentNullException(nameof(parameterPassword));
                }

                LoginQuery loginQuery = new LoginQuery()
                {
                    Username = parameterUsername.ToString(),
                    Password = parameterPassword.ToString()
                };

                LoginQueryHandler loginQueryHandler = new LoginQueryHandler(loginQuery, UnityContainer);

                Guid personUid = loginQueryHandler.Handle();

                HttpCookie requestCookie = HttpContext.Current.Request.Cookies.Get(ConfigurationManager.AppSettings["SessionCookieName"]);

                if (requestCookie == null)
                {
                    CreateSessionQuery createSessionQuery = new CreateSessionQuery()
                    {
                        Session = new SessionDomainModel()
                        {
                            LoginUID   = personUid,
                            ExpireDate = DateTimeOffset.Now.AddDays(1)
                        }
                    };

                    CreateSessionQueryHandler createSessionQueryHandler = new CreateSessionQueryHandler(createSessionQuery, new UnityContainer());

                    var guid = createSessionQueryHandler.Handle().ToString();

                    HttpCookie cookie = new HttpCookie(ConfigurationManager.AppSettings["SessionCookieName"])
                    {
                        Value    = guid,
                        Domain   = HttpContext.Current.Request.Url.Host,
                        Expires  = DateTime.Now.AddDays(1),
                        HttpOnly = false,
                    };

                    var ersponse = HttpContext.Current.Response;

                    HttpContext.Current.Response.AppendCookie(cookie);

                    return(Request.CreateResponse(HttpStatusCode.OK, guid));
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }