@@ -15,7 +15,7 @@ impl TiledQuery {
1515
1616#[ cfg( test) ]
1717mod tests {
18- use async_graphql:: { EmptyMutation , EmptySubscription , Schema } ;
18+ use async_graphql:: { EmptyMutation , EmptySubscription , Schema , Value } ;
1919 use httpmock:: MockServer ;
2020 use url:: Url ;
2121
@@ -46,6 +46,56 @@ mod tests {
4646 let response = schema. execute ( "{metadata { apiVersion } }" ) . await ;
4747
4848 assert_eq ! ( response. data. to_string( ) , "{metadata: {apiVersion: 0}}" ) ;
49+
50+ #[ tokio:: test]
51+ async fn test_server_unavailable ( ) {
52+ let schema = Schema :: build (
53+ TiledQuery ( TiledClient {
54+ address : Url :: parse ( "http://tiled.example.com" ) . unwrap ( ) ,
55+ } ) ,
56+ EmptyMutation ,
57+ EmptySubscription ,
58+ )
59+ . finish ( ) ;
60+
61+ let response = schema. execute ( "{metadata { apiVersion } }" ) . await ;
62+ assert_eq ! ( response. data, Value :: Null ) ;
63+ assert_eq ! (
64+ response. errors[ 0 ] . message,
65+ "Tiled server error: error sending request for url (http://tiled.example.com/api/v1/)"
66+ ) ;
67+ assert_eq ! ( response. errors. len( ) , 1 ) ;
68+ }
69+
70+ #[ tokio:: test]
71+ async fn test_internal_tiled_error ( ) {
72+ let mock_server = MockServer :: start ( ) ;
73+ let mock = mock_server
74+ . mock_async ( |when, then| {
75+ when. method ( "GET" ) . path ( "/api/v1/" ) ;
76+ then. status ( 503 ) ;
77+ } )
78+ . await ;
79+
80+ let schema = Schema :: build (
81+ TiledQuery ( TiledClient {
82+ address : Url :: parse ( & mock_server. base_url ( ) ) . unwrap ( ) ,
83+ } ) ,
84+ EmptyMutation ,
85+ EmptySubscription ,
86+ )
87+ . finish ( ) ;
88+
89+ let response = schema. execute ( "{metadata { apiVersion } }" ) . await ;
90+ let actual = & response. errors [ 0 ] . message ;
91+ let expected =
92+ "Tiled server error: HTTP status server error (503 Service Unavailable) for url" ;
93+ assert_eq ! ( response. data, Value :: Null ) ;
94+ assert ! (
95+ actual. starts_with( expected) ,
96+ "Unexpected error: {actual} \n Expected: {expected} [...]"
97+ ) ;
98+ assert_eq ! ( response. errors. len( ) , 1 ) ;
4999 mock. assert ( ) ;
50100 }
51101}
0 commit comments