Skip to content

Commit 8b07901

Browse files
committed
Add tests for header backend impl
1 parent bd17a21 commit 8b07901

5 files changed

Lines changed: 2533 additions & 0 deletions

File tree

internal/client/client_test.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)