Skip to content

Commit db6ecc7

Browse files
Demuirgoskamilchodola
authored andcommitted
Aligned with spec and added some tests (#6494)
1 parent 3913c8d commit db6ecc7

File tree

3 files changed

+52
-14
lines changed

3 files changed

+52
-14
lines changed

src/Nethermind/Nethermind.JsonRpc.Test/Modules/DebugModuleTests.cs

+39-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Linq;
7-
using System.Runtime.CompilerServices;
7+
using System.Text;
88
using System.Threading;
99
using System.Threading.Tasks;
1010
using FluentAssertions;
@@ -96,6 +96,19 @@ public async Task Get_block_rlp_by_hash()
9696
Assert.That((byte[]?)response?.Result, Is.EqualTo(rlp.Bytes));
9797
}
9898

99+
[Test]
100+
public async Task Get_raw_Header()
101+
{
102+
HeaderDecoder decoder = new();
103+
Block blk = Build.A.Block.WithNumber(0).TestObject;
104+
Rlp rlp = decoder.Encode(blk.Header);
105+
debugBridge.GetBlock(new BlockParameter((long)0)).Returns(blk);
106+
107+
DebugRpcModule rpcModule = new(LimboLogs.Instance, debugBridge, jsonRpcConfig);
108+
JsonRpcSuccessResponse? response = await RpcTest.TestRequest<IDebugRpcModule>(rpcModule, "debug_getRawHeader", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcSuccessResponse;
109+
Assert.That((byte[]?)response?.Result, Is.EqualTo(rlp.Bytes));
110+
}
111+
99112
[Test]
100113
public async Task Get_block_rlp()
101114
{
@@ -110,6 +123,20 @@ public async Task Get_block_rlp()
110123
Assert.That((byte[]?)response?.Result, Is.EqualTo(rlp.Bytes));
111124
}
112125

126+
[Test]
127+
public async Task Get_rawblock()
128+
{
129+
BlockDecoder decoder = new();
130+
IDebugBridge debugBridge = Substitute.For<IDebugBridge>();
131+
Rlp rlp = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);
132+
debugBridge.GetBlockRlp(new BlockParameter(1)).Returns(rlp.Bytes);
133+
134+
DebugRpcModule rpcModule = new(LimboLogs.Instance, debugBridge, jsonRpcConfig);
135+
JsonRpcSuccessResponse? response = await RpcTest.TestRequest<IDebugRpcModule>(rpcModule, "debug_getRawBlock", "1") as JsonRpcSuccessResponse;
136+
137+
Assert.That((byte[]?)response?.Result, Is.EqualTo(rlp.Bytes));
138+
}
139+
113140
[Test]
114141
public async Task Get_block_rlp_when_missing()
115142
{
@@ -121,6 +148,17 @@ public async Task Get_block_rlp_when_missing()
121148
Assert.That(response?.Error?.Code, Is.EqualTo(-32001));
122149
}
123150

151+
[Test]
152+
public async Task Get_rawblock_when_missing()
153+
{
154+
debugBridge.GetBlockRlp(new BlockParameter(1)).ReturnsNull();
155+
156+
DebugRpcModule rpcModule = new(LimboLogs.Instance, debugBridge, jsonRpcConfig);
157+
JsonRpcErrorResponse? response = await RpcTest.TestRequest<IDebugRpcModule>(rpcModule, "debug_getRawBlock", "1") as JsonRpcErrorResponse;
158+
159+
Assert.That(response?.Error?.Code, Is.EqualTo(-32001));
160+
}
161+
124162
[Test]
125163
public async Task Get_block_rlp_by_hash_when_missing()
126164
{

src/Nethermind/Nethermind.JsonRpc/Modules/DebugModule/DebugRpcModule.cs

+10-10
Original file line numberDiff line numberDiff line change
@@ -272,34 +272,34 @@ public ResultWrapper<byte[]> debug_getRawTransaction(Hash256 transactionHash)
272272
return ResultWrapper<byte[]>.Success(rlp.Bytes);
273273
}
274274

275-
public ResultWrapper<byte[][]> debug_getRawReceipts(long blockNumber)
275+
public ResultWrapper<byte[][]> debug_getRawReceipts(BlockParameter blockParameter)
276276
{
277-
var receipts = _debugBridge.GetReceiptsForBlock(new BlockParameter(blockNumber));
277+
var receipts = _debugBridge.GetReceiptsForBlock(blockParameter);
278278
if (receipts == null)
279279
{
280-
return ResultWrapper<byte[][]>.Fail($"Receipts are not found for block {blockNumber}", ErrorCodes.ResourceNotFound);
280+
return ResultWrapper<byte[][]>.Fail($"Receipts are not found for block {blockParameter}", ErrorCodes.ResourceNotFound);
281281
}
282282

283-
var rlp = receipts.Select(tx => Rlp.Encode(tx, RlpBehaviors.Eip658Receipts).Bytes);
283+
var rlp = receipts.Select(tx => Rlp.Encode(tx).Bytes);
284284
return ResultWrapper<byte[][]>.Success(rlp.ToArray());
285285
}
286286

287-
public ResultWrapper<byte[]> debug_getRawBlock(long blockNumber)
287+
public ResultWrapper<byte[]> debug_getRawBlock(BlockParameter blockParameter)
288288
{
289-
var blockRLP = _debugBridge.GetBlockRlp(new BlockParameter(blockNumber));
289+
var blockRLP = _debugBridge.GetBlockRlp(blockParameter);
290290
if (blockRLP == null)
291291
{
292-
return ResultWrapper<byte[]>.Fail($"Block {blockNumber} was not found", ErrorCodes.ResourceNotFound);
292+
return ResultWrapper<byte[]>.Fail($"Block {blockParameter} was not found", ErrorCodes.ResourceNotFound);
293293
}
294294
return ResultWrapper<byte[]>.Success(blockRLP);
295295
}
296296

297-
public ResultWrapper<byte[]> debug_getRawHeader(long blockNumber)
297+
public ResultWrapper<byte[]> debug_getRawHeader(BlockParameter blockParameter)
298298
{
299-
var block = _debugBridge.GetBlock(new BlockParameter(blockNumber));
299+
var block = _debugBridge.GetBlock(blockParameter);
300300
if (block == null)
301301
{
302-
return ResultWrapper<byte[]>.Fail($"Block {blockNumber} was not found", ErrorCodes.ResourceNotFound);
302+
return ResultWrapper<byte[]>.Fail($"Block {blockParameter} was not found", ErrorCodes.ResourceNotFound);
303303
}
304304
Rlp rlp = Rlp.Encode<BlockHeader>(block.Header);
305305
return ResultWrapper<byte[]>.Success(rlp.Bytes);

src/Nethermind/Nethermind.JsonRpc/Modules/DebugModule/IDebugRpcModule.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,13 @@ public interface IDebugRpcModule : IRpcModule
8989
Task<ResultWrapper<bool>> debug_insertReceipts(BlockParameter blockParameter, ReceiptForRpc[] receiptForRpc);
9090

9191
[JsonRpcMethod(Description = "Get Raw Block format.")]
92-
ResultWrapper<byte[]> debug_getRawBlock(long blockNumber);
92+
ResultWrapper<byte[]> debug_getRawBlock(BlockParameter blockParameter);
9393

9494
[JsonRpcMethod(Description = "Get Raw Receipt format.")]
95-
ResultWrapper<byte[][]> debug_getRawReceipts(long blockNumber);
95+
ResultWrapper<byte[][]> debug_getRawReceipts(BlockParameter blockParameter);
9696

9797
[JsonRpcMethod(Description = "Get Raw Header format.")]
98-
ResultWrapper<byte[]> debug_getRawHeader(long blockNumber);
98+
ResultWrapper<byte[]> debug_getRawHeader(BlockParameter blockParameter);
9999

100100
[JsonRpcMethod(Description = "Get Raw Transaction format.")]
101101
ResultWrapper<byte[]> debug_getRawTransaction(Hash256 transactionHash);

0 commit comments

Comments
 (0)