public async void PostTest() { var loginContract = new LoginContract { Login = "******", Password = "******" }; var loginHashContract = new LoginHashContract { HashValue = "hashhashhashhash" }; var mockFactory = new Mock <IHttpClientFactory>(); var handlerMock = new Mock <HttpMessageHandler>(); var response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(loginHashContract), Encoding.UTF8, "application/json"), }; handlerMock .Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(response); var httpClient = new HttpClient(handlerMock.Object); mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(httpClient); Settings app = new Settings() { ApiUrls = new ApiUrls() { CalculateMD5 = "http://test" } }; var mockOptions = new Mock <IOptions <Settings> >(); // We need to set the Value of IOptions to be the SampleOptions Class mockOptions.Setup(ap => ap.Value).Returns(app); var hashController = new HashController(mockFactory.Object, mockOptions.Object); var result = await hashController.PostAsync(loginContract); var actual = JsonConvert.SerializeObject(((OkObjectResult)result).Value); var expected = JsonConvert.SerializeObject(loginHashContract); Assert.Equal(expected, actual); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req) { //log.LogInformation("Caclulating MD5"); string loginContractJson = await new StreamReader(req.Body).ReadToEndAsync(); //LoginContract loginContract = JsonConvert.DeserializeObject<LoginContract>(loginContractJson); var hash = GetMD5Hash(loginContractJson); LoginHashContract loginHashContract = new LoginHashContract { HashValue = hash }; return(new OkObjectResult(loginHashContract)); }