Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ $(eval $(call makemock, internal/broadcast, Manager, broadcast
$(eval $(call makemock, internal/privatemessaging, Manager, privatemessagingmocks))
$(eval $(call makemock, internal/shareddownload, Manager, shareddownloadmocks))
$(eval $(call makemock, internal/shareddownload, Callbacks, shareddownloadmocks))
$(eval $(call makemock, internal/definitions, DefinitionHandler, definitionsmocks))
$(eval $(call makemock, internal/defhandler, DefinitionHandler, defhandlermocks))
$(eval $(call makemock, internal/defsender, Sender, defsendermocks))
$(eval $(call makemock, internal/events, EventManager, eventmocks))
$(eval $(call makemock, internal/networkmap, Manager, networkmapmocks))
$(eval $(call makemock, internal/assets, Manager, assetmocks))
Expand Down
2 changes: 1 addition & 1 deletion internal/apiserver/route_post_new_datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ var postNewDatatype = &oapispec.Route{
JSONHandler: func(r *oapispec.APIRequest) (output interface{}, err error) {
waitConfirm := strings.EqualFold(r.QP["confirm"], "true")
r.SuccessStatus = syncRetcode(waitConfirm)
_, err = getOr(r.Ctx).Broadcast().BroadcastDatatype(r.Ctx, r.PP["ns"], r.Input.(*fftypes.Datatype), waitConfirm)
_, err = getOr(r.Ctx).DefinitionSender().BroadcastDatatype(r.Ctx, r.PP["ns"], r.Input.(*fftypes.Datatype), waitConfirm)
return r.Input, err
},
}
14 changes: 7 additions & 7 deletions internal/apiserver/route_post_new_datatype_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,24 @@ import (
"net/http/httptest"
"testing"

"github.com/hyperledger/firefly/mocks/broadcastmocks"
"github.com/hyperledger/firefly/mocks/defsendermocks"
"github.com/hyperledger/firefly/pkg/fftypes"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)

func TestPostNewDatatypes(t *testing.T) {
o, r := newTestAPIServer()
mbm := &broadcastmocks.Manager{}
o.On("Broadcast").Return(mbm)
mds := &defsendermocks.Sender{}
o.On("DefinitionSender").Return(mds)
input := fftypes.Datatype{}
var buf bytes.Buffer
json.NewEncoder(&buf).Encode(&input)
req := httptest.NewRequest("POST", "/api/v1/namespaces/ns1/datatypes", &buf)
req.Header.Set("Content-Type", "application/json; charset=utf-8")
res := httptest.NewRecorder()

mbm.On("BroadcastDatatype", mock.Anything, "ns1", mock.AnythingOfType("*fftypes.Datatype"), false).
mds.On("BroadcastDatatype", mock.Anything, "ns1", mock.AnythingOfType("*fftypes.Datatype"), false).
Return(&fftypes.Message{}, nil)
r.ServeHTTP(res, req)

Expand All @@ -48,16 +48,16 @@ func TestPostNewDatatypes(t *testing.T) {

func TestPostNewDatatypesSync(t *testing.T) {
o, r := newTestAPIServer()
mbm := &broadcastmocks.Manager{}
o.On("Broadcast").Return(mbm)
mds := &defsendermocks.Sender{}
o.On("DefinitionSender").Return(mds)
input := fftypes.Datatype{}
var buf bytes.Buffer
json.NewEncoder(&buf).Encode(&input)
req := httptest.NewRequest("POST", "/api/v1/namespaces/ns1/datatypes?confirm", &buf)
req.Header.Set("Content-Type", "application/json; charset=utf-8")
res := httptest.NewRecorder()

mbm.On("BroadcastDatatype", mock.Anything, "ns1", mock.AnythingOfType("*fftypes.Datatype"), true).
mds.On("BroadcastDatatype", mock.Anything, "ns1", mock.AnythingOfType("*fftypes.Datatype"), true).
Return(&fftypes.Message{}, nil)
r.ServeHTTP(res, req)

Expand Down
2 changes: 1 addition & 1 deletion internal/apiserver/route_post_new_namespace.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ var postNewNamespace = &oapispec.Route{
JSONHandler: func(r *oapispec.APIRequest) (output interface{}, err error) {
waitConfirm := strings.EqualFold(r.QP["confirm"], "true")
r.SuccessStatus = syncRetcode(waitConfirm)
_, err = getOr(r.Ctx).Broadcast().BroadcastNamespace(r.Ctx, r.Input.(*fftypes.Namespace), waitConfirm)
_, err = getOr(r.Ctx).DefinitionSender().BroadcastNamespace(r.Ctx, r.Input.(*fftypes.Namespace), waitConfirm)
return r.Input, err
},
}
14 changes: 7 additions & 7 deletions internal/apiserver/route_post_new_namespace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,24 @@ import (
"net/http/httptest"
"testing"

"github.com/hyperledger/firefly/mocks/broadcastmocks"
"github.com/hyperledger/firefly/mocks/defsendermocks"
"github.com/hyperledger/firefly/pkg/fftypes"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)

func TestPostNewNamespace(t *testing.T) {
o, r := newTestAPIServer()
mbm := &broadcastmocks.Manager{}
o.On("Broadcast").Return(mbm)
mds := &defsendermocks.Sender{}
o.On("DefinitionSender").Return(mds)
input := fftypes.Namespace{}
var buf bytes.Buffer
json.NewEncoder(&buf).Encode(&input)
req := httptest.NewRequest("POST", "/api/v1/namespaces", &buf)
req.Header.Set("Content-Type", "application/json; charset=utf-8")
res := httptest.NewRecorder()

mbm.On("BroadcastNamespace", mock.Anything, mock.AnythingOfType("*fftypes.Namespace"), false).
mds.On("BroadcastNamespace", mock.Anything, mock.AnythingOfType("*fftypes.Namespace"), false).
Return(&fftypes.Message{}, nil)
r.ServeHTTP(res, req)

Expand All @@ -48,16 +48,16 @@ func TestPostNewNamespace(t *testing.T) {

func TestPostNewNamespaceSync(t *testing.T) {
o, r := newTestAPIServer()
mbm := &broadcastmocks.Manager{}
o.On("Broadcast").Return(mbm)
mds := &defsendermocks.Sender{}
o.On("DefinitionSender").Return(mds)
input := fftypes.Namespace{}
var buf bytes.Buffer
json.NewEncoder(&buf).Encode(&input)
req := httptest.NewRequest("POST", "/api/v1/namespaces?confirm", &buf)
req.Header.Set("Content-Type", "application/json; charset=utf-8")
res := httptest.NewRecorder()

mbm.On("BroadcastNamespace", mock.Anything, mock.AnythingOfType("*fftypes.Namespace"), true).
mds.On("BroadcastNamespace", mock.Anything, mock.AnythingOfType("*fftypes.Namespace"), true).
Return(&fftypes.Message{}, nil)
r.ServeHTTP(res, req)

Expand Down
6 changes: 0 additions & 6 deletions internal/broadcast/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,7 @@ type Manager interface {
fftypes.Named

NewBroadcast(ns string, in *fftypes.MessageInOut) sysmessaging.MessageSender
BroadcastDatatype(ctx context.Context, ns string, datatype *fftypes.Datatype, waitConfirm bool) (msg *fftypes.Message, err error)
BroadcastNamespace(ctx context.Context, ns *fftypes.Namespace, waitConfirm bool) (msg *fftypes.Message, err error)
BroadcastMessage(ctx context.Context, ns string, in *fftypes.MessageInOut, waitConfirm bool) (out *fftypes.Message, err error)
BroadcastDefinitionAsNode(ctx context.Context, ns string, def fftypes.Definition, tag string, waitConfirm bool) (msg *fftypes.Message, err error)
BroadcastDefinition(ctx context.Context, ns string, def fftypes.Definition, signingIdentity *fftypes.SignerRef, tag string, waitConfirm bool) (msg *fftypes.Message, err error)
BroadcastIdentityClaim(ctx context.Context, ns string, def *fftypes.IdentityClaim, signingIdentity *fftypes.SignerRef, tag string, waitConfirm bool) (msg *fftypes.Message, err error)
BroadcastTokenPool(ctx context.Context, ns string, pool *fftypes.TokenPoolAnnouncement, waitConfirm bool) (msg *fftypes.Message, err error)
Start() error
WaitStop()

Expand Down
31 changes: 31 additions & 0 deletions internal/broadcast/message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,37 @@ func TestBroadcastMessageOk(t *testing.T) {
mdm.AssertExpectations(t)
}

func TestBroadcastMessageWriteFail(t *testing.T) {
bm, cancel := newTestBroadcastWithMetrics(t)
defer cancel()
mdm := bm.data.(*datamocks.Manager)
mim := bm.identity.(*identitymanagermocks.Manager)

ctx := context.Background()
mdm.On("ResolveInlineData", ctx, mock.Anything).Return(nil)
mdm.On("WriteNewMessage", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("pop"))
mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(nil)

msg, err := bm.BroadcastMessage(ctx, "ns1", &fftypes.MessageInOut{
Message: fftypes.Message{
Header: fftypes.MessageHeader{
SignerRef: fftypes.SignerRef{
Author: "did:firefly:org/abcd",
Key: "0x12345",
},
},
},
InlineData: fftypes.InlineData{
{Value: fftypes.JSONAnyPtr(`{"hello": "world"}`)},
},
}, false)
assert.EqualError(t, err, "pop")
assert.Equal(t, "ns1", msg.Header.Namespace)

mim.AssertExpectations(t)
mdm.AssertExpectations(t)
}

func TestBroadcastMessageWaitConfirmOk(t *testing.T) {
bm, cancel := newTestBroadcast(t)
defer cancel()
Expand Down
14 changes: 7 additions & 7 deletions internal/contracts/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import (
"fmt"
"strings"

"github.com/hyperledger/firefly/internal/broadcast"
"github.com/hyperledger/firefly/internal/coremsgs"
"github.com/hyperledger/firefly/internal/defsender"
"github.com/hyperledger/firefly/internal/identity"
"github.com/hyperledger/firefly/internal/operations"
"github.com/hyperledger/firefly/internal/syncasync"
Expand Down Expand Up @@ -69,16 +69,16 @@ type Manager interface {
type contractManager struct {
database database.Plugin
txHelper txcommon.Helper
broadcast broadcast.Manager
defsender defsender.Sender
identity identity.Manager
blockchain blockchain.Plugin
ffiParamValidator fftypes.FFIParamValidator
operations operations.Manager
syncasync syncasync.Bridge
}

func NewContractManager(ctx context.Context, di database.Plugin, bm broadcast.Manager, im identity.Manager, bi blockchain.Plugin, om operations.Manager, txHelper txcommon.Helper, sa syncasync.Bridge) (Manager, error) {
if di == nil || bm == nil || im == nil || bi == nil || om == nil || txHelper == nil || sa == nil {
func NewContractManager(ctx context.Context, di database.Plugin, ds defsender.Sender, im identity.Manager, bi blockchain.Plugin, om operations.Manager, txHelper txcommon.Helper, sa syncasync.Bridge) (Manager, error) {
if di == nil || ds == nil || im == nil || bi == nil || om == nil || txHelper == nil || sa == nil {
return nil, i18n.NewError(ctx, coremsgs.MsgInitializationNilDepError)
}
v, err := bi.GetFFIParamValidator(ctx)
Expand All @@ -89,7 +89,7 @@ func NewContractManager(ctx context.Context, di database.Plugin, bm broadcast.Ma
cm := &contractManager{
database: di,
txHelper: txHelper,
broadcast: bm,
defsender: ds,
identity: im,
blockchain: bi,
ffiParamValidator: v,
Expand Down Expand Up @@ -136,7 +136,7 @@ func (cm *contractManager) BroadcastFFI(ctx context.Context, ns string, ffi *fft
}

output = ffi
msg, err := cm.broadcast.BroadcastDefinitionAsNode(ctx, ns, ffi, fftypes.SystemTagDefineFFI, waitConfirm)
msg, err := cm.defsender.BroadcastDefinitionAsNode(ctx, ns, ffi, fftypes.SystemTagDefineFFI, waitConfirm)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -376,7 +376,7 @@ func (cm *contractManager) BroadcastContractAPI(ctx context.Context, httpServerU
return nil, err
}

msg, err := cm.broadcast.BroadcastDefinitionAsNode(ctx, ns, api, fftypes.SystemTagDefineContractAPI, waitConfirm)
msg, err := cm.defsender.BroadcastDefinitionAsNode(ctx, ns, api, fftypes.SystemTagDefineContractAPI, waitConfirm)
if err != nil {
return nil, err
}
Expand Down
Loading