Add test for supported scenario (#12931)
This commit is contained in:
parent
c6e1bcb66c
commit
bd01c67e88
|
|
@ -1050,4 +1050,32 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
||||||
|
|
||||||
public bool TokenStateInDisconnected { get; set; }
|
public bool TokenStateInDisconnected { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class CallerServiceHub : Hub
|
||||||
|
{
|
||||||
|
private readonly CallerService _service;
|
||||||
|
|
||||||
|
public CallerServiceHub(CallerService service)
|
||||||
|
{
|
||||||
|
_service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task OnConnectedAsync()
|
||||||
|
{
|
||||||
|
_service.SetCaller(Clients.Caller);
|
||||||
|
var tcs = (TaskCompletionSource<bool>)Context.Items["ConnectedTask"];
|
||||||
|
tcs?.TrySetResult(true);
|
||||||
|
return base.OnConnectedAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CallerService
|
||||||
|
{
|
||||||
|
public IClientProxy Caller { get; private set; }
|
||||||
|
|
||||||
|
public void SetCaller(IClientProxy caller)
|
||||||
|
{
|
||||||
|
Caller = caller;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3625,6 +3625,35 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ClientsCallerPropertyCanBeUsedOutsideOfHub()
|
||||||
|
{
|
||||||
|
CallerService callerService = new CallerService();
|
||||||
|
var serviceProvider = HubConnectionHandlerTestUtils.CreateServiceProvider(services =>
|
||||||
|
{
|
||||||
|
services.AddSingleton(callerService);
|
||||||
|
});
|
||||||
|
var connectionHandler = serviceProvider.GetService<HubConnectionHandler<CallerServiceHub>>();
|
||||||
|
|
||||||
|
using (StartVerifiableLog())
|
||||||
|
{
|
||||||
|
using (var client = new TestClient())
|
||||||
|
{
|
||||||
|
var connectionHandlerTask = await client.ConnectAsync(connectionHandler);
|
||||||
|
|
||||||
|
// Wait for a connection, or for the endpoint to fail.
|
||||||
|
await client.Connected.OrThrowIfOtherFails(connectionHandlerTask).OrTimeout();
|
||||||
|
|
||||||
|
await callerService.Caller.SendAsync("Echo", "message").OrTimeout();
|
||||||
|
|
||||||
|
var message = Assert.IsType<InvocationMessage>(await client.ReadAsync().OrTimeout());
|
||||||
|
|
||||||
|
Assert.Equal("Echo", message.Target);
|
||||||
|
Assert.Equal("message", message.Arguments[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class CustomHubActivator<THub> : IHubActivator<THub> where THub : Hub
|
private class CustomHubActivator<THub> : IHubActivator<THub> where THub : Hub
|
||||||
{
|
{
|
||||||
public int ReleaseCount;
|
public int ReleaseCount;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue