public async Task AuthenticateAsync_ShouldReturnDto()
        {
            // ARRANGE
            var mockQuery = new Mock <ITeachersQuery>();

            mockQuery
            .Setup(s => s.Authenticate(It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(GetTestAuthenticateUser());

            var mockContextFactory = SetupContextFactory(mockQuery.Object);

            _sut = new TeacherUserService(mockContextFactory.Object);
            var userDto = new UserDto {
                Login = "******", Password = "******"
            };

            // ACT
            var actual = await _sut.AuthenticateAsync(userDto);

            userDto.Id    = 1;
            userDto.Name  = "Name1";
            userDto.Roles = new List <string> {
                "Role1"
            };

            //ASSERT
            Assert.Equal(ComparableObject.Convert(userDto), ComparableObject.Convert(actual.Entity));
            Assert.Null(actual.Entity.Password);
        }
        public async Task AuthenticateAsync_ShouldReturnErrorWhenQueryReturnsNull()
        {
            // ARRANGE
            var mockQuery = new Mock <ITeachersQuery>();

            mockQuery
            .Setup(s => s.Authenticate(It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(new List <SPAuthenticateUser>());

            var mockContextFactory = SetupContextFactory(mockQuery.Object);

            _sut = new TeacherUserService(mockContextFactory.Object);
            var userDto = new UserDto {
                Login = "******", Password = "******"
            };

            // ACT
            var actual = await _sut.AuthenticateAsync(userDto);

            //ASSERT
            Assert.Equal("Неверный логин или пароль", actual.Error.Message);
        }
        public async Task AuthenticateAsync_ShouldReturnErrorWhenExceptionInQuery()
        {
            // ARRANGE
            var mockQuery = new Mock <ITeachersQuery>();

            mockQuery
            .Setup(s => s.Authenticate(It.IsAny <string>(), It.IsAny <string>()))
            .ThrowsAsync(new Exception("Mock exception"));

            var mockContextFactory = SetupContextFactory(mockQuery.Object);

            _sut = new TeacherUserService(mockContextFactory.Object);
            var userDto = new UserDto {
                Login = "******", Password = "******"
            };

            // ACT
            var actual = await _sut.AuthenticateAsync(userDto);

            //ASSERT
            Assert.Equal("Mock exception", actual.Error.Message);
        }