// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Microsoft.AspNetCore.SignalR.Internal.Protocol; using MsgPack.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Xunit; namespace Microsoft.AspNetCore.SignalR.Client.Tests { public class HubConnectionBuilderTests { [Fact] public void HubConnectionBuiderThrowsIfConnectionFactoryNotConfigured() { var ex = Assert.Throws(() => new HubConnectionBuilder().Build()); Assert.Equal("Cannot create IConnection instance. The connection factory was not configured.", ex.Message); } [Fact] public void WithUrlThrowsForNullUrls() { Assert.Equal("url", Assert.Throws(() => new HubConnectionBuilder().WithUrl((string)null)).ParamName); Assert.Equal("url", Assert.Throws(() => new HubConnectionBuilder().WithUrl((Uri)null)).ParamName); } [Fact] public void WithLoggerFactoryThrowsForNullLoggerFactory() { Assert.Equal("loggerFactory", Assert.Throws(() => new HubConnectionBuilder().WithLoggerFactory(null)).ParamName); } [Fact] public void WithJsonHubProtocolSetsHubProtocolToJsonWithDefaultOptions() { Assert.True(new HubConnectionBuilder().WithJsonProtocol().TryGetSetting(HubConnectionBuilderDefaults.HubProtocolKey, out var hubProtocol)); var actualProtocol = Assert.IsType(hubProtocol); Assert.IsType(actualProtocol.PayloadSerializer.ContractResolver); } [Fact] public void WithJsonHubProtocolSetsHubProtocolToJsonWithProvidedOptions() { var expectedOptions = new JsonHubProtocolOptions() { PayloadSerializerSettings = new JsonSerializerSettings() { DateFormatString = "JUST A TEST" } }; Assert.True(new HubConnectionBuilder().WithJsonProtocol(expectedOptions).TryGetSetting(HubConnectionBuilderDefaults.HubProtocolKey, out var hubProtocol)); var actualProtocol = Assert.IsType(hubProtocol); Assert.Equal("JUST A TEST", actualProtocol.PayloadSerializer.DateFormatString); } [Fact] public void WithMessagePackHubProtocolSetsHubProtocolToMsgPackWithDefaultOptions() { Assert.True(new HubConnectionBuilder().WithMessagePackProtocol().TryGetSetting(HubConnectionBuilderDefaults.HubProtocolKey, out var hubProtocol)); var actualProtocol = Assert.IsType(hubProtocol); Assert.Equal(SerializationMethod.Map, actualProtocol.SerializationContext.SerializationMethod); } [Fact] public void WithMessagePackHubProtocolSetsHubProtocolToMsgPackWithProvidedOptions() { var expectedOptions = new MessagePackHubProtocolOptions() { SerializationContext = new SerializationContext() { SerializationMethod = SerializationMethod.Array } }; Assert.True(new HubConnectionBuilder().WithMessagePackProtocol(expectedOptions).TryGetSetting(HubConnectionBuilderDefaults.HubProtocolKey, out var hubProtocol)); var actualProtocol = Assert.IsType(hubProtocol); Assert.Equal(SerializationMethod.Array, actualProtocol.SerializationContext.SerializationMethod); } } }