11using System ;
2- using System . Collections . Generic ;
32using System . IO ;
43using System . IO . Compression ;
54using System . Net ;
65using System . Net . Http ;
76using System . Net . Http . Headers ;
87using System . Text ;
98using System . Text . Json ;
10- using System . Text . Json . Serialization ;
119using System . Threading ;
1210using System . Threading . Tasks ;
1311
12+ using Microsoft . Extensions . DependencyInjection ;
13+
1414using Xunit ;
15+ using Xunit . Abstractions ;
1516
1617namespace FluentRest . Tests ;
1718
18- public class FluentEchoTests
19+ public class FluentEchoTests : HostTestBase
1920{
21+ public FluentEchoTests ( ITestOutputHelper output , HostFixture fixture )
22+ : base ( output , fixture )
23+ {
24+ }
25+
2026 [ Fact ]
2127 public async Task EchoGet ( )
2228 {
@@ -29,7 +35,7 @@ public async Task EchoGet()
2935 ) ;
3036
3137 Assert . NotNull ( result ) ;
32- Assert . Equal ( "https://httpbin.org /get?page=1&size=10", result . Url ) ;
38+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /get?page=1&size=10", result . Url ) ;
3339 Assert . Equal ( "1" , result . QueryString [ "page" ] ) ;
3440 Assert . Equal ( "10" , result . QueryString [ "size" ] ) ;
3541 }
@@ -47,7 +53,7 @@ public async Task EchoGetBearer()
4753 ) ;
4854
4955 Assert . NotNull ( result ) ;
50- Assert . Equal ( "https://httpbin.org /get?page=1&size=10", result . Url ) ;
56+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /get?page=1&size=10", result . Url ) ;
5157 Assert . Equal ( "1" , result . QueryString [ "page" ] ) ;
5258 Assert . Equal ( "10" , result . QueryString [ "size" ] ) ;
5359
@@ -104,7 +110,7 @@ public async Task EchoGetAcceptMultiple()
104110 ) ;
105111
106112 Assert . NotNull ( result ) ;
107- Assert . Equal ( "https://httpbin.org /get?page=10", result . Url ) ;
113+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /get?page=10", result . Url ) ;
108114 Assert . Equal ( "text/xml, application/bson, application/json" , result . Headers [ HttpRequestHeaders . Accept ] ) ;
109115 Assert . Equal ( "testing header" , result . Headers [ "X-Blah" ] ) ;
110116 }
@@ -122,7 +128,7 @@ public async Task EchoPost()
122128 ) ;
123129
124130 Assert . NotNull ( result ) ;
125- Assert . Equal ( "https://httpbin.org /post?page=10", result . Url ) ;
131+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /post?page=10", result . Url ) ;
126132 Assert . Equal ( "Value" , result . Form [ "Test" ] ) ;
127133 Assert . Equal ( "value" , result . Form [ "key" ] ) ;
128134 }
@@ -145,7 +151,7 @@ public async Task EchoPostResponse()
145151 var result = await response . DeserializeAsync < EchoResult > ( ) ;
146152
147153 Assert . NotNull ( result ) ;
148- Assert . Equal ( "https://httpbin.org /post?page=10", result . Url ) ;
154+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /post?page=10", result . Url ) ;
149155 Assert . Equal ( "Value" , result . Form [ "Test" ] ) ;
150156 Assert . Equal ( "value" , result . Form [ "key" ] ) ;
151157 }
@@ -163,7 +169,7 @@ public async Task EchoPatch()
163169
164170 Assert . NotNull ( response ) ;
165171
166- Assert . Equal ( "https://httpbin.org /patch?page=10", response . Url ) ;
172+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /patch?page=10", response . Url ) ;
167173 Assert . Equal ( "Value" , response . Form [ "Test" ] ) ;
168174 }
169175
@@ -184,7 +190,7 @@ public async Task EchoPatchResponse()
184190 var result = await response . DeserializeAsync < EchoResult > ( ) ;
185191
186192 Assert . NotNull ( result ) ;
187- Assert . Equal ( "https://httpbin.org /patch?page=10", result . Url ) ;
193+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /patch?page=10", result . Url ) ;
188194 Assert . Equal ( "Value" , result . Form [ "Test" ] ) ;
189195 }
190196
@@ -201,7 +207,7 @@ public async Task EchoPut()
201207 ) ;
202208
203209 Assert . NotNull ( result ) ;
204- Assert . Equal ( "https://httpbin.org /put?page=10", result . Url ) ;
210+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /put?page=10", result . Url ) ;
205211 Assert . Equal ( "Value" , result . Form [ "Test" ] ) ;
206212 Assert . Equal ( "value" , result . Form [ "key" ] ) ;
207213 }
@@ -238,7 +244,7 @@ public async Task EchoPostData()
238244 Assert . True ( result . Headers . ContainsKey ( "Content-Length" ) ) ;
239245 int contentLength = Int32 . Parse ( result . Headers [ "Content-Length" ] ) ;
240246 Assert . True ( contentLength > 0 ) ;
241- Assert . Equal ( "https://httpbin.org /post?page=10", result . Url ) ;
247+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /post?page=10", result . Url ) ;
242248 Assert . Equal ( "application/json; charset=utf-8" , result . Headers [ HttpRequestHeaders . ContentType ] ) ;
243249 Assert . True ( result . Headers . ContainsKey ( "Content-Type" ) ) ;
244250 var contentType = result . Headers [ "Content-Type" ] ;
@@ -359,7 +365,7 @@ public async Task EchoPostDataCustomCompressedContent()
359365 Assert . True ( result . Headers . ContainsKey ( "Content-Length" ) ) ;
360366 int contentLength = Int32 . Parse ( result . Headers [ "Content-Length" ] ) ;
361367 Assert . True ( contentLength > 0 ) ;
362- Assert . Equal ( "https://httpbin.org /post?page=10", result . Url ) ;
368+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /post?page=10", result . Url ) ;
363369 Assert . Equal ( "application/json; charset=utf-8" , result . Headers [ HttpRequestHeaders . ContentType ] ) ;
364370 Assert . Equal ( "gzip" , result . Headers [ HttpRequestHeaders . ContentEncoding ] ) ;
365371 }
@@ -416,7 +422,7 @@ public async Task DefaultPost()
416422 ) ;
417423
418424 Assert . NotNull ( result ) ;
419- Assert . Equal ( "https://httpbin.org /post?page=10", result . Url ) ;
425+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /post?page=10", result . Url ) ;
420426 Assert . Equal ( "Value" , result . Form [ "Test" ] ) ;
421427 Assert . Equal ( "value" , result . Form [ "key" ] ) ;
422428 Assert . Equal ( "Token abc-def-123" , result . Headers [ "Authorization" ] ) ;
@@ -434,15 +440,16 @@ public async Task SendRequest()
434440
435441 Assert . NotNull ( result ) ;
436442 Assert . True ( result . Headers . ContainsKey ( "Content-Length" ) ) ;
437- Assert . Equal ( "https://httpbin.org /post", result . Url ) ;
443+ Assert . Equal ( $ " { Fixture . HttpBinUrl } /post", result . Url ) ;
438444 }
439445
440- private static IFluentClient CreateClient ( )
446+ private IFluentClient CreateClient ( )
441447 {
442- var httpClient = new HttpClient ( ) ;
443- httpClient . BaseAddress = new Uri ( "https://httpbin.org/" , UriKind . Absolute ) ;
448+ var httpClientFactory = Services . GetService < IHttpClientFactory > ( ) ;
449+ var httpClient = httpClientFactory . CreateClient ( "HttpBin" ) ;
444450
445- var fluentClient = new FluentClient ( httpClient ) ;
451+ var serializer = Services . GetService < IContentSerializer > ( ) ;
452+ var fluentClient = new FluentClient ( httpClient , serializer ) ;
446453
447454 return fluentClient ;
448455 }
0 commit comments