@@ -9,8 +9,10 @@ import (
99
1010 "github.com/ChainSafe/gossamer/internal/client/api"
1111 "github.com/ChainSafe/gossamer/internal/client/db"
12+ "github.com/ChainSafe/gossamer/internal/client/mocks"
1213 statedb "github.com/ChainSafe/gossamer/internal/client/state-db"
1314 memorykvdb "github.com/ChainSafe/gossamer/internal/kvdb/memory-kvdb"
15+ "github.com/ChainSafe/gossamer/internal/primitives/blockchain"
1416 "github.com/ChainSafe/gossamer/internal/primitives/core/hash"
1517 "github.com/ChainSafe/gossamer/internal/primitives/database"
1618 "github.com/ChainSafe/gossamer/internal/primitives/runtime"
@@ -337,3 +339,93 @@ func TestPreCommitActions(t *testing.T) {
337339 require .Equal (t , 2 , count )
338340 })
339341}
342+
343+ func TestHeaderBackendImplementation (t * testing.T ) {
344+ backendMock := mocks.NewBackend [hash.H256 , uint64 , runtime.BlakeTwo256 , * generic.Header [uint64 , hash.H256 , runtime.BlakeTwo256 ],
345+ runtime.OpaqueExtrinsic ](t )
346+
347+ blockchainMock := mocks.NewBlockchainBackend [hash.H256 , uint64 , * generic.Header [uint64 , hash.H256 , runtime.BlakeTwo256 ], runtime.OpaqueExtrinsic ](t )
348+
349+ expectedHeader := generic .NewHeader [uint64 , hash.H256 , runtime.BlakeTwo256 ](
350+ 1 ,
351+ hash .H256 ("extrinsicsroot" ),
352+ hash .H256 ("stateroot" ),
353+ hash .H256 ("parent" ),
354+ runtime.Digest {},
355+ )
356+ expectedHash := expectedHeader .Hash ()
357+ expectedNumber := expectedHeader .Number ()
358+
359+ blockchainMock .EXPECT ().Header (expectedHash ).Return (& expectedHeader , nil )
360+ blockchainMock .EXPECT ().Number (expectedHash ).Return (& expectedNumber , nil )
361+ blockchainMock .EXPECT ().Hash (expectedNumber ).Return (& expectedHash , nil )
362+
363+ expectedExtrinsics := []runtime.OpaqueExtrinsic {}
364+ blockchainMock .EXPECT ().Body (expectedHash ).Return (expectedExtrinsics , nil )
365+
366+ expectedInfo := blockchain.Info [hash.H256 , uint64 ]{
367+ BestHash : expectedHash ,
368+ BestNumber : expectedHeader .Number (),
369+ GenesisHash : expectedHeader .ParentHash (),
370+ FinalizedHash : expectedHash ,
371+ FinalizedNumber : expectedHeader .Number (),
372+ FinalizedState : nil ,
373+ }
374+ blockchainMock .EXPECT ().Info ().Return (expectedInfo )
375+
376+ expectedStatus := blockchain .BlockStatusInChain
377+ blockchainMock .EXPECT ().Status (expectedHash ).Return (expectedStatus , nil )
378+
379+ blockNumberId := generic.NewBlockID [hash.H256 , uint64 ](generic.BlockIDNumber [uint64 ]{Number : expectedNumber })
380+ blockHashId := generic.NewBlockID [hash.H256 , uint64 ](generic.BlockIDHash [hash.H256 ]{Hash : expectedHash })
381+ blockchainMock .EXPECT ().BlockHashFromID (blockNumberId ).Return (& expectedHash , nil )
382+ blockchainMock .EXPECT ().BlockNumberFromID (blockHashId ).Return (& expectedNumber , nil )
383+
384+ backendMock .EXPECT ().Blockchain ().Return (blockchainMock )
385+
386+ c := New (backendMock )
387+
388+ // Get Header
389+ header , err := c .Header (expectedHash )
390+ require .NoError (t , err )
391+ require .NotNil (t , header )
392+ require .Equal (t , expectedHeader , * header )
393+
394+ // Get Body
395+ extrinsics , err := c .Body (expectedHash )
396+ require .NoError (t , err )
397+ require .Equal (t , expectedExtrinsics , extrinsics )
398+
399+ // Get Info
400+ info := c .Info ()
401+ require .Equal (t , expectedInfo , info )
402+
403+ // Get Status
404+ status , err := c .Status (expectedHash )
405+ require .NoError (t , err )
406+ require .Equal (t , expectedStatus , status )
407+
408+ // Get Number
409+ number , err := c .Number (expectedHash )
410+ require .NoError (t , err )
411+ require .NotNil (t , number )
412+ require .Equal (t , expectedNumber , * number )
413+
414+ // Get Number
415+ hash , err := c .Hash (expectedNumber )
416+ require .NoError (t , err )
417+ require .NotNil (t , hash )
418+ require .Equal (t , expectedHash , * hash )
419+
420+ // Get BlockHashFromID
421+ blockHash , err := c .BlockHashFromID (blockNumberId )
422+ require .NoError (t , err )
423+ require .NotNil (t , blockHash )
424+ require .Equal (t , expectedHash , * blockHash )
425+
426+ // Get BlockNumberFromId
427+ blockNumber , err := c .BlockNumberFromID (blockHashId )
428+ require .NoError (t , err )
429+ require .NotNil (t , blockNumber )
430+ require .Equal (t , expectedNumber , * blockNumber )
431+ }
0 commit comments