public async Task Then_If_It_Not_Found_Default_Object_Is_Returned()
        {
            //Arrange
            var key            = "123-abc-567";
            var getTestRequest = new GetTestRequest();
            var config         = new OuterApiConfiguration {
                BaseUrl = "http://valid-url/", Key = key
            };
            var mockConfig = new Mock <IOptions <OuterApiConfiguration> >();

            mockConfig.Setup(x => x.Value).Returns(config);
            var response = new HttpResponseMessage
            {
                Content    = new StringContent(""),
                StatusCode = HttpStatusCode.NotFound
            };

            var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, $"{config.BaseUrl}{getTestRequest.GetUrl}", config.Key);
            var client             = new HttpClient(httpMessageHandler.Object);
            var apiClient          = new OuterApiClient(client, mockConfig.Object);

            //Act
            var result = await apiClient.Get <GetGeoPointResponse>(getTestRequest);

            // Assert
            result.Should().BeNull();
        }
        public async Task Then_The_Endpoint_Is_Called_With_Authentication_Header_And_Data_Returned()
        {
            //Arrange
            var key            = "123-abc-567";
            var getTestRequest = new GetTestRequest();
            var testObject     = new List <string>();
            var config         = new OuterApiConfiguration {
                BaseUrl = "http://valid-url/", Key = key
            };
            var mockConfig = new Mock <IOptions <OuterApiConfiguration> >();

            mockConfig.Setup(x => x.Value).Returns(config);

            var response = new HttpResponseMessage
            {
                Content    = new StringContent(JsonConvert.SerializeObject(testObject)),
                StatusCode = HttpStatusCode.Accepted
            };
            var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, $"{config.BaseUrl}{getTestRequest.GetUrl}", config.Key);
            var client             = new HttpClient(httpMessageHandler.Object);
            var apiClient          = new OuterApiClient(client, mockConfig.Object);

            //Act
            var actual = await apiClient.Get <List <string> >(getTestRequest);

            //Assert
            actual.Should().BeEquivalentTo(testObject);
        }
        public async Task Then_The_Endpoint_Is_Called_With_Authentication_Header_And_Data_Returned(
            List <string> testObject,
            OuterApiConfiguration config)
        {
            //Arrange
            var configMock = new Mock <IWebConfiguration>();

            config.BaseUrl = "https://test.local/";
            configMock.Setup(x => x.OuterApi).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);
            var client             = new HttpClient(httpMessageHandler.Object);
            var apiClient          = new OuterApiClient(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(
            OuterApiConfiguration config)
        {
            //Arrange
            var configMock = new Mock <IWebConfiguration>();

            config.BaseUrl = "https://test.local/";
            configMock.Setup(x => x.OuterApi).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);
            var client             = new HttpClient(httpMessageHandler.Object);
            var apiClient          = new OuterApiClient(client, configMock.Object);

            //Act Assert
            Assert.ThrowsAsync <HttpRequestException>(() => apiClient.Get <List <string> >(getTestRequest));
        }
        public void Then_If_It_Is_Not_Successful_An_Exception_Is_Thrown()
        {
            //Arrange
            var key            = "123-abc-567";
            var getTestRequest = new GetTestRequest();
            var config         = new OuterApiConfiguration {
                BaseUrl = "http://valid-url/", Key = key
            };
            var mockConfig = new Mock <IOptions <OuterApiConfiguration> >();

            mockConfig.Setup(x => x.Value).Returns(config);
            var response = new HttpResponseMessage
            {
                Content    = new StringContent(""),
                StatusCode = HttpStatusCode.BadRequest
            };

            var httpMessageHandler = MessageHandler.SetupMessageHandlerMock(response, $"{config.BaseUrl}{getTestRequest.GetUrl}", config.Key);
            var client             = new HttpClient(httpMessageHandler.Object);
            var apiClient          = new OuterApiClient(client, mockConfig.Object);

            //Act Assert
            Assert.ThrowsAsync <HttpRequestException>(() => apiClient.Get <List <string> >(getTestRequest));
        }
        public async Task Then_If_It_Is_Not_Found_Default_Is_Returned(
            OuterApiConfiguration config)
        {
            //Arrange
            var configMock = new Mock <IWebConfiguration>();

            config.BaseUrl = "https://test.local/";
            configMock.Setup(x => x.OuterApi).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);
            var client             = new HttpClient(httpMessageHandler.Object);
            var apiClient          = new OuterApiClient(client, configMock.Object);

            //Act Assert
            var actual = await apiClient.Get <List <string> >(getTestRequest);

            actual.Should().BeNull();
        }