示例#1
0
 /// <summary>
 /// Add a simple get request stub response
 /// </summary>
 /// <param name="relativePath"></param>
 /// <param name="expectedOutput"></param>
 public void AddGetRequest(string relativePath, string expectedOutput)
 {
     _stub.Get(
         relativePath,
         (req, args) => {
         return(expectedOutput);
     }
         )
     .AddDefaultHeaders();
 }
        public async Task IfHeader_TwoHeaderConditionsAndBothHeadersPresent_ResponseReturned()
        {
            using var sut = new ApiStub();

            sut.Get(
                "/testget",
                (req, args) => "testresponse")
            .IfHeader("HeaderTest1", "headerValue1")
            .IfHeader("HeaderTest2", "headerValue2");

            sut.Start();

            var requestMessage = new HttpRequestMessage(HttpMethod.Get, new UriBuilder(new Uri(sut.Address))
            {
                Path = "/testget"
            }.Uri);

            requestMessage.Headers.Add("HeaderTest1", "headerValue1");
            requestMessage.Headers.Add("HeaderTest2", "headerValue2");

            var result = await httpClient.SendAsync(requestMessage);

            var resultString = await result.Content.ReadAsStringAsync();

            Assert.Equal("testresponse", resultString);
        }
        public void NetatmoUnitOutdoortemperature()
        {
            string responseText = "{\"body\":[{\"beg_time\":1481372100,\"value\":[[0.7]]}],\"status\":\"ok\",\"time_exec\":0.034345865249634,\"time_server\":1481371970}";


            ApiStub apiNetatmoStub = new ApiStub();

            apiNetatmoStub.Get(
                "/api/getmeasure",
                (request, args) =>
            {
                return(responseText);
            }
                );

            apiNetatmoStub.Start();

            AppKeyConfig configs = new AppKeyConfig();

            configs.NetatmoHost = apiNetatmoStub.Address;

            string actualTemp = netatmoUnit.outDoorTemperature(configs);

            Assert.Equal("0.7", actualTemp);
        }
 public void ResponseBody_NullPassed_ArgumentNullException()
 {
     using (var sut = new ApiStub())
     {
         Assert.Throws <ArgumentNullException>(() => sut.Get().Response(null));
     }
 }
示例#5
0
        private ApiStub StartStub()
        {
            var postcodeApiStub = new ApiStub();

            postcodeApiStub.Get(
                "/postcodes/{postcode}",
                (request, args) =>
            {
                if (args.Route.postcode == "postcodeOk")
                {
                    return("{ \"status\": 200, \"result\": { \"admin_county\": \"CountyName\" } }");
                }

                if (args.Route.postcode == "postcodeNotFound")
                {
                    return("{ \"status\": 404 }");
                }

                return("{ \"status\": 500 }");
            });

            postcodeApiStub.Start();

            return(postcodeApiStub);
        }
        public async Task Headers_HeadersProviderSet_HeaderReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .Headers((req, args) => args.Query.testquery == "Success"
                    ? new[]
        public void NetatmoUnitLoginSuccessFul()
        {
            string  responseText   = "{ \"access_token\":\"544cf4071c7759831d94cdf9|fcb30814afbffd0e39381e74fe38a59a\",\"refresh_token\":\"544cf4071c7759831d94cdf9|2b2c270c1208e8f67d3bd3891e395e1a\",\"scope\":[\"read_station\"],\"expires_in\":10800,\"expire_in\":10800}";
            string  deviceResponse = netatmoData;
            ApiStub apiNetatmoStub = new ApiStub();

            apiNetatmoStub.Post(
                "/oauth2/token",
                (request, args) =>
            {
                return(responseText);
            }
                );
            apiNetatmoStub.Get(
                "/api/devicelist",
                (request, response) =>
            {
                return(deviceResponse);
            }
                );

            apiNetatmoStub.Start();

            AppKeyConfig configs = new AppKeyConfig();

            configs.NetatmoHost = apiNetatmoStub.Address;

            netatmoUnit.init(configs);
        }
        public void ResponseBody_CalledTwice_InvalidOperationException()
        {
            using var sut = new ApiStub();

            Assert.Throws <InvalidOperationException>(
                () => sut.Get().Response((req, args) => "1").Response((req, args) => "2"));
        }
        public void NetatmoUnitIndoortemperature()
        {
            string responseText = "{\"body\":[{\"beg_time\":1481372100,\"value\":[[22.1]]}],\"status\":\"ok\",\"time_exec\":0.027220010757446,\"time_server\":1481371840}";


            ApiStub apiNetatmoStub = new ApiStub();

            apiNetatmoStub.Get(
                "/api/getmeasure",
                (request, args) =>
            {
                return(responseText);
            }
                );

            apiNetatmoStub.Start();

            AppKeyConfig configs = new AppKeyConfig();

            configs.NetatmoHost = apiNetatmoStub.Address;

            string actualTemp = netatmoUnit.inDoorTemperature(configs);

            Assert.Equal("22.1", actualTemp);
        }
        public void NetatmoUnitCurrentReading()
        {
            string responseText = "{ \"access_token\":\"544cf4071c7759831d94cdf9|fcb30814afbffd0e39381e74fe38a59a\",\"refresh_token\":\"544cf4071c7759831d94cdf9|2b2c270c1208e8f67d3bd3891e395e1a\",\"scope\":[\"read_station\"],\"expires_in\":10800,\"expire_in\":10800}";
            //string deviceResponse = File.ReadAllText(fileDir + "netatmodeviceresponse.json");
            string  deviceResponse = netatmoData;
            ApiStub apiNetatmoStub = new ApiStub();

            apiNetatmoStub.Post(
                "/oauth2/token",
                (request, args) =>
            {
                return(responseText);
            }
                );
            apiNetatmoStub.Get(
                "/api/devicelist",
                (request, response) =>
            {
                return(deviceResponse);
            }
                );
            string responseReading = "{\"body\":[{\"beg_time\":1481372100,\"value\":[[0.7]]}],\"status\":\"ok\",\"time_exec\":0.034345865249634,\"time_server\":1481371970}";


            apiNetatmoStub.Get(
                "/api/getmeasure",
                (request, args) =>
            {
                return(responseReading);
            }
                );

            apiNetatmoStub.Start();

            AppKeyConfig configs = new AppKeyConfig();

            configs.NetatmoHost = apiNetatmoStub.Address;

            ClimateItem actualReading = netatmoUnit.CurrentReading(configs);

            Assert.NotNull(actualReading);
            Assert.Equal("0.7", actualReading.IndoorValue);
            Assert.Equal("0.7", actualReading.OutdoorValue);
            Assert.NotNull(actualReading.TimeStamp);

            Assert.True(DateTime.Now >= actualReading.TimeStamp);
        }
示例#11
0
        public async Task MultipleSetups_AllMatch_TheFirstOneReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse1");
            sut.Get("/testget", (req, args) => "testresponse2");
            sut.Get("/testget", (req, args) => "testresponse3");

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            Assert.Equal(HttpStatusCode.OK, result.StatusCode);

            var resultString = await result.Content.ReadAsStringAsync();

            Assert.Equal("testresponse1", resultString);
        }
示例#12
0
        public void Returns_Values_From_Default_Json_If_Specific_Json_Is_Invalid()
        {
            using (var apiStub = new ApiStub())
            {
                apiStub.Get(
                    "/Group-Command.json",
                    (req, args) => @"This is { not a valid json """);

                apiStub.Get(
                    "/Default.json",
                    (req, args) => @"{
""HystrixCommandEnabled"": true,
""CommandTimeoutInMilliseconds"":50000,
""CircuitBreakerForcedOpen"":false,
""CircuitBreakerForcedClosed"":false,
""CircuitBreakerErrorThresholdPercentage"":50,
""CircuitBreakerSleepWindowInMilliseconds"":5000,
""CircuitBreakerRequestVolumeThreshold"":20,
""MetricsHealthSnapshotIntervalInMilliseconds"":500,
""MetricsRollingStatisticalWindowInMilliseconds"":10000,
""MetricsRollingStatisticalWindowBuckets"":10,
""MetricsRollingPercentileEnabled"":true,
""MetricsRollingPercentileWindowInMilliseconds"":60000,
""MetricsRollingPercentileWindowBuckets"":6,
""MetricsRollingPercentileBucketSize"":100
}");

                apiStub.Start();

                var options = new HystrixJsonConfigurationSourceOptions
                {
                    BaseLocation    = apiStub.Address,
                    LocationPattern = "{0}-{1}.json"
                };

                var commandIdentifier    = new HystrixCommandIdentifier("Group", "Command");
                var configurationService = new HystrixJsonConfigConfigurationService(commandIdentifier, options);

                // Act
                var value = configurationService.GetCommandTimeoutInMilliseconds();

                Assert.Equal(50000, value);
            }
        }
        public void NetatmoUnitCurrentReadingDataCouldNoBeRead()
        {
            string responseText = "{ \"access_token\":\"544cf4071c7759831d94cdf9|fcb30814afbffd0e39381e74fe38a59a\",\"refresh_token\":\"544cf4071c7759831d94cdf9|2b2c270c1208e8f67d3bd3891e395e1a\",\"scope\":[\"read_station\"],\"expires_in\":10800,\"expire_in\":10800}";
            //string deviceResponse = File.ReadAllText(fileDir + "netatmodeviceresponse.json");
            string  deviceResponse = netatmoData;
            ApiStub apiNetatmoStub = new ApiStub();

            apiNetatmoStub.Post(
                "/oauth2/token",
                (request, args) =>
            {
                return(responseText);
            }
                );
            apiNetatmoStub.Get(
                "/api/devicelist",
                (request, response) =>
            {
                return(deviceResponse);
            }
                );
            string responseReading = null;


            apiNetatmoStub.Get(
                "/api/getmeasure",
                (request, args) =>
            {
                return(responseReading);
            }
                );

            apiNetatmoStub.Start();

            AppKeyConfig configs = new AppKeyConfig();

            configs.NetatmoHost = apiNetatmoStub.Address;

            ClimateItem actualReading = netatmoUnit.CurrentReading(configs);

            Assert.Null(actualReading);
        }
示例#14
0
        public async Task Route_RouteIncludesNotMatchingQuery_NotFoundReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget?foo=bar", (req, args) => "testresponse");

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget", Query = "?foo=qux" }.Uri);

            Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);
        }
示例#15
0
            public async Task Get_CalledDifferentMethod_NotFoundReturned()
            {
                using var sut = new ApiStub();

                sut.Get("/testget", (req, args) => "testresponse");

                sut.Start();

                var result = await httpClient.DeleteAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

                Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);
            }
        public async Task StatusCode_StatusCodeSet_StatusCodeReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .StatusCode(StatusCodes.Status206PartialContent);

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            Assert.Equal(HttpStatusCode.PartialContent, result.StatusCode);
        }
示例#17
0
        public async Task IfContentType_ContentTypeDifferent_NotFoundReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .IfContentType("custom/stubbery");

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);
        }
示例#18
0
        public async Task Route_RouteDifferent_NotFoundReturned()
        {
            using (var sut = new ApiStub())
            {
                sut.Get("/testget", (req, args) => "testresponse");

                sut.Start();

                var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget2" }.Uri);

                Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);
            }
        }
示例#19
0
        public async Task IfHeader_OneHeaderConditionAndHeaderNotPresent_NotFoundReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .IfHeader("HeaderTest", "headerValue");

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);
        }
        public async Task Headers_HeadersAdded_HeadersReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .Headers(("Header1", "HeaderValue1"), ("Header2", "HeaderValue2"));

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            Assert.Equal("HeaderValue1", result.Headers.GetValues("Header1").First());
            Assert.Equal("HeaderValue2", result.Headers.GetValues("Header2").First());
        }
        public async Task ResponseBody_BodySet_BodyReturned_StringResponse()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse");

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            var resultString = await result.Content.ReadAsStringAsync();

            Assert.Equal("testresponse", resultString);
        }
示例#22
0
        public async Task Route_RouteIncludesMatchingQuery_ResultReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget?foo=bar", (req, args) => "testresponse");

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget", Query = "?foo=bar" }.Uri);

            var resultString = await result.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.OK, result.StatusCode);
            Assert.Equal("testresponse", resultString);
        }
示例#23
0
            public async Task Get_CallsStubWithCustomPort_WhenCustomPortIsSet()
            {
                using var apiStub = new ApiStub();

                apiStub.Get("/testget", (req, args) => "testresponse");
                apiStub.Port = 1020;
                apiStub.Start();

                var result = await httpClient.GetAsync(new UriBuilder(new Uri(apiStub.Address)) { Path = "/testget" }.Uri);

                Assert.Equal(HttpStatusCode.OK, result.StatusCode);

                var resultString = await result.Content.ReadAsStringAsync();

                Assert.Equal("testresponse", resultString);
            }
示例#24
0
            public async Task Get_SetupAfterStart_Works()
            {
                using var sut = new ApiStub();

                sut.Start();

                sut.Get("/testget", (req, args) => "testresponse");

                var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

                Assert.Equal(HttpStatusCode.OK, result.StatusCode);

                var resultString = await result.Content.ReadAsStringAsync();

                Assert.Equal("testresponse", resultString);
            }
示例#25
0
        public async Task When_Get_Date_1Feb2017_Return_Selling_35_3182000()
        {
            using (var stub = new ApiStub())
            {
                stub.Get(
                    "/api/bot/exchange_rate/daily_average/2017-02-01/2017-02-01/USD",
                    (req, args) => "{\"result\":{\"success\":\"true\",\"api\":\"Daily Weighted-average Interbank Exchange Rate - THB  USD\",\"timestamp\":\"2018-02-15 12:18:23\",\"data\":{\"data_header\":{\"report_name_eng\":\"Rates of Exchange of Commercial Banks in Bangkok Metropolis (2002-present)\",\"report_name_th\":\"\u0E2D\u0E31\u0E15\u0E23\u0E32\u0E41\u0E25\u0E01\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22\u0E02\u0E2D\u0E07\u0E18\u0E19\u0E32\u0E04\u0E32\u0E23\u0E1E\u0E32\u0E13\u0E34\u0E0A\u0E22\u0E4C\u0E43\u0E19\u0E01\u0E23\u0E38\u0E07\u0E40\u0E17\u0E1E\u0E21\u0E2B\u0E32\u0E19\u0E04\u0E23 (2545-\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19)\",\"report_uoq_name_eng\":\"(Unit : Baht 1 Unit of Foreign Currency)\",\"report_uoq_name_th\":\"(\u0E2B\u0E19\u0E48\u0E27\u0E22 : \u0E1A\u0E32\u0E17 \u0E15\u0E48\u0E2D 1 \u0E2B\u0E19\u0E48\u0E27\u0E22\u0E40\u0E07\u0E34\u0E19\u0E15\u0E23\u0E32\u0E15\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28)\",\"report_source_of_data\":[{\"source_of_data_eng\":\"Bank of Thailand\",\"source_of_data_th\":\"\u0E18\u0E19\u0E32\u0E04\u0E32\u0E23\u0E41\u0E2B\u0E48\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28\u0E44\u0E17\u0E22\"}],\"report_remark\":[{\"report_remark_eng\":\"Since Nov 16, 2015 the data regarding Buying Transfer Rate of PKR has been changed to Buying Rate using Foreign Exchange Rates (THOMSON REUTERS) with Bangkok Market Crossing.\",\"report_remark_th\":\"\u0E15\u0E31\u0E49\u0E07\u0E41\u0E15\u0E48\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48 16 \u0E1E.\u0E22. 2558 \u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E43\u0E19\u0E2D\u0E31\u0E15\u0E23\u0E32\u0E0B\u0E37\u0E49\u0E2D\u0E40\u0E07\u0E34\u0E19\u0E42\u0E2D\u0E19\u0E02\u0E2D\u0E07\u0E2A\u0E01\u0E38\u0E25 PKR \u0E44\u0E14\u0E49\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E2D\u0E31\u0E15\u0E23\u0E32\u0E0B\u0E37\u0E49\u0E2D\u0E17\u0E35\u0E48\u0E43\u0E0A\u0E49\u0E2D\u0E31\u0E15\u0E23\u0E32\u0E43\u0E19\u0E15\u0E25\u0E32\u0E14\u0E15\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (\u0E17\u0E2D\u0E21\u0E2A\u0E31\u0E19\u0E23\u0E2D\u0E22\u0E40\u0E15\u0E2D\u0E23\u0E4C) \u0E04\u0E33\u0E19\u0E27\u0E13\u0E1C\u0E48\u0E32\u0E19\u0E2D\u0E31\u0E15\u0E23\u0E32\u0E0B\u0E37\u0E49\u0E2D\u0E02\u0E32\u0E22\u0E40\u0E07\u0E34\u0E19\u0E14\u0E2D\u0E25\u0E25\u0E32\u0E23\u0E4C \u0E2A\u0E23\u0E2D. \u0E43\u0E19\u0E15\u0E25\u0E32\u0E14\u0E01\u0E23\u0E38\u0E07\u0E40\u0E17\u0E1E\u0E2F\"}],\"last_updated\":\"2018-02-14\"},\"data_detail\":[{\"period\":\"2017-02-01\",\"currency_id\":\"USD\",\"currency_name_th\":\"\u0E2A\u0E2B\u0E23\u0E31\u0E10\u0E2D\u0E40\u0E21\u0E23\u0E34\u0E01\u0E32 : \u0E14\u0E2D\u0E25\u0E25\u0E32\u0E23\u0E4C (USD)\",\"currency_name_eng\":\"USA : DOLLAR (USD) \",\"buying_sight\":\"34.8938000\",\"buying_transfer\":\"34.9785000\",\"selling\":\"35.3182000\",\"mid_rate\":\"35.1484000\"}]}}}");

                stub.Start();

                var response = await httpClient.GetAsync(new UriBuilder(new Uri(stub.Address)) { Path = "/api/bot/exchange_rate/daily_average/2017-02-01/2017-02-01/USD" }.Uri);

                RootObject repositories = JsonConvert.DeserializeObject <RootObject>(response.Content.ReadAsStringAsync().Result);

                Assert.Equal("35.3182000", repositories.result.data.data_detail[0].selling);
            }
        }
        public async Task StatusCode_StatusCodeProviderSet_StatusCodeReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .StatusCode((req, args) => args.Query.testquery == "Success" ? StatusCodes.Status200OK : StatusCodes.Status500InternalServerError);

            sut.Start();

            var resultSuccess = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget", Query = "?testquery=Success" }.Uri);

            Assert.Equal(HttpStatusCode.OK, resultSuccess.StatusCode);

            var resultFailure = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget", Query = "?testquery=Failure" }.Uri);

            Assert.Equal(HttpStatusCode.InternalServerError, resultFailure.StatusCode);
        }
        private ApiStub StartStub()
        {
            var userApiStub = new ApiStub();

            userApiStub.Get(
                "/api/users/{id}",
                (request, args) =>
            {
                if (args.Route.id == "2")
                {
                    return("{ \"status\": 200, \"result\": { \"im\": \"mocked\" } }");
                }

                return("{ \"status\": 500 }");
            });
            userApiStub.Start();
            return(userApiStub);
        }
        public async Task ResponseBody_BodySet_BodyReturned_ObjectResponse()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => new { TestValue = 234, SubObject = new { Value = "Person" } });

            sut.Start();

            var result = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            var resultString = await result.Content.ReadAsStringAsync();

            var resultObject = JsonConvert.DeserializeObject <JToken>(resultString);

            Assert.NotNull(resultObject);
            Assert.Equal(234, resultObject["TestValue"]);
            Assert.Equal("Person", resultObject["SubObject"]["Value"]);
        }
示例#29
0
        public async Task Get_RouteParameterWithDefaultValue_DefaultValueReturned()
        {
            using var sut = new ApiStub();

            sut.Get(
                "/testget/{arg:string=apple}",
                (req, args) => $"testresponse arg: {args.Route.arg}");

            sut.Start();

            var result = await httpClient.GetAsync(
                new UriBuilder(new Uri(sut.Address)) { Path = "/testget" }.Uri);

            Assert.Equal(HttpStatusCode.OK, result.StatusCode);

            var resultString = await result.Content.ReadAsStringAsync();

            Assert.Equal("testresponse arg: apple", resultString);
        }
        public async Task Header_HeaderProviderSet_HeaderReturned()
        {
            using var sut = new ApiStub();

            sut.Get("/testget", (req, args) => "testresponse")
            .Header((req, args) => args.Query.testquery == "Success"
                    ? ("HeaderSuccess", "HeaderValueSuccess")
                    : ("HeaderFailure", "HeaderValueFailure"));

            sut.Start();

            var resultSuccess = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget", Query = "?testquery=Success" }.Uri);

            Assert.Equal("HeaderValueSuccess", resultSuccess.Headers.GetValues("HeaderSuccess").First());

            var resultFailure = await httpClient.GetAsync(new UriBuilder(new Uri(sut.Address)) { Path = "/testget", Query = "?testquery=Failure" }.Uri);

            Assert.Equal("HeaderValueFailure", resultFailure.Headers.GetValues("HeaderFailure").First());
        }