public async Task ShouldHashRequest()
        {
            //arrange
            HashRequestModel model = new HashRequestModel {
                Login = "******", Password = "******"
            };


            var json = JsonConvert.SerializeObject(model);

            var byteArray = Encoding.ASCII.GetBytes(json);

            MemoryStream _memoryStream = new MemoryStream(byteArray);

            _memoryStream.Flush();
            _memoryStream.Position = 0;

            _httpRequest.Setup(x => x.Body).Returns(_memoryStream);

            //act
            var response = await HashFunction.Run(_httpRequest.Object, _logger.Object);

            //assert
            var result = Assert.IsType <OkObjectResult>(response);

            Assert.Equal(200, result.StatusCode);

            Assert.IsType <HashResponseModel>(result.Value);

            Assert.Equal("DB0E8B62C29CEAB7298679CB28E5D6E8", ((HashResponseModel)result.Value).hash_value);
        }
示例#2
0
        public async Task ShouldReturnHasValue()
        {
            //arrange
            _hashManager.Setup(u => u.HashAsync(It.IsAny <HashRequestModel>()))
            .Returns(() => Task.FromResult(new HashResponseModel
            {
                hash_value = "D4B767CBA7637E855F5278ACC53D434D",
            }));

            HashRequestModel model = new HashRequestModel {
                Login = "******", Password = "******"
            };

            //act
            var response = await _hashController.Hash(model);

            //assert
            var result = Assert.IsType <OkObjectResult>(response);

            Assert.Equal(200, result.StatusCode);

            Assert.IsType <HashResponseModel>(result.Value);

            Assert.Equal("D4B767CBA7637E855F5278ACC53D434D", (( HashResponseModel)result.Value).hash_value);
        }
示例#3
0
        public async Task <HashResponseModel> Hash(HashRequestModel model)
        {
            var         requestString = JsonConvert.SerializeObject(model);
            HttpContent httpContent   = new StringContent(requestString, Encoding.UTF8, "application/json");

            var result = await _httpClient.PostAsync("api/hash", httpContent);

            var response = JsonConvert.DeserializeObject <HashResponseModel>(await result.Content.ReadAsStringAsync());

            return(response);
        }
        public void ShouldFailRequestValidationWhenPasswordIsNotProvided()
        {
            //arrange
            HashRequestModel model = new HashRequestModel
            {
                Login    = "******",
                Password = ""
            };

            //act
            var success = _requestValidation.ValidateLoginRequest(model, out string message);

            //assert
            Assert.False(success, message);
        }
        public async Task ShouldPassRequestValidation()
        {
            //arrange
            HashRequestModel model = new HashRequestModel
            {
                Login    = "******",
                Password = "******"
            };

            //act
            var success = _requestValidation.ValidateLoginRequest(model, out string message);

            //assert
            Assert.True(success, message);
        }
示例#6
0
        public async Task <HashResponseModel> HashAsync(HashRequestModel model)
        {
            var success = _requestValidation.ValidateLoginRequest(model, out string message);

            if (success)
            {
                var response = await _funcService.Hash(model);

                return(response);
            }
            else
            {
                throw new ProcessException($"Invalid request: {message}");
            }
        }
示例#7
0
        public bool ValidateLoginRequest(HashRequestModel model, out string message)
        {
            bool success = false;

            if (string.IsNullOrEmpty(model.Login))
            {
                message = "Provide log";
            }
            else if (string.IsNullOrEmpty(model.Password))
            {
                message = "Provide password";
            }
            else
            {
                message = "Validation successful";
                success = true;
            }

            return(success);
        }
        public async Task ShouldReturnHashedValue()
        {
            //arrange
            HashRequestModel model = new HashRequestModel {
                Login = "******", Password = "******"
            };
            HashResponseModel responseModel = new HashResponseModel {
                hash_value = "otee"
            };

            var handlerMock  = new Mock <HttpMessageHandler>();
            var httpResponse = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(responseModel)),
            };

            handlerMock
            .Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(httpResponse);
            var httpClient = new HttpClient(handlerMock.Object);

            httpClient.BaseAddress = new Uri("http://localhost:7071");

            FunctionService service = new FunctionService(httpClient);

            //act
            var serviceResponse = await service.Hash(model);

            //assert
            Assert.NotNull(service);

            Assert.NotNull(serviceResponse.hash_value);
        }
示例#9
0
        public async Task ShouldHashRequest(HashRequestModel requestModel)
        {
            //arrange
            string validationMessage = "Validation Successful";

            _reqValidation.Setup(u => u.ValidateLoginRequest(requestModel, out validationMessage))
            .Returns(true);

            _funcService.Setup(u => u.Hash(It.IsAny <HashRequestModel>()))
            .Returns(() => Task.FromResult(responseModel));

            //act
            var response = await _hashManager.HashAsync(requestModel);

            //assert
            _reqValidation.Verify(u => u.ValidateLoginRequest(It.IsAny <HashRequestModel>(), out validationMessage), Times.Once);

            _funcService.Verify(u => u.Hash(It.IsAny <HashRequestModel>()), Times.Once);

            Assert.NotNull(response);

            Assert.NotNull(response.hash_value);
        }
示例#10
0
        public async Task ShouldThrowProcessException()
        {
            //arrange
            string validationMessage = "Provide Login";

            HashRequestModel requestModel = new HashRequestModel {
                Login = "", Password = "******"
            };

            _reqValidation.Setup(u => u.ValidateLoginRequest(requestModel, out validationMessage))
            .Returns(false);

            _funcService.Setup(u => u.Hash(It.IsAny <HashRequestModel>()))
            .Returns(() => Task.FromResult(responseModel));

            //act

            await Assert.ThrowsAsync <ProcessException>(() => _hashManager.HashAsync(requestModel));

            //assert
            _reqValidation.Verify(u => u.ValidateLoginRequest(It.IsAny <HashRequestModel>(), out validationMessage), Times.Once);

            _funcService.Verify(u => u.Hash(It.IsAny <HashRequestModel>()), Times.Never);
        }
        public async Task <IActionResult> Hash(HashRequestModel model)
        {
            var responseModel = await _hashManager.HashAsync(model);

            return(Ok(responseModel));
        }