File: HubConnectionBuilderExtensionsTests.cs
Web Access
Project: src\src\SignalR\clients\csharp\Client\test\UnitTests\Microsoft.AspNetCore.SignalR.Client.Tests.csproj (Microsoft.AspNetCore.SignalR.Client.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Net;
using Microsoft.AspNetCore.Http.Connections;
using Microsoft.AspNetCore.Http.Connections.Client;
using Microsoft.AspNetCore.SignalR.Protocol;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
using Xunit;
 
namespace Microsoft.AspNetCore.SignalR.Client.Tests;
 
public class HubConnectionBuilderExtensionsTests
{
    [Fact]
    public void WithHttpConnectionSetsUrl()
    {
        var connectionBuilder = new HubConnectionBuilder();
        connectionBuilder.WithUrl("http://tempuri.org");
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var value = serviceProvider.GetService<IOptions<HttpConnectionOptions>>().Value;
 
        Assert.Equal(new Uri("http://tempuri.org"), value.Url);
    }
 
    [Fact]
    public void WithHttpConnectionSetsTransport()
    {
        var connectionBuilder = new HubConnectionBuilder();
        connectionBuilder.WithUrl("http://tempuri.org", HttpTransportType.LongPolling);
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var value = serviceProvider.GetService<IOptions<HttpConnectionOptions>>().Value;
 
        Assert.Equal(HttpTransportType.LongPolling, value.Transports);
    }
 
    [Fact]
    public void WithUrlUsingUriSetsTransport()
    {
        var connectionBuilder = new HubConnectionBuilder();
        var uri = new Uri("http://tempuri.org");
        connectionBuilder.WithUrl(uri, HttpTransportType.LongPolling);
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var value = serviceProvider.GetService<IOptions<HttpConnectionOptions>>().Value;
 
        Assert.Equal(HttpTransportType.LongPolling, value.Transports);
    }
 
    [Fact]
    public void WithUrlUsingUriHttpConnectionCallsConfigure()
    {
        var proxy = Mock.Of<IWebProxy>();
 
        var connectionBuilder = new HubConnectionBuilder();
        var uri = new Uri("http://tempuri.org");
        connectionBuilder.WithUrl(uri, HttpTransportType.LongPolling, options => { options.Proxy = proxy; });
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var value = serviceProvider.GetService<IOptions<HttpConnectionOptions>>().Value;
 
        Assert.Same(proxy, value.Proxy);
    }
 
    [Fact]
    public void WithHttpConnectionCallsConfigure()
    {
        var proxy = Mock.Of<IWebProxy>();
 
        var connectionBuilder = new HubConnectionBuilder();
        connectionBuilder.WithUrl("http://tempuri.org", options => { options.Proxy = proxy; });
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var value = serviceProvider.GetService<IOptions<HttpConnectionOptions>>().Value;
 
        Assert.Same(proxy, value.Proxy);
    }
 
    [Fact]
    public void DefaultLoggerFactoryExists()
    {
        var connectionBuilder = new HubConnectionBuilder();
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
        Assert.NotNull(loggerFactory);
    }
 
    [Fact]
    public void AddJsonProtocolAddsProtocol()
    {
        var connectionBuilder = new HubConnectionBuilder();
        connectionBuilder.AddNewtonsoftJsonProtocol();
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var resolvedHubProtocol = serviceProvider.GetService<IHubProtocol>();
 
        Assert.IsType<NewtonsoftJsonHubProtocol>(resolvedHubProtocol);
    }
 
    [Fact]
    public void AddMessagePackProtocolAddsProtocol()
    {
        var connectionBuilder = new HubConnectionBuilder();
        connectionBuilder.AddMessagePackProtocol();
 
        var serviceProvider = connectionBuilder.Services.BuildServiceProvider();
 
        var resolvedHubProtocol = serviceProvider.GetService<IHubProtocol>();
 
        Assert.IsType<MessagePackHubProtocol>(resolvedHubProtocol);
    }
}