public async Task Then_The_Endpoint_Is_Called( string authToken, TestInnerApiConfiguration config) { //Arrange var azureClientCredentialHelper = new Mock <IAzureClientCredentialHelper>(); azureClientCredentialHelper.Setup(x => x.GetAccessTokenAsync(config.Identifier)).ReturnsAsync(authToken); config.Url = "https://test.local"; var configuration = config; var response = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(new List <string> { "string", "string" })), StatusCode = HttpStatusCode.Accepted }; var getTestRequest = new GetAllTestRequest(config.Url) { BaseUrl = config.Url }; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, getTestRequest.GetAllUrl); var client = new HttpClient(httpMessageHandler.Object); var clientFactory = new Mock <IHttpClientFactory>(); clientFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client); var hostingEnvironment = new Mock <IWebHostEnvironment>(); hostingEnvironment.Setup(x => x.EnvironmentName).Returns("Staging"); var apiClient = new ApiClient <TestInnerApiConfiguration>(clientFactory.Object, configuration, hostingEnvironment.Object, azureClientCredentialHelper.Object); //Act var actual = await apiClient.GetAll <string>(getTestRequest); Assert.IsAssignableFrom <List <string> >(actual); //Assert httpMessageHandler.Protected() .Verify <Task <HttpResponseMessage> >( "SendAsync", Times.Once(), ItExpr.Is <HttpRequestMessage>(c => c.Method.Equals(HttpMethod.Get) && c.RequestUri.AbsoluteUri.Equals(getTestRequest.GetAllUrl) && c.Headers.Authorization.Scheme.Equals("Bearer") && c.Headers.Authorization.Parameter.Equals(authToken)), ItExpr.IsAny <CancellationToken>() ); }
public async Task Then_The_Bearer_Token_Is_Not_Added_If_Local_And_Default_Version_If_Not_Specified( int id, TestInnerApiConfiguration config) { //Arrange config.Url = "https://test.local"; var configuration = config; var response = new HttpResponseMessage { Content = new StringContent(""), StatusCode = HttpStatusCode.Accepted }; var getTestRequest = new GetTestRequestNoVersion(config.Url, id) { BaseUrl = config.Url }; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, getTestRequest.GetUrl); var client = new HttpClient(httpMessageHandler.Object); var hostingEnvironment = new Mock <IWebHostEnvironment>(); var clientFactory = new Mock <IHttpClientFactory>(); clientFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client); hostingEnvironment.Setup(x => x.EnvironmentName).Returns("Development"); var actual = new ApiClient <TestInnerApiConfiguration>(clientFactory.Object, configuration, hostingEnvironment.Object, Mock.Of <IAzureClientCredentialHelper>()); //Act await actual.Get <string>(getTestRequest); //Assert httpMessageHandler.Protected() .Verify <Task <HttpResponseMessage> >( "SendAsync", Times.Once(), ItExpr.Is <HttpRequestMessage>(c => c.Method.Equals(HttpMethod.Get) && c.Headers.FirstOrDefault(h => h.Key.Equals("X-Version")).Value.FirstOrDefault() == "1.0" && c.RequestUri.AbsoluteUri.Equals(getTestRequest.GetUrl) && c.Headers.Authorization == null), ItExpr.IsAny <CancellationToken>() ); }
public async Task Then_Multiple_Calls_Do_Not_Result_In_Multiple_Versions_Added(string authToken, int id, TestInnerApiConfiguration config) { //Arrange var azureClientCredentialHelper = new Mock <IAzureClientCredentialHelper>(); azureClientCredentialHelper.Setup(x => x.GetAccessTokenAsync(config.Identifier)).ReturnsAsync(authToken); config.Url = "https://test.local"; var response = new HttpResponseMessage { Content = new StringContent(""), StatusCode = HttpStatusCode.Accepted }; var getTestRequest = new GetTestRequest(config.Url, id) { BaseUrl = config.Url }; var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, getTestRequest.GetUrl); var client = new HttpClient(httpMessageHandler.Object); var hostingEnvironment = new Mock <IWebHostEnvironment>(); var clientFactory = new Mock <IHttpClientFactory>(); clientFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client); hostingEnvironment.Setup(x => x.EnvironmentName).Returns("Staging"); var actual = new ApiClient <TestInnerApiConfiguration>(clientFactory.Object, config, hostingEnvironment.Object, azureClientCredentialHelper.Object); //Act await actual.Get <string>(getTestRequest); await actual.Get <string>(getTestRequest); //Assert httpMessageHandler.Protected() .Verify <Task <HttpResponseMessage> >( "SendAsync", Times.Exactly(2), ItExpr.Is <HttpRequestMessage>(c => c.Method.Equals(HttpMethod.Get) && c.RequestUri.AbsoluteUri.Equals(getTestRequest.GetUrl) && c.Headers.Authorization.Scheme.Equals("Bearer") && c.Headers.FirstOrDefault(h => h.Key.Equals("X-Version")).Value.Single() == "2.0" && c.Headers.Authorization.Parameter.Equals(authToken)), ItExpr.IsAny <CancellationToken>() ); }