예제 #1
0
        public async Task should_handle_start()
        {
            /* Given */
            var query = new GraphQLQuery
            {
                OperationName = "test",
                Query         = "query",
                Variables     = JObject.FromObject(new { test = "variable" })
            };

            var messageContext = CreateMessage(
                MessageTypes.GQL_START, query);

            _subscriptionExecuter.SubscribeAsync(Arg.Any <ExecutionOptions>())
            .Returns(CreateStreamResult);

            /* When */
            await _sut.HandleMessageAsync(messageContext).ConfigureAwait(false);

            /* Then */
            await _subscriptionExecuter.Received()
            .SubscribeAsync(Arg.Is <ExecutionOptions>(
                                context => context.Schema == _schema &&
                                context.Query == query.Query &&
                                context.Inputs.ContainsKey("test")))
            .ConfigureAwait(false);

            var connectionSubscriptions = _sut.Subscriptions[messageContext.ConnectionId];

            Assert.True(connectionSubscriptions.ContainsKey(messageContext.Op.Id));
        }
 private Task <SubscriptionExecutionResult> SubscribeAsync(GraphQuery query)
 {
     return(_subscriptionExecuter.SubscribeAsync(new ExecutionOptions
     {
         Schema = _schema,
         OperationName = query.OperationName,
         Inputs = query.GetInputs(),
         Query = query.Query
     }));
 }
예제 #3
0
        private Task <SubscriptionExecutionResult> SubscribeAsync(GraphQLQuery query, OperationMessageContext op)
        {
            var options = op.Connection.Options;

            return(_subscriptionExecuter.SubscribeAsync(new ExecutionOptions
            {
                Schema = _schema,
                OperationName = query.OperationName,
                Inputs = query.GetInputs(),
                Query = query.Query,
                UserContext = options?.BuildUserContext?.Invoke(op)
            }));
        }
        public async Task <SubscriptionExecutionResult> Subscribe(GraphQLDocument bdy, object context)
        {
            var executionOptions = new ExecutionOptions
            {
                Schema           = _schema,
                Query            = bdy.Query,
                OperationName    = bdy.OperationName,
                Inputs           = bdy.Variables.ToInputs(),
                ExposeExceptions = false,
                UserContext      = context
            };

            // call ChatSubscription's subscriber
            var result = await _subscriptionExecuter.SubscribeAsync(executionOptions);

            return(result);
        }
예제 #5
0
 private Task <SubscriptionExecutionResult> SubscribeAsync(ExecutionOptions options)
 {
     return(_subscriptionExecuter.SubscribeAsync(options));
 }