diff --git a/src/Components/test/E2ETest/ServerExecutionTests/ServerAuthTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/ServerAuthTest.cs index 5b9eff853310..5e1fdbbbc433 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/ServerAuthTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/ServerAuthTest.cs @@ -86,6 +86,29 @@ object RefreshAuthentication() => """); } + [Fact] + public void UpdatesAuthenticationStateWhenAuthenticationRefreshesAutomatically() + { + SignInAs("user-a", "TestRole", includeNameIdentifier: true); + var appElement = MountAndNavigateToAuthTest( + AuthorizeViewCases, + "?captureAuthenticationRefresh&accelerateAuthenticationRefresh"); + Browser.Equal("Welcome, user-a!", () => + appElement.FindElement(By.CssSelector("#authorize-role .authorized")).Text); + + var javascript = (IJavaScriptExecutor)Browser; + var connectionId = Assert.IsType( + javascript.ExecuteScript("return authenticationRefreshConnection.connectionId;")); + + SignInAs(null, null, useSeparateTab: true); + + Browser.Equal("You're not authorized, anonymous", () => + appElement.FindElement(By.CssSelector("#authorize-role .not-authorized")).Text); + Assert.Equal( + connectionId, + Assert.IsType(javascript.ExecuteScript("return authenticationRefreshConnection.connectionId;"))); + } + private void SignInAs( string userName, string roles, diff --git a/src/Components/test/testassets/Components.TestServer/AuthenticationStartup.cs b/src/Components/test/testassets/Components.TestServer/AuthenticationStartup.cs index f92842b82d1b..f56b1f6d8070 100644 --- a/src/Components/test/testassets/Components.TestServer/AuthenticationStartup.cs +++ b/src/Components/test/testassets/Components.TestServer/AuthenticationStartup.cs @@ -61,7 +61,11 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { endpoints.MapControllers(); endpoints.MapRazorPages(); - endpoints.MapBlazorHub() + endpoints.MapBlazorHub(options => + { + options.MaximumAuthenticationExpiration = TimeSpan.FromMinutes(40); + options.CloseOnAuthenticationExpiration = true; + }) .AddEndpointFilter(async (context, next) => { if (context.HttpContext.WebSockets.IsWebSocketRequest) diff --git a/src/Components/test/testassets/Components.TestServer/Pages/_ServerHost.cshtml b/src/Components/test/testassets/Components.TestServer/Pages/_ServerHost.cshtml index 6de9575c0f98..794e6d72d66e 100644 --- a/src/Components/test/testassets/Components.TestServer/Pages/_ServerHost.cshtml +++ b/src/Components/test/testassets/Components.TestServer/Pages/_ServerHost.cshtml @@ -53,9 +53,19 @@