public async Task Then_The_Endpoint_Is_Called_With_Authentication_Header_And_Data_Returned( List <string> testObject, EmployerDemandApi config) { //Arrange config.BaseUrl = $"https://{config.BaseUrl}/"; var configMock = new Mock <IOptions <EmployerDemandApi> >(); configMock.Setup(x => x.Value).Returns(config); var getTestRequest = new GetTestRequest(); var response = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(testObject)), StatusCode = HttpStatusCode.Accepted }; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, config.BaseUrl + getTestRequest.GetUrl, config.Key, HttpMethod.Get); var client = new HttpClient(httpMessageHandler.Object); var apiClient = new ApiClient(client, configMock.Object); //Act var actual = await apiClient.Get <List <string> >(getTestRequest); //Assert actual.Should().BeEquivalentTo(testObject); }
public void Then_If_It_Is_Not_Successful_An_Exception_Is_Thrown( PostData postContent, int id, EmployerDemandApi config) { //Arrange config.BaseUrl = $"https://{config.BaseUrl}/"; var configMock = new Mock <IOptions <EmployerDemandApi> >(); configMock.Setup(x => x.Value).Returns(config); var response = new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest }; var postTestRequest = new PostTestRequest(id) { Data = postContent }; var expectedUrl = config.BaseUrl + postTestRequest.PostUrl; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, expectedUrl, config.Key, HttpMethod.Post); var client = new HttpClient(httpMessageHandler.Object); var apiClient = new ApiClient(client, configMock.Object); //Act Assert Assert.ThrowsAsync <HttpRequestException>(() => apiClient.Post <Guid, PostData>(postTestRequest)); }
public async Task Then_The_Endpoint_Is_Called( Guid responseId, PostData postContent, int id, EmployerDemandApi config) { //Arrange config.BaseUrl = $"https://{config.BaseUrl}/"; var configMock = new Mock <IOptions <EmployerDemandApi> >(); configMock.Setup(x => x.Value).Returns(config); var response = new HttpResponseMessage { Content = new StringContent($"'{responseId}'"), StatusCode = HttpStatusCode.Accepted }; var postTestRequest = new PostTestRequest(id) { Data = postContent }; var expectedUrl = config.BaseUrl + postTestRequest.PostUrl; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, expectedUrl, config.Key, HttpMethod.Post); var client = new HttpClient(httpMessageHandler.Object); var apiClient = new ApiClient(client, configMock.Object); //Act var actual = await apiClient.Post <string, PostData>(postTestRequest); //Assert httpMessageHandler.Protected() .Verify <Task <HttpResponseMessage> >( "SendAsync", Times.Once(), ItExpr.Is <HttpRequestMessage>(c => c.Method.Equals(HttpMethod.Post) && c.RequestUri.AbsoluteUri.Contains(postTestRequest.PostUrl)), ItExpr.IsAny <CancellationToken>() ); Guid.Parse(actual).Should().Be(responseId); }
public void Then_If_It_Is_Not_Successful_An_Exception_Is_Thrown( EmployerDemandApi config) { //Arrange config.BaseUrl = $"https://{config.BaseUrl}/"; var configMock = new Mock <IOptions <EmployerDemandApi> >(); configMock.Setup(x => x.Value).Returns(config); var getTestRequest = new GetTestRequest(); var response = new HttpResponseMessage { Content = new StringContent(""), StatusCode = HttpStatusCode.BadRequest }; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, config.BaseUrl + getTestRequest.GetUrl, config.Key, HttpMethod.Get); var client = new HttpClient(httpMessageHandler.Object); var apiClient = new ApiClient(client, configMock.Object); //Act Assert Assert.ThrowsAsync <HttpRequestException>(() => apiClient.Get <List <string> >(getTestRequest)); }
public async Task Then_If_It_Is_Not_Found_Default_Is_Returned( EmployerDemandApi config) { //Arrange config.BaseUrl = $"https://{config.BaseUrl}/"; var configMock = new Mock <IOptions <EmployerDemandApi> >(); configMock.Setup(x => x.Value).Returns(config); var getTestRequest = new GetTestRequest(); var response = new HttpResponseMessage { Content = new StringContent(""), StatusCode = HttpStatusCode.NotFound }; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, config.BaseUrl + getTestRequest.GetUrl, config.Key, HttpMethod.Get); var client = new HttpClient(httpMessageHandler.Object); var apiClient = new ApiClient(client, configMock.Object); //Act Assert var actual = await apiClient.Get <List <string> >(getTestRequest); actual.Should().BeNull(); }
public ApiClient(HttpClient httpClient, IOptions <EmployerDemandApi> config) { _httpClient = httpClient; _config = config.Value; _httpClient.BaseAddress = new Uri(_config.BaseUrl); }