コード例 #1
0
        public async Task Handle_ReturnsUser_WhenUsernameCasesDontMatch()
        {
            //arrange
            const string   expectedUsername = "******";
            const RoleEnum expectedRole     = default;
            const string   password         = "******";
            var            user             = new User
            {
                Username = expectedUsername,
                Password = BCrypt.Net.BCrypt.EnhancedHashPassword(password, 4),
                Role     = expectedRole
            };

            DbContext.Users.Add(user);
            await DbContext.SaveChangesAsync();

            var query = new LogInQuery(expectedUsername.ToUpper(), password);

            //act
            GetUserViewModel?actual = await _handler.Handle(query);

            //assert
            Assert.Equal(user.Id, actual.Id);
            Assert.Equal(expectedUsername, actual.Username);
            Assert.Equal(expectedRole, actual.Role);
        }
コード例 #2
0
ファイル: AuthController.cs プロジェクト: somaliz/sovvf
        public async Task <IActionResult> Login([FromBody] AuthLogIn credenziali)
        {
            var query = new LogInQuery()
            {
                Username = credenziali.username,
                Password = credenziali.password
            };

            try
            {
                var utente = (Utente)this._handler.Handle(query).User;

                if (utente == null)
                {
                    return(Unauthorized());
                }

                return(Ok(utente));
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("no element"))
                {
                    return(StatusCode(404, "Credenziali errate"));
                }
                return(BadRequest(ex.Message));
            }
        }
コード例 #3
0
        public async Task <IActionResult> Login([FromBody] AuthLogIn crenenziali)
        {
            var headerValues = Request.Headers["HubConnectionId"];

            string ConId = headerValues.FirstOrDefault();

            var query = new LogInQuery()
            {
                Username = crenenziali.username,
                Password = crenenziali.password
            };

            try
            {
                var utente = (Utente)this._handler.Handle(query).User;

                if (utente == null)
                {
                    return(Unauthorized());
                }

                await _NotificationHub.Clients.Client(ConId).SendAsync("NotifyAuth", utente);

                return(Ok(utente));
            }
            catch
            {
                return(BadRequest());
            }
        }
コード例 #4
0
        public async Task ValidateAsync_ReturnsValid_WhenPasswordAndUsernameHaveValue()
        {
            //arrange
            var query = new LogInQuery("Value", "Value");

            //act
            ValidationResult?actual = await _validator.ValidateAsync(query);

            //assert
            Assert.True(actual.IsValid);
        }
コード例 #5
0
        public async Task Handle_ThrowsLoginFailedException_WhenThereIsNoPasswordAgainstTheUsername()
        {
            //arrange
            var query = new LogInQuery("TestUsername", "TestPassword");

            //act + assert
            await Assert.ThrowsAsync <LoginFailedException>(async() =>
            {
                await _handler.Handle(query);
            });
        }
コード例 #6
0
        public async Task ValidateAsync_ReturnsNotValid_WhenEitherPasswordOrUsernameAreEmpty(string username,
                                                                                             string password)
        {
            //arrange
            var query = new LogInQuery(username, password);

            //act
            ValidationResult?actual = await _validator.ValidateAsync(query);

            //assert
            Assert.False(actual.IsValid);
        }
コード例 #7
0
        public async Task Handle_ThrowsLoginFailedException_WhenThereIsNoMatchingUsernameInTheDatabase()
        {
            //arrange
            const string username = "******";

            DbContext.Users.Add(new User {
                Username = username
            });
            await DbContext.SaveChangesAsync();

            var query = new LogInQuery(username, "TestPassword");

            //act + assert
            await Assert.ThrowsAsync <LoginFailedException>(async() =>
            {
                await _handler.Handle(query);
            });
        }
コード例 #8
0
        public async Task Handle_ThrowsLoginFailedException_WhenPasswordsDoNotMatch()
        {
            //arrange
            const string username = "******";
            const string password = "******";

            DbContext.Users.Add(new User
            {
                Username = username, Password = BCrypt.Net.BCrypt.EnhancedHashPassword(password)
            });
            await DbContext.SaveChangesAsync();

            var query = new LogInQuery(username, "WrongPassword");

            //act + assert
            await Assert.ThrowsAsync <LoginFailedException>(async() =>
            {
                await _handler.Handle(query);
            });
        }
コード例 #9
0
        public async Task Handle_ReturnsUser(int amount, int index, RoleEnum expectedRole)
        {
            //arrange
            const string expectedUsername = "******";
            const string password         = "******";
            var          user             = new User();

            for (var i = 0; i < amount; i++)
            {
                if (i == index)
                {
                    user = new User
                    {
                        Username = expectedUsername,
                        Password = BCrypt.Net.BCrypt.EnhancedHashPassword(password, 4),
                        Role     = expectedRole
                    };
                    DbContext.Users.Add(user);
                    await DbContext.SaveChangesAsync();
                }
                else
                {
                    DbContext.Users.Add(new User
                    {
                        Username = i.ToString(), Password = BCrypt.Net.BCrypt.EnhancedHashPassword(i.ToString(), 4)
                    });
                }
            }

            await DbContext.SaveChangesAsync();

            var query = new LogInQuery(expectedUsername, password);

            //act
            GetUserViewModel?actual = await _handler.Handle(query);

            //assert
            Assert.Equal(user.Id, actual.Id);
            Assert.Equal(expectedUsername, actual.Username);
            Assert.Equal(expectedRole, actual.Role);
        }
コード例 #10
0
        public async Task <IActionResult> Login([FromBody] AuthLogIn credenziali)
        {
            var query = new LogInQuery()
            {
                Username = credenziali.username,
                Password = credenziali.password
            };

            try
            {
                var CasAbilitato = _config.GetSection("CasTest").Value;

                if (CasAbilitato.Equals("true"))
                {
                    var utente = (Utente)this._handler.Handle(query).User;

                    if (utente == null)
                    {
                        return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato }));
                    }

                    return(Ok(utente));
                }
                else
                {
                    return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato }));
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("no element"))
                {
                    return(StatusCode(404, new { message = "Le credenziali inserite non risultano corrette" }));
                }
                return(BadRequest(new { message = ex.Message }));
            }
        }
コード例 #11
0
        public async Task <IActionResult> Login([FromBody] AuthLogIn credenziali)
        {
            var query = new LogInQuery()
            {
                Username = credenziali.username,
                Password = credenziali.password
            };

            try
            {
                var utente = (Utente)this._handler.Handle(query).User;

                if (utente == null)
                {
                    return(Unauthorized());
                }

                return(Ok(utente));
            }
            catch
            {
                return(BadRequest());
            }
        }