예제 #1
0
        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()));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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());
        }