public async Task Send_Start_ReceiveDataOnMutation()
        {
            // arrange
            TestServer      testServer = CreateTestServer();
            WebSocketClient client     = CreateWebSocketClient(testServer);
            WebSocket       webSocket  = await client
                                         .ConnectAsync(SubscriptionUri, CancellationToken.None);

            await ConnectAsync(webSocket);

            var query = new SubscriptionQuery
            {
                Query = "subscription { foo }"
            };

            // act
            string id = await webSocket.SendSubscriptionStartAsync(query);

            // assert
            await testServer.SendRequestAsync(new ClientQueryRequest
            {
                Query = "mutation { sendFoo }"
            });

            GenericOperationMessage message =
                await WaitForMessage(webSocket, MessageTypes.Subscription.Data);

            Assert.NotNull(message);
            Assert.Equal(MessageTypes.Subscription.Data, message.Type);

            Dictionary <string, object> result = message.Payload
                                                 .ToObject <Dictionary <string, object> >();

            Assert.True(result.ContainsKey("data"));
        }
Ejemplo n.º 2
0
        public static async Task <string> SendSubscriptionStartAsync(
            this WebSocket webSocket, SubscriptionQuery query)
        {
            string id = Guid.NewGuid().ToString("N");

            await SendMessageAsync(
                webSocket,
                new StartOperationMessage
            {
                Type    = MessageTypes.Subscription.Start,
                Id      = id,
                Payload = query
            });

            return(id);
        }