public async Task SignalRDisconnectMethodExecutorTest() { var resolver = new SignalRRequestResolver(false); var methodExecutor = new SignalRDisconnectMethodExecutor(resolver, new ExecutionContext { Executor = _triggeredFunctionExecutor }); var hub = Guid.NewGuid().ToString(); var category = Guid.NewGuid().ToString(); var @event = Guid.NewGuid().ToString(); var connectionId = Guid.NewGuid().ToString(); var error = Guid.NewGuid().ToString(); var content = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new CloseConnectionMessage { Type = 11, Error = error })); var request = TestHelpers.CreateHttpRequestMessage(hub, category, @event, connectionId, contentType: Constants.JsonContentType, content: content); await methodExecutor.ExecuteAsync(request); var result = await _triggeredFunctionDataTcs.Task; var triggerData = (SignalRTriggerEvent)result.TriggerValue; Assert.Null(triggerData.TaskCompletionSource); Assert.Equal(hub, triggerData.Context.Hub); Assert.Equal(category, triggerData.Context.Category); Assert.Equal(@event, triggerData.Context.Event); Assert.Equal(connectionId, triggerData.Context.ConnectionId); Assert.Equal(hub, triggerData.Context.Hub); Assert.Equal(error, triggerData.Context.Error); }
public async Task SignalRInvocationMethodExecutorTest(string protocolName) { var resolver = new SignalRRequestResolver(false); var methodExecutor = new SignalRInvocationMethodExecutor(resolver, new ExecutionContext { Executor = _triggeredFunctionExecutor }); var hub = Guid.NewGuid().ToString(); var category = Guid.NewGuid().ToString(); var @event = Guid.NewGuid().ToString(); var connectionId = Guid.NewGuid().ToString(); var arguments = new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; var message = new Microsoft.AspNetCore.SignalR.Protocol.InvocationMessage(Guid.NewGuid().ToString(), @event, arguments); var protocol = protocolName == "json" ? (IHubProtocol) new JsonHubProtocol() : new MessagePackHubProtocol(); var contentType = protocolName == "json" ? Constants.JsonContentType : Constants.MessagePackContentType; var bytes = new ReadOnlySequence <byte>(protocol.GetMessageBytes(message)); ReadOnlySequence <byte> payload; if (protocolName == "json") { TextMessageParser.TryParseMessage(ref bytes, out payload); } else { BinaryMessageParser.TryParseMessage(ref bytes, out payload); } var request = TestHelpers.CreateHttpRequestMessage(hub, category, @event, connectionId, contentType: contentType, content: payload.ToArray()); await methodExecutor.ExecuteAsync(request); var result = await _triggeredFunctionDataTcs.Task; var triggerData = (SignalRTriggerEvent)result.TriggerValue; Assert.NotNull(triggerData.TaskCompletionSource); Assert.Equal(hub, triggerData.Context.Hub); Assert.Equal(category, triggerData.Context.Category); Assert.Equal(@event, triggerData.Context.Event); Assert.Equal(connectionId, triggerData.Context.ConnectionId); Assert.Equal(hub, triggerData.Context.Hub); Assert.Equal(arguments, triggerData.Context.Arguments); }
public void ValidateSignatureWithAadAccessKeyFact() { var resolver = new SignalRRequestResolver(); Assert.True(resolver.ValidateSignature(new(), new[] { new AadAccessKey(new("http://localhost"), new DefaultAzureCredential()) }));
internal void SignatureTest(HttpRequestMessage request, AccessKey[] accessKeys, bool validate) { var resolver = new SignalRRequestResolver(); Assert.Equal(validate, resolver.ValidateSignature(request, accessKeys)); }
public void SignatureTest(HttpRequestMessage request, string accessKey, bool validate) { var resolver = new SignalRRequestResolver(); Assert.Equal(validate, resolver.ValidateSignature(request, accessKey)); }