Ejemplo n.º 1
0
		[I] public async Task HttpClientUseProxyShouldBeTrueWhenEnabledAutoProxyDetection()
		{
			var connection = new TestableHttpConnection();
			var requestData = CreateRequestData();

			connection.Request<StringResponse>(requestData);
			connection.LastHttpClientHandler.UseProxy.Should().BeTrue();
			await connection.RequestAsync<StringResponse>(requestData, CancellationToken.None).ConfigureAwait(false);
			connection.LastHttpClientHandler.UseProxy.Should().BeTrue();
		}
Ejemplo n.º 2
0
		[I] public async Task HttpClientSetsContentLengthWhenTransferEncodingChunkedHttpCompression()
		{
			var requestData = CreateRequestData(transferEncodingChunked: false, httpCompression: true);
			var connection = new TestableHttpConnection(responseMessage =>
			{
				responseMessage.RequestMessage.Content.Headers.ContentLength.Should().HaveValue();
			});

			connection.Request<StringResponse>(requestData);
			await connection.RequestAsync<StringResponse>(requestData, CancellationToken.None).ConfigureAwait(false);
		}
Ejemplo n.º 3
0
        [Fact] public async Task HttpClientSetsContentLengthWhenTransferEncodingChunkedFalse()
        {
            var connection = new TestableHttpConnection(responseMessage =>
            {
                responseMessage.RequestMessage.Content.Headers.ContentLength.Should().HaveValue();
            });
            var transport = Setup(connection, transferEncodingChunked: false);

            transport.Post <StringResponse>(Path, Body);
            await transport.PostAsync <StringResponse>(Path, Body, CancellationToken.None).ConfigureAwait(false);
        }
Ejemplo n.º 4
0
        [Fact] public async Task HttpClientUseProxyShouldBeTrueWhenEnabledAutoProxyDetection()
        {
            var connection = new TestableHttpConnection();
            var transport  = Setup(connection);

            transport.Post <StringResponse>(Path, Body);
            connection.LastHttpClientHandler.UseProxy.Should().BeTrue();
            await transport.PostAsync <StringResponse>(Path, Body, CancellationToken.None).ConfigureAwait(false);

            connection.LastHttpClientHandler.UseProxy.Should().BeTrue();
        }
Ejemplo n.º 5
0
        public async Task HttpClientUseProxyShouldBeFalseWhenDisabledAutoProxyDetection()
        {
            var connection  = new TestableHttpConnection();
            var requestData = CreateRequestData(disableAutomaticProxyDetection: true);

            connection.Request <string>(requestData);
            connection.LastUsedHttpClientHandler.UseProxy.Should().BeFalse();

            await connection.RequestAsync <string>(requestData, CancellationToken.None).ConfigureAwait(false);

            connection.LastUsedHttpClientHandler.UseProxy.Should().BeFalse();
        }
		[I] public async Task SingleInstanceOfHttpClient()
		{
			var connection = new TestableHttpConnection();
			var requestData = CreateRequestData();
			connection.Request<StringResponse>(requestData);

			connection.CallCount.Should().Be(1);
			connection.ClientCount.Should().Be(1);

			await connection.RequestAsync<StringResponse>(requestData, CancellationToken.None).ConfigureAwait(false);

			connection.CallCount.Should().Be(2);
			connection.ClientCount.Should().Be(1);
		}
Ejemplo n.º 7
0
        public async Task SingleInstanceOfHttpClient()
        {
            var connection  = new TestableHttpConnection();
            var requestData = CreateRequestData(TimeSpan.FromMinutes(1));

            connection.Request <string>(requestData);

            connection.CallCount.Should().Be(1);
            connection.ClientCount.Should().Be(1);

            await connection.RequestAsync <string>(requestData, CancellationToken.None).ConfigureAwait(false);

            connection.CallCount.Should().Be(2);
            connection.ClientCount.Should().Be(1);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Setting HttpClientHandler.Proxy = null don't disable HttpClient automatic proxy detection.
        /// It is disabled by setting Proxy to non-null value or by setting UseProxy = false.
        /// </summary>
        [Fact] public async Task HttpClientUseProxyShouldBeFalseWhenDisabledAutoProxyDetection()
        {
            var connection = new TestableHttpConnection();
            var transport  = Setup(connection, disableAutomaticProxyDetection: true);

            var r = transport.Post <StringResponse>(Path, Body);

            connection.LastHttpClientHandler.UseProxy.Should().BeFalse();
            r.Body.Should().Be(BodyString);

            r = await transport.PostAsync <StringResponse>(Path, Body, CancellationToken.None).ConfigureAwait(false);

            connection.LastHttpClientHandler.UseProxy.Should().BeFalse();
            r.Body.Should().Be(BodyString);
        }
		private static async Task MultipleInstancesOfHttpClientWhen(Func<RequestData> differentRequestData)
		{
			var connection = new TestableHttpConnection();
			var requestData = CreateRequestData();
			connection.Request<StringResponse>(requestData);

			connection.CallCount.Should().Be(1);
			connection.ClientCount.Should().Be(1);

			requestData = differentRequestData();
			await connection.RequestAsync<StringResponse>(requestData, CancellationToken.None).ConfigureAwait(false);

			connection.CallCount.Should().Be(2);
			connection.ClientCount.Should().Be(2);
		}
Ejemplo n.º 10
0
		[I] public async Task RespectsDnsRefreshTimeout()
		{
			var connection = new TestableHttpConnection();
			connection.RemovedHandlers.Should().Be(0);
			var requestData = CreateRequestData(dnsRefreshTimeout: TimeSpan.FromSeconds(1));
			connection.Request<StringResponse>(requestData);
			await Task.Delay(TimeSpan.FromSeconds(2));
			connection.Request<StringResponse>(requestData);

			connection.CallCount.Should().Be(2);
			connection.InUseHandlers.Should().Be(1);
			connection.RemovedHandlers.Should().Be(1);

			await connection.RequestAsync<StringResponse>(requestData, CancellationToken.None).ConfigureAwait(false);

			connection.CallCount.Should().Be(3);
			connection.InUseHandlers.Should().Be(1);
			connection.RemovedHandlers.Should().Be(1);
		}
Ejemplo n.º 11
0
        private Transport Setup(
            TestableHttpConnection connection,
            Uri proxyAddress = null,
            bool?disableAutomaticProxyDetection = null,
            bool httpCompression         = false,
            bool transferEncodingChunked = false
            )
        {
            var connectionPool = new SingleNodeConnectionPool(Server.Uri);
            var config         = new TransportConfiguration(connectionPool, connection)
                                 .TransferEncodingChunked(transferEncodingChunked)
                                 .EnableHttpCompression(httpCompression);

            config = disableAutomaticProxyDetection.HasValue
                                ? config.DisableAutomaticProxyDetection(disableAutomaticProxyDetection.Value)
                     //make sure we the requests in debugging proxy
                                : TransportTestServer.RerouteToProxyIfNeeded(config);

            return(new Transport(config));
        }