github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/engine/testutil/mocklocal/local.go (about) 1 package mocklocal 2 3 import ( 4 "github.com/onflow/crypto" 5 "github.com/onflow/crypto/hash" 6 "github.com/stretchr/testify/mock" 7 "github.com/stretchr/testify/require" 8 9 "github.com/onflow/flow-go/model/flow" 10 "github.com/onflow/flow-go/model/flow/filter" 11 ) 12 13 // MockLocal represents a mock of Local 14 // We needed to develop a separate mock for Local as we could not mock 15 // a method with return values with gomock 16 type MockLocal struct { 17 sk crypto.PrivateKey 18 t mock.TestingT 19 id flow.Identifier 20 } 21 22 func NewMockLocal(sk crypto.PrivateKey, id flow.Identifier, t mock.TestingT) *MockLocal { 23 return &MockLocal{ 24 sk: sk, 25 t: t, 26 id: id, 27 } 28 } 29 30 func (m *MockLocal) NodeID() flow.Identifier { 31 return m.id 32 } 33 34 func (m *MockLocal) Address() string { 35 require.Fail(m.t, "should not call MockLocal Address") 36 return "" 37 } 38 39 func (m *MockLocal) Sign(msg []byte, hasher hash.Hasher) (crypto.Signature, error) { 40 return m.sk.Sign(msg, hasher) 41 } 42 43 func (m *MockLocal) MockNodeID(id flow.Identifier) { 44 m.id = id 45 } 46 47 func (m *MockLocal) NotMeFilter() flow.IdentityFilter[flow.Identity] { 48 return filter.Not(filter.HasNodeID[flow.Identity](m.id)) 49 } 50 51 func (m *MockLocal) SignFunc(data []byte, hasher hash.Hasher, f func(crypto.PrivateKey, []byte, hash.Hasher) (crypto.Signature, 52 error)) (crypto.Signature, error) { 53 return f(m.sk, data, hasher) 54 }