public void Reads_GraphQLRequest_List_No_Items(IGraphQLTextSerializer serializer)
    {
        var test   = $"[]";
        var actual = serializer.Deserialize <List <GraphQLRequest> >(test);

        actual.Count.ShouldBe(0);
    }
    public void serialization_should_have_correct_case(IGraphQLTextSerializer writer)
    {
        var trace    = new ApolloTrace(new DateTime(2019, 12, 05, 15, 38, 00, DateTimeKind.Utc), 102.5);
        var expected = @"{
  ""version"": 1,
  ""startTime"": ""2019-12-05T15:38:00Z"",
  ""endTime"": ""2019-12-05T15:38:00.103Z"",
  ""duration"": 102500000,
  ""parsing"": {
    ""startOffset"": 0,
    ""duration"": 0
  },
  ""validation"": {
    ""startOffset"": 0,
    ""duration"": 0
  },
  ""execution"": {
    ""resolvers"": []
  }
}";

        var result = writer.Serialize(trace);

        result.ShouldBeCrossPlat(expected);
    }
Ejemplo n.º 3
0
    public WebSocketTransport(WebSocket socket, IGraphQLTextSerializer serializer)
    {
        _socket = socket;

        Reader = new WebSocketReaderPipeline(_socket, serializer);
        Writer = new WebSocketWriterPipeline(_socket, serializer);
    }
    public void Reads_Null_GraphQLRequest_In_List(IGraphQLTextSerializer serializer)
    {
        var actual = serializer.Deserialize <GraphQLRequest[]>("[null]");

        actual.Length.ShouldBe(1);
        actual.First().ShouldBeNull();
    }
 public GraphQLHttpMiddlewareWithLogs(
     ILogger <GraphQLHttpMiddleware <TSchema> > logger,
     IGraphQLTextSerializer requestDeserializer)
     : base(requestDeserializer)
 {
     _logger = logger;
 }
Ejemplo n.º 6
0
    public async Task should_map(IGraphQLTextSerializer serializer)
    {
        var documentExecuter = new DocumentExecuter();
        var executionResult  = await documentExecuter.ExecuteAsync(_ =>
        {
            _.Schema    = new Issue2275Schema();
            _.Query     = @"query($data:Input!) {
                                request(data: $data)
                }";
            _.Variables = serializer.Deserialize <Inputs>(@"{
                    ""data"": {
                        ""clientId"": 2,
                        ""filters"": [{
                            ""key"": ""o"",
                            ""value"": 25
                        }]
                    }
                }");
        }).ConfigureAwait(false);

        var json = serializer.Serialize(executionResult);

        executionResult.Errors.ShouldBeNull();

        json.ShouldBe(@"{
  ""data"": {
    ""request"": ""2: [o=25]""
  }
}");
    }
Ejemplo n.º 7
0
    public void InputsDecodesDatesAsStrings(IGraphQLTextSerializer serializer)
    {
        var date    = new DateTimeOffset(2022, 2, 6, 12, 26, 53, TimeSpan.FromHours(-5));
        var dateStr = date.ToString("O");
        var actual  = serializer.Deserialize <Inputs>($"{{\"date\":\"{dateStr}\"}}");

        actual.ShouldContainKeyAndValue("date", dateStr);
    }
Ejemplo n.º 8
0
    public void FromJson(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <TestClass1>(test);

        actual.Query.ShouldBe("hello");
        Verify(actual.Variables);
    }
    public void Null(IGraphQLTextSerializer serializer)
    {
        var expected = "null";

        var actual = serializer.Serialize <ExecutionError>(null);

        actual.ShouldBeCrossPlatJson(expected);
    }
Ejemplo n.º 10
0
    public void FromJson_Missing(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\"}}";
        var actual = serializer.Deserialize <TestClass1>(test);

        actual.Query.ShouldBe("hello");
        actual.Variables.ShouldBeNull();
    }
    public void Reads_GraphQLRequest_IsCaseSensitive(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"Variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBe("hello");
        actual.Variables.ShouldBeNull();
    }
    public void Reads_GraphQLRequest(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBe("hello");
        Verify(actual.Variables);
    }
    public void Writes_OperationMessage_Nulls(IGraphQLTextSerializer serializer)
    {
        var message  = new OperationMessage();
        var actual   = serializer.Serialize(message);
        var expected = @"{}";

        actual.ShouldBeCrossPlatJson(expected);
    }
    public void Reads_OperationMessage_Empty(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{}}";
        var actual = serializer.Deserialize <OperationMessage>(test);

        actual.Id.ShouldBeNull();
        actual.Type.ShouldBeNull();
        actual.Payload.ShouldBeNull();
    }
    public void Reads_GraphQLRequest_Other_Properties(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"operationName\":\"hello2\",\"extensions\":{ExampleJson}}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBe("hello");
        actual.OperationName.ShouldBe("hello2");
        Verify(actual.Extensions);
    }
    public void Reads_GraphQLRequest_List_Reads_Single_Item(IGraphQLTextSerializer serializer)
    {
        var test    = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual  = serializer.Deserialize <List <GraphQLRequest> >(test);
        var request = actual.ShouldHaveSingleItem();

        request.Query.ShouldBe("hello");
        Verify(request.Variables);
    }
    public void Reads_GraphQLRequest_List_NotCaseSensitive(IGraphQLTextSerializer serializer)
    {
        var test   = @"{""VARIABLES"":{""date"":""2015-12-22T10:10:10+03:00""},""query"":""test""}";
        var actual = serializer.Deserialize <List <GraphQLRequest> >(test);

        actual.Count.ShouldBe(1);
        actual[0].Query.ShouldBe("test");
        actual[0].Variables.ShouldBeNull();
    }
    public void BatchRequestAsIListIsArrayForSingle(IGraphQLTextSerializer serializer)
    {
        // verifies that when deserializing to IList<GraphQLRequest>, and when it is not a batch request, the result is a GraphQLRequest[1]
        // note: the server counts on this behavior to determine whether or not a request is a batch request
        var actual = serializer.Deserialize <IList <GraphQLRequest> >("{}");

        actual.ShouldBeOfType <GraphQLRequest[]>();
        actual.Count.ShouldBe(1);
    }
    public void Reads_OperationMessage_Nulls(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"id\":null,\"type\":null,\"payload\":null}}";
        var actual = serializer.Deserialize <OperationMessage>(test);

        actual.Id.ShouldBeNull();
        actual.Type.ShouldBeNull();
        actual.Payload.ShouldBeNull();
    }
    public void Reads_GraphQLRequest_Nulls(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":null,\"operationName\":null,\"variables\":null,\"extensions\":null}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBeNull();
        actual.OperationName.ShouldBeNull();
        actual.Variables.ShouldBeNull();
        actual.Extensions.ShouldBeNull();
    }
Ejemplo n.º 21
0
    public void ElementToInputs(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <TestClass2>(test);

        actual.Query.ShouldBe("hello");
        var variables = serializer.ReadNode <Inputs>(actual.Variables);

        Verify(variables);
    }
Ejemplo n.º 22
0
    public void FromJson_IsCaseInsensitive_Inputs(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"Query\":\"hello\",\"Variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <TestClass1>(test);

        actual.Query.ShouldBe("hello");
        var variables = actual.Variables;

        Verify(variables);
    }
    public void Reads_GraphQLRequest_Empty(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBeNull();
        actual.OperationName.ShouldBeNull();
        actual.Variables.ShouldBeNull();
        actual.Extensions.ShouldBeNull();
    }
    public void Simple(IGraphQLTextSerializer serializer)
    {
        var error = new ExecutionError("some error 1");

        var expected = @"{""message"": ""some error 1""}";

        var actual = serializer.Serialize(error);

        actual.ShouldBeCrossPlatJson(expected);
    }
    public void Array(IGraphQLTextSerializer serializer)
    {
        var errors = new ExecutionError[] { new ExecutionError("some error 1"), new ExecutionError("some error 2") };

        var expected = @"[{""message"": ""some error 1""}, {""message"": ""some error 2""}]";

        var actual = serializer.Serialize(errors);

        actual.ShouldBeCrossPlatJson(expected);
    }
    public void Reads_GraphQLRequest_List_Multiple_Items(IGraphQLTextSerializer serializer)
    {
        var test   = $"[{{\"query\":\"hello\",\"variables\":{ExampleJson}}},{{\"query\":\"hello2\"}}]";
        var actual = serializer.Deserialize <List <GraphQLRequest> >(test);

        actual.Count.ShouldBe(2);
        actual[0].Query.ShouldBe("hello");
        Verify(actual[0].Variables);
        actual[1].Query.ShouldBe("hello2");
        actual[1].Variables.ShouldBeNull();
    }
Ejemplo n.º 27
0
    public WebSocketReaderPipeline(WebSocket socket, IGraphQLTextSerializer serializer)
    {
        _socket     = socket;
        _serializer = serializer;

        _startBlock = CreateMessageReader();
        _endBlock   = CreateReaderJsonTransformer();
        _startBlock.LinkTo(_endBlock, new DataflowLinkOptions
        {
            PropagateCompletion = true
        });
    }
Ejemplo n.º 28
0
    public AutomaticPersistedQueriesFixture()
    {
        Provider = new ServiceCollection()
                   .AddGraphQL(builder => builder
                               .AddAutomaticPersistedQueries(options => options.SlidingExpiration = TimeSpan.FromMinutes(1))
                               .AddSchema <AutomaticPersistedQueriesTestSchema>()
                               .AddSystemTextJson()
                               ).BuildServiceProvider();

        _executer   = Provider.GetRequiredService <IDocumentExecuter <AutomaticPersistedQueriesTestSchema> >();
        _serializer = Provider.GetRequiredService <IGraphQLTextSerializer>();
    }
Ejemplo n.º 29
0
    public async Task FromJsonStream(IGraphQLTextSerializer serializer)
    {
        var test     = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var testData = new MemoryStream(Encoding.UTF8.GetBytes(test));
        var actual   = await serializer.ReadAsync <TestClass1>(testData).ConfigureAwait(false);

        actual.Query.ShouldBe("hello");
        Verify(actual.Variables);
        // verify that the stream has not been disposed
        testData.ReadByte().ShouldBe(-1);
        testData.Dispose();
        Should.Throw <ObjectDisposedException>(() => testData.ReadByte());
    }
    public void Writes_GraphQLRequest_Array_Correctly(IGraphQLTextSerializer serializer)
    {
        var request = new GraphQLRequest
        {
            Query = "hello",
        };

        var expected = @"[{ ""query"": ""hello"" }]";

        var actual = serializer.Serialize(new GraphQLRequest[] { request });

        actual.ShouldBeCrossPlatJson(expected);
    }