public async Task Dispose() { var handler = new MockMessageHandler() { Response = @"{}", }; var factory = new MockHttpClientFactory(handler); var httpClient = new ErrorHandlingHttpClient <FirebaseException>( this.CreateArgs(factory)); httpClient.Dispose(); await Assert.ThrowsAsync <ObjectDisposedException>( async() => await httpClient.SendAndDeserializeAsync <Dictionary <string, string> >( this.CreateRequest())); }
public async Task NetworkError() { var handler = new MockMessageHandler() { Exception = new HttpRequestException("Low-level network error"), }; var factory = new MockHttpClientFactory(handler); var httpClient = new ErrorHandlingHttpClient <FirebaseException>( this.CreateArgs(factory)); var exception = await Assert.ThrowsAsync <FirebaseException>( async() => await httpClient.SendAndDeserializeAsync <Dictionary <string, string> >( this.CreateRequest())); Assert.Equal(ErrorCode.Unknown, exception.ErrorCode); Assert.Equal("Network error", exception.Message); Assert.Same(handler.Exception, exception.InnerException); Assert.Null(exception.HttpResponse); }
public async Task SuccessfulRequest() { var handler = new MockMessageHandler() { Response = @"{""foo"": ""bar""}", }; var factory = new MockHttpClientFactory(handler); var httpClient = new ErrorHandlingHttpClient <FirebaseException>( this.CreateArgs(factory)); var response = await httpClient.SendAndDeserializeAsync <Dictionary <string, string> >( this.CreateRequest()); Assert.NotNull(response.HttpResponse); Assert.Equal(handler.Response, response.Body); Assert.Single(response.Result); Assert.Equal("bar", response.Result["foo"]); Assert.Equal(1, handler.Calls); }
public async Task DeserializeError() { var handler = new MockMessageHandler() { Response = "not json", }; var factory = new MockHttpClientFactory(handler); var httpClient = new ErrorHandlingHttpClient <FirebaseException>( this.CreateArgs(factory)); var exception = await Assert.ThrowsAsync <FirebaseException>( async() => await httpClient.SendAndDeserializeAsync <Dictionary <string, string> >( this.CreateRequest())); Assert.Equal(ErrorCode.Unknown, exception.ErrorCode); Assert.Equal("Response parse error", exception.Message); Assert.NotNull(exception.InnerException); Assert.NotNull(exception.HttpResponse); }
public async Task ErrorResponse() { var handler = new MockMessageHandler() { StatusCode = HttpStatusCode.InternalServerError, Response = "{}", }; var factory = new MockHttpClientFactory(handler); var httpClient = new ErrorHandlingHttpClient <FirebaseException>( this.CreateArgs(factory)); var exception = await Assert.ThrowsAsync <FirebaseException>( async() => await httpClient.SendAndDeserializeAsync <Dictionary <string, string> >( this.CreateRequest())); Assert.Equal(ErrorCode.Internal, exception.ErrorCode); Assert.Equal("Example error message: {}", exception.Message); Assert.Null(exception.InnerException); Assert.NotNull(exception.HttpResponse); }
public async Task SuccessfulAuthorizedRequest() { var handler = new MockMessageHandler() { Response = @"{""foo"": ""bar""}", }; var factory = new MockHttpClientFactory(handler); var credential = GoogleCredential.FromAccessToken("test-token"); var httpClient = new ErrorHandlingHttpClient <FirebaseException>( this.CreateArgs(factory, credential)); var response = await httpClient.SendAndDeserializeAsync <Dictionary <string, string> >( this.CreateRequest()); Assert.NotNull(response.HttpResponse); Assert.Equal(handler.Response, response.Body); Assert.Single(response.Result); Assert.Equal("bar", response.Result["foo"]); Assert.Equal(1, handler.Calls); Assert.Equal( "Bearer test-token", handler.LastRequestHeaders.GetValues("Authorization").First()); }