@@ -23,6 +23,10 @@ async fn test_unary() -> Result<(), Error> {
23
23
message : "hello dan!" . into ( ) ,
24
24
} ) ;
25
25
} ) ;
26
+ mocks. mock ( |when, then| {
27
+ when. get ( ) . path ( "/world" ) ;
28
+ then. text ( "hello!" ) ;
29
+ } ) ;
26
30
27
31
let server = MockServer :: new ( "hello" ) . with_mocks ( mocks) ;
28
32
server. start ( ) . await ?;
@@ -43,6 +47,11 @@ async fn test_unary() -> Result<(), Error> {
43
47
}
44
48
) ;
45
49
50
+ let response = client. get ( server. url ( "/world" ) ) . send ( ) . await ?;
51
+ assert_eq ! ( response. status( ) , http:: StatusCode :: OK ) ;
52
+ let res = response. text ( ) . await ?;
53
+ assert_eq ! ( res, "hello!" ) ;
54
+
46
55
Ok ( ( ) )
47
56
}
48
57
@@ -55,6 +64,10 @@ async fn test_unary_errors() -> Result<(), Error> {
55
64
} ) ;
56
65
then. internal_server_error ( ) . message ( "unexpected error" ) ;
57
66
} ) ;
67
+ mocks. mock ( |when, then| {
68
+ when. get ( ) . path ( "/error" ) ;
69
+ then. bad_request ( ) ;
70
+ } ) ;
58
71
59
72
let server = MockServer :: new ( "hello" ) . with_mocks ( mocks) ;
60
73
server. start ( ) . await ?;
@@ -72,6 +85,9 @@ async fn test_unary_errors() -> Result<(), Error> {
72
85
let message = response. text ( ) . await ?;
73
86
assert_eq ! ( message, "unexpected error" ) ;
74
87
88
+ let response = client. get ( server. url ( "/error" ) ) . send ( ) . await ?;
89
+ assert_eq ! ( response. status( ) , http:: StatusCode :: BAD_REQUEST ) ;
90
+
75
91
// Mock not found
76
92
let response = client
77
93
. post ( server. url ( "/hello" ) )
@@ -84,5 +100,47 @@ async fn test_unary_errors() -> Result<(), Error> {
84
100
let message = response. text ( ) . await ?;
85
101
assert_eq ! ( message, "mock not found" ) ;
86
102
103
+ // Clear server mocks
104
+ server. mocks ( ) . clear ( ) ;
105
+
106
+ // Add a mock that responds with a 503 error on any
107
+ // endpoint if the body is "give me an error"
108
+ server. mocks ( ) . mock ( |when, then| {
109
+ when. text ( "give me an error" ) ;
110
+ then. status ( StatusCode :: from_u16 ( 503 ) . unwrap ( ) ) ;
111
+ } ) ;
112
+ let response = client
113
+ . get ( server. url ( "/path" ) )
114
+ . body ( "give me an error" )
115
+ . send ( )
116
+ . await ?;
117
+ assert_eq ! ( response. status( ) , http:: StatusCode :: SERVICE_UNAVAILABLE ) ;
118
+
119
+ Ok ( ( ) )
120
+ }
121
+
122
+ #[ test( tokio:: test) ]
123
+ async fn test_any ( ) -> Result < ( ) , Error > {
124
+ let mut mocks = MockSet :: new ( ) ;
125
+ mocks. mock ( |when, then| {
126
+ when. any ( ) ;
127
+ then. text ( "yo!" ) ;
128
+ } ) ;
129
+
130
+ let server = MockServer :: new ( "any" ) . with_mocks ( mocks) ;
131
+ server. start ( ) . await ?;
132
+
133
+ let client = reqwest:: Client :: builder ( ) . http2_prior_knowledge ( ) . build ( ) ?;
134
+
135
+ let response = client. post ( server. url ( "/asdf" ) ) . send ( ) . await ?;
136
+ assert_eq ! ( response. status( ) , http:: StatusCode :: OK ) ;
137
+ let res = response. text ( ) . await ?;
138
+ assert_eq ! ( res, "yo!" ) ;
139
+
140
+ let response = client. post ( server. url ( "/whatever" ) ) . send ( ) . await ?;
141
+ assert_eq ! ( response. status( ) , http:: StatusCode :: OK ) ;
142
+ let res = response. text ( ) . await ?;
143
+ assert_eq ! ( res, "yo!" ) ;
144
+
87
145
Ok ( ( ) )
88
146
}
0 commit comments