1
1
using System . Net ;
2
2
using RestSharp . IntegrationTests . Fixtures ;
3
- using RestSharp . Tests . Shared . Extensions ;
4
3
using RestSharp . Tests . Shared . Fixtures ;
5
4
6
5
namespace RestSharp . IntegrationTests ;
7
6
8
- public class AsyncTests : IAsyncLifetime {
7
+ [ Collection ( nameof ( TestServerCollection ) ) ]
8
+ public class AsyncTests {
9
9
readonly ITestOutputHelper _output ;
10
- readonly HttpServer _server ;
10
+ readonly RestClient _client ;
11
11
12
- public AsyncTests ( ITestOutputHelper output ) {
13
- _output = output ;
14
- _server = new HttpServer ( output ) ;
15
- }
16
-
17
- class ResponseHandler {
18
- void error ( HttpListenerContext context ) {
19
- context . Response . StatusCode = 400 ;
20
- context . Response . Headers . Add ( KnownHeaders . ContentType , "application/xml" ) ;
21
-
22
- context . Response . OutputStream . WriteStringUtf8 (
23
- @"<?xml version=""1.0"" encoding=""utf-8"" ?>
24
- <Response>
25
- <Error>
26
- <Message>Not found!</Message>
27
- </Error>
28
- </Response>"
29
- ) ;
30
- }
31
-
32
- void success ( HttpListenerContext context )
33
- => context . Response . OutputStream . WriteStringUtf8 (
34
- @"<?xml version=""1.0"" encoding=""utf-8"" ?>
35
- <Response>
36
- <Success>
37
- <Message>Works!</Message>
38
- </Success>
39
- </Response>"
40
- ) ;
41
-
42
- void timeout ( HttpListenerContext context ) => Thread . Sleep ( 1000 ) ;
12
+ public AsyncTests ( TestServerFixture fixture , ITestOutputHelper output ) {
13
+ _output = output ;
14
+ _client = new RestClient ( fixture . Server . Url ) ;
43
15
}
44
16
45
17
class Response {
@@ -50,22 +22,20 @@ class Response {
50
22
public async Task Can_Handle_Exception_Thrown_By_OnBeforeDeserialization_Handler ( ) {
51
23
const string exceptionMessage = "Thrown from OnBeforeDeserialization" ;
52
24
53
- var client = new RestClient ( _server . Url ) ;
54
25
var request = new RestRequest ( "success" ) ;
55
26
56
27
request . OnBeforeDeserialization += r => throw new Exception ( exceptionMessage ) ;
57
28
58
- var response = await client . ExecuteAsync < Response > ( request ) ;
29
+ var response = await _client . ExecuteAsync < Response > ( request ) ;
59
30
60
31
Assert . Equal ( exceptionMessage , response . ErrorMessage ) ;
61
32
Assert . Equal ( ResponseStatus . Error , response . ResponseStatus ) ;
62
33
}
63
34
64
35
[ Fact ]
65
36
public async Task Can_Perform_ExecuteGetAsync_With_Response_Type ( ) {
66
- var client = new RestClient ( _server . Url ) ;
67
37
var request = new RestRequest ( "success" ) ;
68
- var response = await client . ExecuteAsync < Response > ( request ) ;
38
+ var response = await _client . ExecuteAsync < Response > ( request ) ;
69
39
70
40
response . StatusCode . Should ( ) . Be ( 200 ) ;
71
41
response . Data ! . Message . Should ( ) . Be ( "Works!" ) ;
@@ -75,61 +45,50 @@ public async Task Can_Perform_ExecuteGetAsync_With_Response_Type() {
75
45
public async Task Can_Perform_GET_Async ( ) {
76
46
const string val = "Basic async test" ;
77
47
78
- var client = new RestClient ( _server . Url ) ;
79
48
var request = new RestRequest ( $ "echo?msg={ val } ") ;
80
49
81
- var response = await client . ExecuteAsync ( request ) ;
50
+ var response = await _client . ExecuteAsync ( request ) ;
82
51
response . Content . Should ( ) . Be ( val ) ;
83
52
}
84
53
85
54
[ Fact ]
86
55
public async Task Can_Timeout_GET_Async ( ) {
87
- var client = new RestClient ( _server . Url ) ;
88
- var request = new RestRequest ( "timeout" , Method . Get ) . AddBody ( "Body_Content" ) ;
56
+ var request = new RestRequest ( "timeout" ) . AddBody ( "Body_Content" ) ;
89
57
90
58
// Half the value of ResponseHandler.Timeout
91
59
request . Timeout = 200 ;
92
60
93
- var response = await client . ExecuteAsync ( request ) ;
61
+ var response = await _client . ExecuteAsync ( request ) ;
94
62
95
63
Assert . Equal ( ResponseStatus . TimedOut , response . ResponseStatus ) ;
96
64
}
97
65
98
66
[ Fact ]
99
67
public async Task Can_Timeout_PUT_Async ( ) {
100
- using var server = SimpleServer . Create ( Handlers . Generic < ResponseHandler > ( ) ) ;
101
-
102
- var client = new RestClient ( server . Url ) ;
103
68
var request = new RestRequest ( "timeout" , Method . Put ) . AddBody ( "Body_Content" ) ;
104
69
105
70
// Half the value of ResponseHandler.Timeout
106
71
request . Timeout = 200 ;
107
72
108
- var response = await client . ExecuteAsync ( request ) ;
73
+ var response = await _client . ExecuteAsync ( request ) ;
109
74
110
75
Assert . Equal ( ResponseStatus . TimedOut , response . ResponseStatus ) ;
111
76
}
112
77
113
78
[ Fact ]
114
79
public async Task Handles_GET_Request_Errors_Async ( ) {
115
- var client = new RestClient ( _server . Url ) ;
116
80
var request = new RestRequest ( "status?code=404" ) ;
117
- var response = await client . ExecuteAsync ( request ) ;
81
+ var response = await _client . ExecuteAsync ( request ) ;
118
82
119
83
Assert . Equal ( HttpStatusCode . NotFound , response . StatusCode ) ;
120
84
}
121
85
122
86
[ Fact ]
123
87
public async Task Handles_GET_Request_Errors_Async_With_Response_Type ( ) {
124
- var client = new RestClient ( _server . Url ) ;
125
88
var request = new RestRequest ( "status?code=404" ) ;
126
- var response = await client . ExecuteAsync < Response > ( request ) ;
89
+ var response = await _client . ExecuteAsync < Response > ( request ) ;
127
90
128
91
Assert . Equal ( HttpStatusCode . NotFound , response . StatusCode ) ;
129
92
Assert . Null ( response . Data ) ;
130
93
}
131
-
132
- public Task InitializeAsync ( ) => _server . Start ( ) ;
133
-
134
- public Task DisposeAsync ( ) => _server . Stop ( ) ;
135
94
}
0 commit comments