public async Task HttpConnectionSetsUserAgentOnAllRequests(HttpTransportType transportType)
            {
                var testHttpHandler  = new TestHttpMessageHandler(autoNegotiate: false);
                var requestsExecuted = false;

                testHttpHandler.OnRequest((request, next, token) =>
                {
                    return(Task.FromResult(ResponseUtils.CreateResponse(HttpStatusCode.NoContent)));
                });

                testHttpHandler.OnNegotiate((_, cancellationToken) =>
                {
                    return(ResponseUtils.CreateResponse(HttpStatusCode.OK, ResponseUtils.CreateNegotiationContent()));
                });

                testHttpHandler.OnRequest(async(request, next, token) =>
                {
                    var userAgentHeaderCollection = request.Headers.UserAgent;
                    var userAgentHeader           = Assert.Single(userAgentHeaderCollection);
                    Assert.Equal("Microsoft.AspNetCore.Http.Connections.Client", userAgentHeader.Product.Name);

                    // user agent version should come from version embedded in assembly metadata
                    var assemblyVersion = typeof(Constants)
                                          .Assembly
                                          .GetCustomAttribute <AssemblyInformationalVersionAttribute>();

                    Assert.Equal(assemblyVersion.InformationalVersion, userAgentHeader.Product.Version);

                    requestsExecuted = true;

                    return(await next());
                });

                await WithConnectionAsync(
                    CreateConnection(testHttpHandler, transportType : transportType),
                    async (connection) =>
                {
                    await connection.StartAsync(TransferFormat.Text).OrTimeout();
                    await connection.Transport.Output.WriteAsync(Encoding.UTF8.GetBytes("Hello World"));
                });

                // Fail safe in case the code is modified and some requests don't execute as a result
                Assert.True(requestsExecuted);
            }
Exemplo n.º 2
0
        private static HttpConnection CreateConnection(HttpOptions httpOptions, ILoggerFactory loggerFactory = null, string url = null, ITransport transport = null, ITransportFactory transportFactory = null, HttpTransportType transportType = HttpTransportType.LongPolling)
        {
            loggerFactory = loggerFactory ?? NullLoggerFactory.Instance;
            var uri = new Uri(url ?? "http://fakeuri.org/");

            if (transportFactory != null)
            {
                return(new HttpConnection(uri, transportFactory, loggerFactory, httpOptions));
            }
            else if (transport != null)
            {
                return(new HttpConnection(uri, new TestTransportFactory(transport), loggerFactory, httpOptions));
            }
            else
            {
                return(new HttpConnection(uri, transportType, loggerFactory, httpOptions));
            }
        }
Exemplo n.º 3
0
        private static HttpConnection CreateConnection(HttpMessageHandler httpHandler = null, ILoggerFactory loggerFactory = null, string url = null, ITransport transport = null, ITransportFactory transportFactory = null, HttpTransportType transportType = HttpTransportType.LongPolling)
        {
            var httpOptions = new HttpOptions()
            {
                HttpMessageHandler = (httpMessageHandler) => httpHandler ?? TestHttpMessageHandler.CreateDefault(),
            };

            return(CreateConnection(httpOptions, loggerFactory, url, transport, transportFactory, transportType));
        }