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);
        }
예제 #3
0
        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));
        }