mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-16 00:05:53 +01:00
166 lines
4.2 KiB
ObjectPascal
166 lines
4.2 KiB
ObjectPascal
// ***************************************************************************
|
|
//
|
|
// Delphi MVC Framework
|
|
//
|
|
// Copyright (c) 2010-2023 Daniele Teti and the DMVCFramework Team
|
|
//
|
|
// https://github.com/danieleteti/delphimvcframework
|
|
//
|
|
// ***************************************************************************
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// *************************************************************************** }
|
|
|
|
unit JSONRPCTestsU;
|
|
|
|
interface
|
|
|
|
uses
|
|
DUnitX.TestFramework;
|
|
|
|
type
|
|
|
|
[TestFixture]
|
|
TTestJSONRPC = class(TObject)
|
|
public
|
|
[Test]
|
|
procedure TestRequestWithArrayParameters;
|
|
[Test]
|
|
procedure TestRequestWithNamedParameters;
|
|
[Test]
|
|
procedure TestRequestWithMixedParamaters;
|
|
[Test]
|
|
procedure TestRequestWithNoParameters;
|
|
[Test]
|
|
procedure TestRequestWithMalformedJSON;
|
|
[Test]
|
|
procedure TestNotificationWithNoParameters;
|
|
[Test]
|
|
procedure TestIssue595;
|
|
end;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
{ TJSONRPCTest }
|
|
|
|
uses MVCFramework.JSONRPC, BusinessObjectsU, System.SysUtils;
|
|
|
|
procedure TTestJSONRPC.TestIssue595;
|
|
begin
|
|
Assert.WillRaise(
|
|
procedure
|
|
begin
|
|
raise EMVCJSONRPCRemoteException.Create(100, 'ErrMessage');
|
|
end,
|
|
EMVCJSONRPCRemoteException);
|
|
end;
|
|
|
|
procedure TTestJSONRPC.TestNotificationWithNoParameters;
|
|
var
|
|
lReq: IJSONRPCRequest;
|
|
begin
|
|
lReq := TJSONRPCRequest.Create; // FromString('{"jsonrpc": "2.0", "method": "subtract"}');
|
|
lReq.Method := 'subtract';
|
|
Assert.AreEqual(TJSONRPCRequestType.Notification, lReq.RequestType);
|
|
Assert.AreEqual(0, lReq.Params.Count);
|
|
Assert.AreEqual('subtract', lReq.Method);
|
|
end;
|
|
|
|
procedure TTestJSONRPC.TestRequestWithArrayParameters;
|
|
var
|
|
lReq: IJSONRPCRequest;
|
|
begin
|
|
lReq := TJSONRPCRequest.Create;
|
|
lReq.Method := 'subtract';
|
|
lReq.Params.Add(42);
|
|
lReq.Params.Add(23);
|
|
lReq.RequestID := 1;
|
|
Assert.AreEqual(1, lReq.RequestID.AsInteger);
|
|
Assert.AreEqual(42, lReq.Params[0].AsInteger);
|
|
Assert.AreEqual(23, lReq.Params[1].AsInteger);
|
|
Assert.AreEqual('subtract', lReq.Method);
|
|
end;
|
|
|
|
procedure TTestJSONRPC.TestRequestWithMalformedJSON;
|
|
begin
|
|
Assert.WillRaise(
|
|
procedure
|
|
var
|
|
lReq: IJSONRPCRequest;
|
|
begin
|
|
lReq := TJSONRPCRequest.Create;
|
|
lReq.AsJSONString := '{"jsonrpc": "2.0", this is wrong}';
|
|
end, EMVCJSONRPCParseError);
|
|
end;
|
|
|
|
procedure TTestJSONRPC.TestRequestWithMixedParamaters;
|
|
var
|
|
lReq: IJSONRPCRequest;
|
|
begin
|
|
lReq := TJSONRPCRequest.Create;
|
|
lReq.Method := 'subtract';
|
|
Assert.WillRaise(
|
|
procedure
|
|
begin
|
|
lReq.Params.AddByName('par1', 42);
|
|
lReq.Params.Add(42);
|
|
end, EMVCJSONRPCException);
|
|
|
|
lReq := TJSONRPCRequest.Create;
|
|
lReq.Method := 'subtract';
|
|
Assert.WillRaise(
|
|
procedure
|
|
begin
|
|
lReq.Params.Add(42);
|
|
lReq.Params.AddByName('par1', 42);
|
|
end, EMVCJSONRPCException);
|
|
end;
|
|
|
|
procedure TTestJSONRPC.TestRequestWithNamedParameters;
|
|
var
|
|
lReq: IJSONRPCRequest;
|
|
begin
|
|
lReq := TJSONRPCRequest.Create;
|
|
lReq.Method := 'subtract';
|
|
lReq.Params.AddByName('par1', 42);
|
|
lReq.Params.AddByName('PAR2', 23);
|
|
lReq.RequestID := 1;
|
|
Assert.AreEqual(1, lReq.RequestID.AsInteger);
|
|
Assert.AreEqual('par1', lReq.Params.ItemsName[0]);
|
|
Assert.AreEqual('par2', lReq.Params.ItemsName[1]);
|
|
Assert.AreEqual('subtract', lReq.Method);
|
|
end;
|
|
|
|
procedure TTestJSONRPC.TestRequestWithNoParameters;
|
|
var
|
|
lReq: IJSONRPCRequest;
|
|
begin
|
|
lReq := TJSONRPCRequest.Create;
|
|
lReq.AsJSONString := '{"jsonrpc": "2.0", "method": "subtract", "id": 1}';
|
|
Assert.AreEqual(1, lReq.RequestID.AsInteger);
|
|
Assert.AreEqual(0, lReq.Params.Count);
|
|
Assert.AreEqual('subtract', lReq.Method);
|
|
Assert.AreEqual(TJSONRPCRequestType.Request, lReq.RequestType);
|
|
end;
|
|
|
|
initialization
|
|
|
|
TDUnitX.RegisterTestFixture(TTestJSONRPC);
|
|
|
|
finalization
|
|
|
|
end.
|