コード例 #1
0
        public void ParseRequests_MissingVersion_InvalidRequestException()
        {
            const string     json   = "{\"method\": \"datetime\", \"params\": [\"2000-12-15T22:11:03\"], \"id\": \"1\"}";
            DefaultRpcParser parser = new DefaultRpcParser();

            Assert.Throws <RpcInvalidRequestException>(() => parser.ParseRequests(json));
        }
コード例 #2
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_MissingMethod_InvalidRequestException()
        {
            const string     json   = "{\"jsonrpc\": \"2.0\", \"params\": [\"2000-12-15T22:11:03\"], \"id\": \"1\"}";
            DefaultRpcParser parser = new DefaultRpcParser(null);

            Assert.Throws <RpcInvalidRequestException>(() => parser.ParseRequests(json, out bool isBulkRequest));
        }
コード例 #3
0
        public void ParseRequests_NullRequest_InvalidRequestException()
        {
            const string     json   = null;
            DefaultRpcParser parser = new DefaultRpcParser();

            Assert.Throws <RpcInvalidRequestException>(() => parser.ParseRequests(json));
        }
コード例 #4
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_EmptyObjectRequest_InvalidRequestException()
        {
            const string     json   = "{}";
            DefaultRpcParser parser = new DefaultRpcParser(null);

            Assert.Throws <RpcInvalidRequestException>(() => parser.ParseRequests(json, out bool isBulkRequest));
        }
コード例 #5
0
        public void ParseRequests_ObjectWithArrayParam_NoException()
        {
            const string json   = "{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"Add7\", \"params\": [[{\"test\":2},{\"test\":3}]]}";
            IRpcParser   parser = new DefaultRpcParser(new FakeLogger <DefaultRpcParser>(), Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal("1", result.Requests[0].Id);
            Assert.Equal("Add7", result.Requests[0].Method);
            var expectedParams = new Obj[]
            {
                new Obj {
                    Test = 2
                },
                new Obj {
                    Test = 3
                }
            };

            ParserTests.CompareParameters(new object[] { expectedParams }, result.Requests[0].Parameters);
            Assert.False(result.IsBulkRequest);
        }
コード例 #6
0
        public void ParseRequests_MissingId_NoException()
        {
            const string     json   = "{\"method\": \"datetime\", \"jsonrpc\": \"2.0\", \"params\": [\"2000-12-15T22:11:03\"]}";
            DefaultRpcParser parser = new DefaultRpcParser();

            parser.ParseRequests(json);
        }
コード例 #7
0
        public void ParseRequests_MissingParams_NoException()
        {
            const string     json   = "{\"method\": \"datetime\",\"jsonrpc\": \"2.0\", \"id\": \"1\"}";
            DefaultRpcParser parser = new DefaultRpcParser();

            parser.ParseRequests(json);
        }
コード例 #8
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_DuplicateIds_InvalidRequestException()
        {
            const string json = "[{\"jsonrpc\": \"2.0\", \"method\": \"one\", \"params\": [\"1\"], \"id\": \"1\"}, {\"jsonrpc\": \"2.0\", \"method\": \"two\", \"params\": [\"2\"], \"id\": \"1\"}]";

            DefaultRpcParser parser = new DefaultRpcParser(null);

            Assert.ThrowsAny <RpcInvalidRequestException>(() => parser.ParseRequests(json, out bool isBulkRequest));
        }
コード例 #9
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_MissingId_NoException()
        {
            const string     json   = "{\"method\": \"datetime\", \"jsonrpc\": \"2.0\", \"params\": [\"2000-12-15T22:11:03\"]}";
            DefaultRpcParser parser = new DefaultRpcParser(null);

            parser.ParseRequests(json, out bool isBulkRequest);
            Assert.False(isBulkRequest);
        }
コード例 #10
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_MissingParams_NoException()
        {
            const string     json   = "{\"method\": \"datetime\",\"jsonrpc\": \"2.0\", \"id\": \"1\"}";
            DefaultRpcParser parser = new DefaultRpcParser(null);

            parser.ParseRequests(json, out bool isBulkRequest);
            Assert.False(isBulkRequest);
        }
コード例 #11
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_NullRequest_InvalidRequestException()
        {
            const string     json   = null;
            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            var ex = Assert.Throws <RpcException>(() => parser.ParseRequests(json));

            Assert.Equal((int)RpcErrorCode.InvalidRequest, ex.ErrorCode);
        }
コード例 #12
0
        public void ParseRequests_NullRequest_InvalidRequestException()
        {
            const string?json   = null;
            IRpcParser   parser = new DefaultRpcParser(new FakeLogger <DefaultRpcParser>(), Options.Create(new RpcServerConfiguration()));

#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
            var ex = Assert.Throws <RpcException>(() => parser.ParseRequests(json));
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
            Assert.Equal((int)RpcErrorCode.InvalidRequest, ex.ErrorCode);
        }
コード例 #13
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_DuplicateIds_InvalidRequestException()
        {
            const string json = "[{\"jsonrpc\": \"2.0\", \"method\": \"one\", \"params\": [\"1\"], \"id\": \"1\"}, {\"jsonrpc\": \"2.0\", \"method\": \"two\", \"params\": [\"2\"], \"id\": \"1\"}]";

            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            var ex = Assert.Throws <RpcException>(() => parser.ParseRequests(json));

            Assert.Equal((int)RpcErrorCode.InvalidRequest, ex.ErrorCode);
        }
コード例 #14
0
        public void ParseRequests_Valid(string json, object id, string method, object[] parameters)
        {
            DefaultRpcParser parser = new DefaultRpcParser();

            RpcRequest rpcRequest = parser.ParseRequests(json).FirstOrDefault();

            Assert.NotNull(rpcRequest);
            Assert.Equal(rpcRequest.Id, id);
            Assert.Equal(rpcRequest.Method, method);
            Assert.Equal(rpcRequest.JsonRpcVersion, JsonRpcContants.JsonRpcVersion);
            Assert.Equal(rpcRequest.ParameterList, parameters);
        }
コード例 #15
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_Valid(string json, object id, string method, object[] parameters)
        {
            DefaultRpcParser parser = new DefaultRpcParser(null);

            RpcRequest rpcRequest = parser.ParseRequests(json, out bool isBulkRequest).FirstOrDefault();

            Assert.NotNull(rpcRequest);
            ParserTests.CompareId(id, rpcRequest.Id);
            Assert.Equal(method, rpcRequest.Method);
            Assert.Equal(JsonRpcContants.JsonRpcVersion, rpcRequest.JsonRpcVersion);
            ParserTests.CompareParameters(parameters, rpcRequest.Parameters);
            Assert.False(isBulkRequest);
        }
コード例 #16
0
        public void MatchesRpcRoute_DifferentRoutes_Valid(string requestUrl, string availableRouteName, bool shouldMatch)
        {
            IRpcRouteProvider routeProvider = new FakeRouteProvider();
            RouteCriteria     routeCriteria = new RouteCriteria(typeof(ParserTests));

            routeProvider.RegisterRoute(routeCriteria, availableRouteName);
            DefaultRpcParser parser = new DefaultRpcParser(null);
            RpcRoute         matchedRoute;
            bool             isMatch = parser.MatchesRpcRoute(routeProvider, requestUrl, out matchedRoute);

            Assert.Equal(isMatch, shouldMatch);
            Assert.Equal(matchedRoute != null, shouldMatch);
        }
コード例 #17
0
        public void ParseRequests_DateTime_Valid()
        {
            const string     json     = "{\"jsonrpc\": \"2.0\", \"method\": \"datetime\", \"params\": [\"2000-12-15T22:11:03\"], \"id\": 1}";
            DateTime         dateTime = DateTime.Parse("2000-12-15T22:11:03");
            DefaultRpcParser parser   = new DefaultRpcParser();

            RpcRequest rpcRequest = parser.ParseRequests(json).FirstOrDefault();

            Assert.NotNull(rpcRequest);
            Assert.Equal(rpcRequest.Id, (long)1);
            Assert.Equal(rpcRequest.Method, "datetime");
            Assert.Equal(rpcRequest.JsonRpcVersion, JsonRpcContants.JsonRpcVersion);
            Assert.Equal(rpcRequest.ParameterList, new object[] { dateTime });
        }
コード例 #18
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_Valid(string json, object id, string method, object[] parameters)
        {
            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal(RpcId.FromObject(id), result.Requests[0].Id);
            Assert.Equal(method, result.Requests[0].Method);
            ParserTests.CompareParameters(parameters, result.Requests[0].Parameters);
            Assert.False(result.IsBulkRequest);
        }
コード例 #19
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_EmptyObjectRequest_InvalidRequestException()
        {
            const string     json   = "{}";
            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Errors);
            Assert.Equal(default(RpcId), result.Errors[0].Id);
            Assert.NotNull(result.Errors[0].Error);
            Assert.Equal((int)RpcErrorCode.InvalidRequest, result.Errors[0].Error.Code);
            Assert.False(result.IsBulkRequest);
        }
コード例 #20
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_MissingMethod_InvalidRequestException()
        {
            const string     json   = "{\"jsonrpc\": \"2.0\", \"params\": [\"2000-12-15T22:11:03\"], \"id\": \"1\"}";
            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Errors);
            Assert.Equal("1", result.Errors[0].Id);
            Assert.NotNull(result.Errors[0].Error);
            Assert.Equal((int)RpcErrorCode.InvalidRequest, result.Errors[0].Error.Code);
            Assert.False(result.IsBulkRequest);
        }
コード例 #21
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_MissingId_NoException()
        {
            const string     json   = "{\"method\": \"datetime\", \"jsonrpc\": \"2.0\", \"params\": [\"2000-12-15T22:11:03\"]}";
            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal(default(RpcId), result.Requests[0].Id);
            Assert.Equal("datetime", result.Requests[0].Method);
            ParserTests.CompareParameters(new object[] { "2000-12-15T22:11:03" }, result.Requests[0].Parameters);
            Assert.False(result.IsBulkRequest);
        }
コード例 #22
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_DateTime_Valid()
        {
            const string     json     = "{\"jsonrpc\": \"2.0\", \"method\": \"datetime\", \"params\": [\"2000-12-15T22:11:03\"], \"id\": 1}";
            DateTime         dateTime = DateTime.Parse("2000-12-15T22:11:03");
            DefaultRpcParser parser   = new DefaultRpcParser(null);

            RpcRequest rpcRequest = parser.ParseRequests(json, out bool isBulkRequest).FirstOrDefault();

            Assert.NotNull(rpcRequest);
            ParserTests.CompareId(1, rpcRequest.Id);
            Assert.Equal("datetime", rpcRequest.Method);
            Assert.Equal(JsonRpcContants.JsonRpcVersion, rpcRequest.JsonRpcVersion);
            ParserTests.CompareParameters(new object[] { dateTime }, rpcRequest.Parameters);
            Assert.False(isBulkRequest);
        }
コード例 #23
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_MissingParams_NoException()
        {
            const string     json   = "{\"method\": \"datetime\",\"jsonrpc\": \"2.0\", \"id\": \"1\"}";
            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal("1", result.Requests[0].Id);
            Assert.Equal("datetime", result.Requests[0].Method);
            Assert.Equal(default(RpcParameters), result.Requests[0].Parameters);
            Assert.False(result.IsBulkRequest);
        }
コード例 #24
0
        public void MatchesRpcRoute_DifferentRoutes_Valid(string requestUrl, string availableRouteName, bool shouldMatch)
        {
            RpcRoute           route  = new RpcRoute(availableRouteName);
            RpcRouteCollection routes = new RpcRouteCollection {
                route
            };

            DefaultRpcParser parser = new DefaultRpcParser();
            RpcRoute         matchedRoute;
            bool             isMatch = parser.MatchesRpcRoute(routes, requestUrl, out matchedRoute);

            Assert.Equal(isMatch, shouldMatch);
            Assert.Equal(matchedRoute != null, shouldMatch);
            Assert.Equal(route == matchedRoute, shouldMatch);
        }
コード例 #25
0
ファイル: ParserTests.cs プロジェクト: hey-red/JsonRpc
        public void RpcRouteWithBaseRoute_NoBaseRoute_Failure()
        {
            IRpcRouteProvider routeProvider = new FakeRouteProvider();

            routeProvider.BaseRequestPath = "Base";
            RouteCriteria routeCriteria = new RouteCriteria(typeof(ParserTests));

            routeProvider.RegisterRoute(routeCriteria, "Test");
            DefaultRpcParser parser = new DefaultRpcParser(null);
            RpcRoute         matchedRoute;
            bool             isMatch = parser.MatchesRpcRoute(routeProvider, "/Test", out matchedRoute);

            Assert.False(isMatch);
            Assert.Null(matchedRoute);
        }
コード例 #26
0
ファイル: ParserTests.cs プロジェクト: paxosglobal/JsonRpc
        public void ParseRequests_SingleBatchRequest_Valid()
        {
            const string json = "[{\"jsonrpc\": \"2.0\", \"method\": \"one\", \"params\": [\"1\"], \"id\": \"1\"}]";

            DefaultRpcParser parser = new DefaultRpcParser(null, Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal("1", result.Requests[0].Id);
            Assert.Equal("one", result.Requests[0].Method);
            ParserTests.CompareParameters(new object[] { "1" }, result.Requests[0].Parameters);
            Assert.True(result.IsBulkRequest);
        }
コード例 #27
0
ファイル: ParserTests.cs プロジェクト: lalalaring/JsonRpc
        public void ParseRequests_SingleBatchRequest_Valid()
        {
            const string json = "[{\"jsonrpc\": \"2.0\", \"method\": \"one\", \"params\": [\"1\"], \"id\": \"1\"}]";

            DefaultRpcParser parser = new DefaultRpcParser(null);

            List <RpcRequest> rpcRequests = parser.ParseRequests(json, out bool isBulkRequest);

            Assert.NotNull(rpcRequests);
            Assert.Single(rpcRequests);
            ParserTests.CompareId("1", rpcRequests[0].Id);
            Assert.Equal("one", rpcRequests[0].Method);
            Assert.Equal(JsonRpcContants.JsonRpcVersion, rpcRequests[0].JsonRpcVersion);
            ParserTests.CompareParameters(new object[] { "1" }, rpcRequests[0].Parameters);
            Assert.True(isBulkRequest);
        }
コード例 #28
0
        public void ParseRequests_DateTime_Valid()
        {
            const string json     = "{\"jsonrpc\": \"2.0\", \"method\": \"datetime\", \"params\": [\"2000-12-15T22:11:03\"], \"id\": 1}";
            DateTime     dateTime = DateTime.Parse("2000-12-15T22:11:03");
            IRpcParser   parser   = new DefaultRpcParser(new FakeLogger <DefaultRpcParser>(), Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);


            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal(1, result.Requests[0].Id);
            Assert.Equal("datetime", result.Requests[0].Method);
            ParserTests.CompareParameters(new object[] { dateTime }, result.Requests[0].Parameters);
            Assert.False(result.IsBulkRequest);
        }
コード例 #29
0
        public void ParseRequests_ObjectParam_NoException()
        {
            const string json   = "{\"method\": \"obj\", \"jsonrpc\": \"2.0\", \"params\": [{\"test\":1}], \"id\": \"1\"}";
            IRpcParser   parser = new DefaultRpcParser(new FakeLogger <DefaultRpcParser>(), Options.Create(new RpcServerConfiguration()));

            ParsingResult result = parser.ParseRequests(json);

            Assert.NotNull(result);
            Assert.Equal(1, result.RequestCount);
            Assert.Single(result.Requests);
            Assert.Equal("1", result.Requests[0].Id);
            Assert.Equal("obj", result.Requests[0].Method);
            ParserTests.CompareParameters(new object[] { new Obj {
                                                             Test = 1
                                                         } }, result.Requests[0].Parameters);
            Assert.False(result.IsBulkRequest);
        }
コード例 #30
0
        public void ParseRequests_SingleBatchRequest_Valid()
        {
            const string json = "[{\"jsonrpc\": \"2.0\", \"method\": \"one\", \"params\": [\"1\"], \"id\": \"1\"}]";

            DefaultRpcParser parser = new DefaultRpcParser(null);

            bool isBulkRequest;
            List <RpcRequest> rpcRequests = parser.ParseRequests(json, out isBulkRequest);

            Assert.NotNull(rpcRequests);
            Assert.Equal(rpcRequests.Count, 1);
            Assert.Equal(rpcRequests[0].Id, "1");
            Assert.Equal(rpcRequests[0].Method, "one");
            Assert.Equal(rpcRequests[0].JsonRpcVersion, JsonRpcContants.JsonRpcVersion);
            Assert.Equal(rpcRequests[0].ParameterList, new object[] { "1" });
            Assert.True(isBulkRequest);
        }