diff --git a/RpgRoller.Tests/Api/FrontendHostTests.cs b/RpgRoller.Tests/Api/FrontendHostTests.cs index 774a713..291497d 100644 --- a/RpgRoller.Tests/Api/FrontendHostTests.cs +++ b/RpgRoller.Tests/Api/FrontendHostTests.cs @@ -1,3 +1,6 @@ +using Microsoft.AspNetCore.SignalR; +using Microsoft.Extensions.Options; + namespace RpgRoller.Tests; public sealed class FrontendHostTests : ApiTestBase @@ -18,4 +21,24 @@ public sealed class FrontendHostTests : ApiTestBase Assert.Contains("_framework/blazor.web.js", html); Assert.Contains("Connecting...", html); } -} \ No newline at end of file + + [Fact] + public void BlazorHub_AllowsLargerInteropPayloads() + { + using var factory = CreateFactory(); + var componentHubType = Type.GetType("Microsoft.AspNetCore.Components.Server.ComponentHub, Microsoft.AspNetCore.Components.Server"); + Assert.NotNull(componentHubType); + + var hubOptionsType = typeof(HubOptions<>).MakeGenericType(componentHubType); + var optionsType = typeof(IOptions<>).MakeGenericType(hubOptionsType); + var options = factory.Services.GetService(optionsType); + Assert.NotNull(options); + + var value = optionsType.GetProperty("Value")!.GetValue(options); + Assert.NotNull(value); + + var maximumReceiveMessageSize = (long?)hubOptionsType.GetProperty("MaximumReceiveMessageSize")!.GetValue(value); + + Assert.Equal(256 * 1024, maximumReceiveMessageSize); + } +} diff --git a/RpgRoller/Program.cs b/RpgRoller/Program.cs index 8733b17..1e192ab 100644 --- a/RpgRoller/Program.cs +++ b/RpgRoller/Program.cs @@ -4,7 +4,9 @@ using RpgRoller.Hosting; var builder = WebApplication.CreateBuilder(args); builder.Services.AddRpgRollerCore(builder.Configuration, builder.Environment); -builder.Services.AddRazorComponents().AddInteractiveServerComponents(); +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents() + .AddHubOptions(options => options.MaximumReceiveMessageSize = 256 * 1024); builder.Services.AddScoped(); var app = builder.Build();