Example #1
0
        public async Task HttpRetryHandler_HandlesInvalidProtocol()
        {
            // Arrange
            var server = new TcpListenerServer {
                Mode = TestServerMode.ServerProtocolViolation
            };

            // Act & Assert
            var exception = await ThrowsException <HttpRequestException>(server);

#if IS_CORECLR
            if (!RuntimeEnvironmentHelper.IsWindows)
            {
                Assert.Null(exception.InnerException);
                Assert.Equal("The server returned an invalid or unrecognized response.", exception.Message);
            }
            else
            {
                Assert.NotNull(exception.InnerException);
                Assert.Equal("The server returned an invalid or unrecognized response", exception.InnerException.Message);
            }
#else
            var innerException = Assert.IsType <WebException>(exception.InnerException);
            Assert.Equal(WebExceptionStatus.ServerProtocolViolation, innerException.Status);
#endif
        }
Example #2
0
        public async Task HttpSource_TimesOutDownload()
        {
            // Arrange
            using (var td = TestDirectory.Create())
            {
                var expectedMilliseconds = 250;
                var server = new TcpListenerServer
                {
                    Mode          = TestServerMode.SlowResponseBody,
                    SleepDuration = TimeSpan.FromSeconds(10)
                };
                var packageSource   = new PackageSource(FakeSource);
                var handler         = new HttpClientHandler();
                var handlerResource = new HttpHandlerResourceV3(handler, handler);
                var httpSource      = new HttpSource(
                    packageSource,
                    () => Task.FromResult((HttpHandlerResource)handlerResource),
                    NullThrottle.Instance)
                {
                    HttpCacheDirectory = td
                };
                var logger = new TestLogger();

                // Act & Assert
                var actual = await Assert.ThrowsAsync <IOException>(() =>
                                                                    server.ExecuteAsync(uri => httpSource.GetJObjectAsync(
                                                                                            new HttpSourceRequest(uri, logger)
                {
                    DownloadTimeout = TimeSpan.FromMilliseconds(expectedMilliseconds)
                },
                                                                                            logger,
                                                                                            CancellationToken.None)));

                Assert.IsType <TimeoutException>(actual.InnerException);
                Assert.EndsWith(
                    $"timed out because no data was received for {expectedMilliseconds}ms.",
                    actual.Message);
            }
        }
        public async Task HttpRetryHandler_HandlesInvalidProtocol()
        {
            // Arrange
            var server = new TcpListenerServer {
                Mode = TestServerMode.ServerProtocolViolation
            };

            // Act & Assert
            var exception = await ThrowsException <HttpRequestException>(server);

#if IS_CORECLR
            Assert.Null(exception.InnerException);
#if (NETCORE3_0 || NETCORE5_0)
            Assert.Equal("Received an invalid status code: 'BAD'.", exception.Message);
#else
            Assert.Equal("The server returned an invalid or unrecognized response.", exception.Message);
#endif
#else
            var innerException = Assert.IsType <WebException>(exception.InnerException);
            Assert.Equal(WebExceptionStatus.ServerProtocolViolation, innerException.Status);
#endif
        }