From d001e7b0b0a18d1d28b25085ce335720e8d81e77 Mon Sep 17 00:00:00 2001 From: Andrew Richardson Date: Tue, 14 Jun 2022 15:03:04 -0400 Subject: [PATCH 1/2] Remove namespace from identity manager calls The manager is initialized for a single namespace and can assume all calls are scoped within that namespace. The one exception is for "network version 1", where identities may have been registered on the legacy "ff_system" namespace. In this case, the identity manager will query "ff_system" instead of its assigned namespace (noting that this will only work if "ff_system" shares a database with that namespace). Signed-off-by: Andrew Richardson --- internal/apiserver/route_get_status.go | 2 +- internal/apiserver/route_get_status_test.go | 2 +- .../apiserver/route_patch_update_identity.go | 2 +- .../route_patch_update_identity_test.go | 2 +- .../apiserver/route_post_network_action.go | 2 +- .../route_post_network_action_test.go | 2 +- internal/apiserver/route_post_new_identity.go | 2 +- .../apiserver/route_post_new_identity_test.go | 2 +- .../apiserver/route_post_new_node_self.go | 2 +- .../route_post_new_node_self_test.go | 2 +- .../apiserver/route_post_new_organization.go | 2 +- .../route_post_new_organization_self.go | 2 +- .../route_post_new_organization_self_test.go | 2 +- .../route_post_new_organization_test.go | 2 +- internal/assets/token_approval.go | 2 +- internal/assets/token_approval_test.go | 22 ++-- internal/assets/token_pool.go | 2 +- internal/assets/token_pool_test.go | 18 +-- internal/assets/token_transfer.go | 2 +- internal/assets/token_transfer_test.go | 40 +++--- internal/broadcast/datatype_test.go | 6 +- internal/broadcast/definition.go | 4 +- internal/broadcast/definition_test.go | 10 +- internal/broadcast/message.go | 2 +- internal/broadcast/message_test.go | 12 +- internal/broadcast/tokenpool_test.go | 4 +- internal/contracts/manager.go | 2 +- internal/contracts/manager_test.go | 26 ++-- .../definition_handler_network_node.go | 2 +- .../definition_handler_network_node_test.go | 6 +- internal/events/aggregator.go | 2 +- internal/events/aggregator_test.go | 52 ++++---- internal/events/dx_callbacks.go | 8 +- internal/events/dx_callbacks_test.go | 58 ++++----- internal/events/network_action.go | 2 +- internal/events/network_action_test.go | 10 +- internal/identity/identitymanager.go | 114 ++++++++--------- internal/identity/identitymanager_test.go | 80 ++++++------ internal/networkmap/data_query.go | 4 +- internal/networkmap/data_query_test.go | 8 +- internal/networkmap/did_test.go | 4 +- internal/networkmap/manager.go | 14 ++- internal/networkmap/manager_test.go | 4 +- internal/networkmap/register_identity.go | 8 +- internal/networkmap/register_identity_test.go | 30 ++--- internal/networkmap/register_node.go | 6 +- internal/networkmap/register_node_test.go | 12 +- internal/networkmap/register_org.go | 10 +- internal/networkmap/register_org_test.go | 12 +- internal/networkmap/update_identity.go | 8 +- internal/networkmap/update_identity_test.go | 14 +-- internal/orchestrator/orchestrator.go | 18 +-- internal/orchestrator/orchestrator_test.go | 19 +-- internal/orchestrator/status.go | 12 +- internal/orchestrator/status_test.go | 34 ++--- internal/privatemessaging/message.go | 2 +- internal/privatemessaging/message_test.go | 56 ++++----- internal/privatemessaging/privatemessaging.go | 2 +- .../privatemessaging/privatemessaging_test.go | 10 +- internal/privatemessaging/recipients.go | 6 +- internal/privatemessaging/recipients_test.go | 32 ++--- mocks/identitymanagermocks/manager.go | 116 +++++++++--------- mocks/networkmapmocks/manager.go | 70 +++++------ mocks/orchestratormocks/orchestrator.go | 24 ++-- 64 files changed, 526 insertions(+), 523 deletions(-) diff --git a/internal/apiserver/route_get_status.go b/internal/apiserver/route_get_status.go index 4270edccc5..cdcb31ab02 100644 --- a/internal/apiserver/route_get_status.go +++ b/internal/apiserver/route_get_status.go @@ -36,7 +36,7 @@ var getStatus = &ffapi.Route{ JSONOutputCodes: []int{http.StatusOK}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - output, err = cr.or.GetStatus(cr.ctx, extractNamespace(r.PP)) + output, err = cr.or.GetStatus(cr.ctx) return output, err }, }, diff --git a/internal/apiserver/route_get_status_test.go b/internal/apiserver/route_get_status_test.go index a8ef1cd979..e64a1169da 100644 --- a/internal/apiserver/route_get_status_test.go +++ b/internal/apiserver/route_get_status_test.go @@ -31,7 +31,7 @@ func TestGetStatus(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - o.On("GetStatus", mock.Anything, "default"). + o.On("GetStatus", mock.Anything). Return(&core.NodeStatus{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_patch_update_identity.go b/internal/apiserver/route_patch_update_identity.go index 9a08b3d3df..c70b877df4 100644 --- a/internal/apiserver/route_patch_update_identity.go +++ b/internal/apiserver/route_patch_update_identity.go @@ -43,7 +43,7 @@ var patchUpdateIdentity = &ffapi.Route{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { waitConfirm := strings.EqualFold(r.QP["confirm"], "true") r.SuccessStatus = syncRetcode(waitConfirm) - org, err := cr.or.NetworkMap().UpdateIdentity(cr.ctx, extractNamespace(r.PP), r.PP["iid"], r.Input.(*core.IdentityUpdateDTO), waitConfirm) + org, err := cr.or.NetworkMap().UpdateIdentity(cr.ctx, r.PP["iid"], r.Input.(*core.IdentityUpdateDTO), waitConfirm) return org, err }, }, diff --git a/internal/apiserver/route_patch_update_identity_test.go b/internal/apiserver/route_patch_update_identity_test.go index e275ba92ee..e017a4f2d6 100644 --- a/internal/apiserver/route_patch_update_identity_test.go +++ b/internal/apiserver/route_patch_update_identity_test.go @@ -39,7 +39,7 @@ func TestUpdateIdentity(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("UpdateIdentity", mock.Anything, "ns1", "id1", mock.AnythingOfType("*core.IdentityUpdateDTO"), false). + mnm.On("UpdateIdentity", mock.Anything, "id1", mock.AnythingOfType("*core.IdentityUpdateDTO"), false). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_post_network_action.go b/internal/apiserver/route_post_network_action.go index af36c4482f..061ab95413 100644 --- a/internal/apiserver/route_post_network_action.go +++ b/internal/apiserver/route_post_network_action.go @@ -36,7 +36,7 @@ var postNetworkAction = &ffapi.Route{ JSONOutputCodes: []int{http.StatusAccepted}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - err = cr.or.SubmitNetworkAction(cr.ctx, extractNamespace(r.PP), r.Input.(*core.NetworkAction)) + err = cr.or.SubmitNetworkAction(cr.ctx, r.Input.(*core.NetworkAction)) return r.Input, err }, }, diff --git a/internal/apiserver/route_post_network_action_test.go b/internal/apiserver/route_post_network_action_test.go index 08be427ce3..fe401d2586 100644 --- a/internal/apiserver/route_post_network_action_test.go +++ b/internal/apiserver/route_post_network_action_test.go @@ -36,7 +36,7 @@ func TestPostNetworkAction(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - o.On("SubmitNetworkAction", mock.Anything, "default", mock.AnythingOfType("*core.NetworkAction")).Return(nil) + o.On("SubmitNetworkAction", mock.Anything, mock.AnythingOfType("*core.NetworkAction")).Return(nil) r.ServeHTTP(res, req) assert.Equal(t, 202, res.Result().StatusCode) diff --git a/internal/apiserver/route_post_new_identity.go b/internal/apiserver/route_post_new_identity.go index 3cbc53dc3d..2625057cae 100644 --- a/internal/apiserver/route_post_new_identity.go +++ b/internal/apiserver/route_post_new_identity.go @@ -41,7 +41,7 @@ var postNewIdentity = &ffapi.Route{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { waitConfirm := strings.EqualFold(r.QP["confirm"], "true") r.SuccessStatus = syncRetcode(waitConfirm) - org, err := cr.or.NetworkMap().RegisterIdentity(cr.ctx, extractNamespace(r.PP), r.Input.(*core.IdentityCreateDTO), waitConfirm) + org, err := cr.or.NetworkMap().RegisterIdentity(cr.ctx, r.Input.(*core.IdentityCreateDTO), waitConfirm) return org, err }, }, diff --git a/internal/apiserver/route_post_new_identity_test.go b/internal/apiserver/route_post_new_identity_test.go index c19bb18c93..c74bfadae2 100644 --- a/internal/apiserver/route_post_new_identity_test.go +++ b/internal/apiserver/route_post_new_identity_test.go @@ -39,7 +39,7 @@ func TestNewIdentity(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("RegisterIdentity", mock.Anything, "ns1", mock.AnythingOfType("*core.IdentityCreateDTO"), false). + mnm.On("RegisterIdentity", mock.Anything, mock.AnythingOfType("*core.IdentityCreateDTO"), false). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_post_new_node_self.go b/internal/apiserver/route_post_new_node_self.go index 4df08250d3..47a24990aa 100644 --- a/internal/apiserver/route_post_new_node_self.go +++ b/internal/apiserver/route_post_new_node_self.go @@ -41,7 +41,7 @@ var postNodesSelf = &ffapi.Route{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { waitConfirm := strings.EqualFold(r.QP["confirm"], "true") r.SuccessStatus = syncRetcode(waitConfirm) - node, err := cr.or.NetworkMap().RegisterNode(cr.ctx, extractNamespace(r.PP), waitConfirm) + node, err := cr.or.NetworkMap().RegisterNode(cr.ctx, waitConfirm) return node, err }, }, diff --git a/internal/apiserver/route_post_new_node_self_test.go b/internal/apiserver/route_post_new_node_self_test.go index acdc0c5c93..aa0ab0f69b 100644 --- a/internal/apiserver/route_post_new_node_self_test.go +++ b/internal/apiserver/route_post_new_node_self_test.go @@ -39,7 +39,7 @@ func TestPostNewNodeSelf(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("RegisterNode", mock.Anything, "default", false). + mnm.On("RegisterNode", mock.Anything, false). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_post_new_organization.go b/internal/apiserver/route_post_new_organization.go index 97ff10ced7..1309e17b78 100644 --- a/internal/apiserver/route_post_new_organization.go +++ b/internal/apiserver/route_post_new_organization.go @@ -41,7 +41,7 @@ var postNewOrganization = &ffapi.Route{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { waitConfirm := strings.EqualFold(r.QP["confirm"], "true") r.SuccessStatus = syncRetcode(waitConfirm) - _, err = cr.or.NetworkMap().RegisterOrganization(cr.ctx, extractNamespace(r.PP), r.Input.(*core.IdentityCreateDTO), waitConfirm) + _, err = cr.or.NetworkMap().RegisterOrganization(cr.ctx, r.Input.(*core.IdentityCreateDTO), waitConfirm) return r.Input, err }, }, diff --git a/internal/apiserver/route_post_new_organization_self.go b/internal/apiserver/route_post_new_organization_self.go index e47d75707d..629aa6bc2e 100644 --- a/internal/apiserver/route_post_new_organization_self.go +++ b/internal/apiserver/route_post_new_organization_self.go @@ -41,7 +41,7 @@ var postNewOrganizationSelf = &ffapi.Route{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { waitConfirm := strings.EqualFold(r.QP["confirm"], "true") r.SuccessStatus = syncRetcode(waitConfirm) - org, err := cr.or.NetworkMap().RegisterNodeOrganization(cr.ctx, extractNamespace(r.PP), waitConfirm) + org, err := cr.or.NetworkMap().RegisterNodeOrganization(cr.ctx, waitConfirm) return org, err }, }, diff --git a/internal/apiserver/route_post_new_organization_self_test.go b/internal/apiserver/route_post_new_organization_self_test.go index 7a7353ec3b..e9900f1f8b 100644 --- a/internal/apiserver/route_post_new_organization_self_test.go +++ b/internal/apiserver/route_post_new_organization_self_test.go @@ -39,7 +39,7 @@ func TestNewOrganizationSelf(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("RegisterNodeOrganization", mock.Anything, "default", false). + mnm.On("RegisterNodeOrganization", mock.Anything, false). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_post_new_organization_test.go b/internal/apiserver/route_post_new_organization_test.go index e859e59019..bdcaaadd70 100644 --- a/internal/apiserver/route_post_new_organization_test.go +++ b/internal/apiserver/route_post_new_organization_test.go @@ -39,7 +39,7 @@ func TestNewOrganization(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("RegisterOrganization", mock.Anything, "default", mock.AnythingOfType("*core.IdentityCreateDTO"), false). + mnm.On("RegisterOrganization", mock.Anything, mock.AnythingOfType("*core.IdentityCreateDTO"), false). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/assets/token_approval.go b/internal/assets/token_approval.go index 26679935cb..42d3bb093e 100644 --- a/internal/assets/token_approval.go +++ b/internal/assets/token_approval.go @@ -145,6 +145,6 @@ func (am *assetManager) validateApproval(ctx context.Context, ns string, approva if pool.State != core.TokenPoolStateConfirmed { return nil, i18n.NewError(ctx, coremsgs.MsgTokenPoolNotConfirmed) } - approval.Key, err = am.identity.NormalizeSigningKey(ctx, ns, approval.Key, am.keyNormalization) + approval.Key, err = am.identity.NormalizeSigningKey(ctx, approval.Key, am.keyNormalization) return pool, err } diff --git a/internal/assets/token_approval_test.go b/internal/assets/token_approval_test.go index 04e6aef1ce..52a045fcd4 100644 --- a/internal/assets/token_approval_test.go +++ b/internal/assets/token_approval_test.go @@ -69,7 +69,7 @@ func TestTokenApprovalSuccess(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenApproval).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -108,7 +108,7 @@ func TestTokenApprovalSuccessUnknownIdentity(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenApproval).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -165,7 +165,7 @@ func TestApprovalBadConnector(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.TokenApproval(context.Background(), "ns1", approval, false) @@ -206,7 +206,7 @@ func TestApprovalDefaultPoolSuccess(t *testing.T) { filterResult := &database.FilterResult{ TotalCount: &totalCount, } - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPools", context.Background(), mock.MatchedBy((func(f database.AndFilter) bool { info, _ := f.Finalize() return info.Count && info.Limit == 1 @@ -272,7 +272,7 @@ func TestApprovalBadPool(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(nil, fmt.Errorf("pop")) _, err := am.TokenApproval(context.Background(), "ns1", approval, false) @@ -324,7 +324,7 @@ func TestApprovalIdentityFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.TokenApproval(context.Background(), "ns1", approval, false) @@ -356,7 +356,7 @@ func TestApprovalFail(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenApproval).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -394,7 +394,7 @@ func TestApprovalTransactionFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenApproval).Return(nil, fmt.Errorf("pop")) @@ -427,7 +427,7 @@ func TestApprovalOperationsFail(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenApproval).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(fmt.Errorf("pop")) @@ -460,7 +460,7 @@ func TestTokenApprovalConfirm(t *testing.T) { msa := am.syncasync.(*syncasyncmocks.Bridge) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenApproval).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -508,7 +508,7 @@ func TestApprovalPrepare(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "key", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) err := sender.Prepare(context.Background()) diff --git a/internal/assets/token_pool.go b/internal/assets/token_pool.go index 2134d4f82a..67c670710d 100644 --- a/internal/assets/token_pool.go +++ b/internal/assets/token_pool.go @@ -52,7 +52,7 @@ func (am *assetManager) CreateTokenPool(ctx context.Context, ns string, pool *co } var err error - pool.Key, err = am.identity.NormalizeSigningKey(ctx, ns, pool.Key, am.keyNormalization) + pool.Key, err = am.identity.NormalizeSigningKey(ctx, pool.Key, am.keyNormalization) if err != nil { return nil, err } diff --git a/internal/assets/token_pool_test.go b/internal/assets/token_pool_test.go index 1df083b87c..569d59631f 100644 --- a/internal/assets/token_pool_test.go +++ b/internal/assets/token_pool_test.go @@ -100,7 +100,7 @@ func TestCreateTokenPoolDefaultConnectorSuccess(t *testing.T) { mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("resolved-key", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("resolved-key", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -215,7 +215,7 @@ func TestCreateTokenPoolIdentityFail(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) _, err := am.CreateTokenPool(context.Background(), "ns1", pool, false) assert.EqualError(t, err, "pop") @@ -238,7 +238,7 @@ func TestCreateTokenPoolWrongConnector(t *testing.T) { mdm := am.data.(*datamocks.Manager) mim := am.identity.(*identitymanagermocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) _, err := am.CreateTokenPool(context.Background(), "ns1", pool, false) @@ -264,7 +264,7 @@ func TestCreateTokenPoolFail(t *testing.T) { mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -297,7 +297,7 @@ func TestCreateTokenPoolTransactionFail(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(nil, fmt.Errorf("pop")) @@ -324,7 +324,7 @@ func TestCreateTokenPoolOpInsertFail(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(fmt.Errorf("pop")) @@ -353,7 +353,7 @@ func TestCreateTokenPoolSyncSuccess(t *testing.T) { mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -387,7 +387,7 @@ func TestCreateTokenPoolAsyncSuccess(t *testing.T) { mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -423,7 +423,7 @@ func TestCreateTokenPoolConfirm(t *testing.T) { mom := am.operations.(*operationmocks.Manager) mdi.On("GetTokenPool", context.Background(), "ns1", "testpool").Return(nil, nil) mdm.On("VerifyNamespaceExists", context.Background(), "ns1").Return(nil) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenPool).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) msa.On("WaitForTokenPool", context.Background(), "ns1", mock.Anything, mock.Anything). diff --git a/internal/assets/token_transfer.go b/internal/assets/token_transfer.go index 02d4d354e4..9b4cbabf92 100644 --- a/internal/assets/token_transfer.go +++ b/internal/assets/token_transfer.go @@ -106,7 +106,7 @@ func (am *assetManager) validateTransfer(ctx context.Context, ns string, transfe if pool.State != core.TokenPoolStateConfirmed { return nil, i18n.NewError(ctx, coremsgs.MsgTokenPoolNotConfirmed) } - if transfer.Key, err = am.identity.NormalizeSigningKey(ctx, ns, transfer.Key, am.keyNormalization); err != nil { + if transfer.Key, err = am.identity.NormalizeSigningKey(ctx, transfer.Key, am.keyNormalization); err != nil { return nil, err } if transfer.From == "" { diff --git a/internal/assets/token_transfer_test.go b/internal/assets/token_transfer_test.go index 3e9af842ea..3faed28454 100644 --- a/internal/assets/token_transfer_test.go +++ b/internal/assets/token_transfer_test.go @@ -91,7 +91,7 @@ func TestMintTokensSuccess(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -126,7 +126,7 @@ func TestMintTokensBadConnector(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.MintTokens(context.Background(), "ns1", mint, false) @@ -179,7 +179,7 @@ func TestMintTokenDefaultPoolSuccess(t *testing.T) { filterResult := &database.FilterResult{ TotalCount: &totalCount, } - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPools", context.Background(), mock.MatchedBy((func(f database.AndFilter) bool { info, _ := f.Finalize() return info.Count && info.Limit == 1 @@ -337,7 +337,7 @@ func TestMintTokensIdentityFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.MintTokens(context.Background(), "ns1", mint, false) @@ -366,7 +366,7 @@ func TestMintTokensFail(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -403,7 +403,7 @@ func TestMintTokensOperationFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(fmt.Errorf("pop")) @@ -437,7 +437,7 @@ func TestMintTokensConfirm(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -480,7 +480,7 @@ func TestBurnTokensSuccess(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -515,7 +515,7 @@ func TestBurnTokensIdentityFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.BurnTokens(context.Background(), "ns1", burn, false) @@ -546,7 +546,7 @@ func TestBurnTokensConfirm(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -592,7 +592,7 @@ func TestTransferTokensSuccess(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -656,7 +656,7 @@ func TestTransferTokensIdentityFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.TransferTokens(context.Background(), "ns1", transfer, false) @@ -680,7 +680,7 @@ func TestTransferTokensNoFromOrTo(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) _, err := am.TransferTokens(context.Background(), "ns1", transfer, false) @@ -711,7 +711,7 @@ func TestTransferTokensTransactionFail(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(nil, fmt.Errorf("pop")) @@ -761,7 +761,7 @@ func TestTransferTokensWithBroadcastMessage(t *testing.T) { mms := &sysmessagingmocks.MessageSender{} mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -824,7 +824,7 @@ func TestTransferTokensWithBroadcastMessageSendFail(t *testing.T) { mms := &sysmessagingmocks.MessageSender{} mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -916,7 +916,7 @@ func TestTransferTokensWithPrivateMessage(t *testing.T) { mms := &sysmessagingmocks.MessageSender{} mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -993,7 +993,7 @@ func TestTransferTokensConfirm(t *testing.T) { mim := am.identity.(*identitymanagermocks.Manager) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) @@ -1058,7 +1058,7 @@ func TestTransferTokensWithBroadcastConfirm(t *testing.T) { msa := am.syncasync.(*syncasyncmocks.Bridge) mth := am.txHelper.(*txcommonmocks.Helper) mom := am.operations.(*operationmocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) mdi.On("InsertOperation", context.Background(), mock.Anything).Return(nil) mth.On("SubmitNewTransaction", context.Background(), "ns1", core.TransactionTypeTokenTransfer).Return(fftypes.NewUUID(), nil) @@ -1139,7 +1139,7 @@ func TestTransferPrepare(t *testing.T) { mdi := am.database.(*databasemocks.Plugin) mim := am.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", context.Background(), "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) + mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x12345", nil) mdi.On("GetTokenPool", context.Background(), "ns1", "pool1").Return(pool, nil) err := sender.Prepare(context.Background()) diff --git a/internal/broadcast/datatype_test.go b/internal/broadcast/datatype_test.go index 7caf092d37..6878330cbd 100644 --- a/internal/broadcast/datatype_test.go +++ b/internal/broadcast/datatype_test.go @@ -61,7 +61,7 @@ func TestBroadcastDatatypeBadValue(t *testing.T) { mdm.On("VerifyNamespaceExists", mock.Anything, "ns1").Return(nil) mdm.On("CheckDatatype", mock.Anything, "ns1", mock.Anything).Return(nil) mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) _, err := bm.BroadcastDatatype(context.Background(), "ns1", &core.Datatype{ Namespace: "ns1", Name: "ent1", @@ -77,7 +77,7 @@ func TestBroadcastUpsertFail(t *testing.T) { mdm := bm.data.(*datamocks.Manager) mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) mdm.On("WriteNewMessage", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("pop")) mdm.On("VerifyNamespaceExists", mock.Anything, "ns1").Return(nil) mdm.On("CheckDatatype", mock.Anything, "ns1", mock.Anything).Return(nil) @@ -121,7 +121,7 @@ func TestBroadcastOk(t *testing.T) { mdm := bm.data.(*datamocks.Manager) mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) mdm.On("VerifyNamespaceExists", mock.Anything, "ns1").Return(nil) mdm.On("CheckDatatype", mock.Anything, "ns1", mock.Anything).Return(nil) mdm.On("WriteNewMessage", mock.Anything, mock.Anything, mock.Anything).Return(nil) diff --git a/internal/broadcast/definition.go b/internal/broadcast/definition.go index 1373a6312b..f5549f0ff8 100644 --- a/internal/broadcast/definition.go +++ b/internal/broadcast/definition.go @@ -34,7 +34,7 @@ func (bm *broadcastManager) BroadcastDefinitionAsNode(ctx context.Context, ns st func (bm *broadcastManager) BroadcastDefinition(ctx context.Context, ns string, def core.Definition, signingIdentity *core.SignerRef, tag string, waitConfirm bool) (msg *core.Message, err error) { - err = bm.identity.ResolveInputSigningIdentity(ctx, ns, signingIdentity) + err = bm.identity.ResolveInputSigningIdentity(ctx, signingIdentity) if err != nil { return nil, err } @@ -46,7 +46,7 @@ func (bm *broadcastManager) BroadcastDefinition(ctx context.Context, ns string, // The blockchain "key" will be normalized, but the "author" will pass through unchecked func (bm *broadcastManager) BroadcastIdentityClaim(ctx context.Context, ns string, def *core.IdentityClaim, signingIdentity *core.SignerRef, tag string, waitConfirm bool) (msg *core.Message, err error) { - signingIdentity.Key, err = bm.identity.NormalizeSigningKey(ctx, ns, signingIdentity.Key, identity.KeyNormalizationBlockchainPlugin) + signingIdentity.Key, err = bm.identity.NormalizeSigningKey(ctx, signingIdentity.Key, identity.KeyNormalizationBlockchainPlugin) if err != nil { return nil, err } diff --git a/internal/broadcast/definition_test.go b/internal/broadcast/definition_test.go index 8004c7a84d..cc440c6e97 100644 --- a/internal/broadcast/definition_test.go +++ b/internal/broadcast/definition_test.go @@ -35,7 +35,7 @@ func TestBroadcastDefinitionAsNodeConfirm(t *testing.T) { msa := bm.syncasync.(*syncasyncmocks.Bridge) mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) msa.On("WaitForMessage", bm.ctx, "ns1", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) _, err := bm.BroadcastDefinitionAsNode(bm.ctx, "ns1", &core.Namespace{}, core.SystemTagDefineNamespace, true) @@ -52,7 +52,7 @@ func TestBroadcastIdentityClaim(t *testing.T) { msa := bm.syncasync.(*syncasyncmocks.Bridge) mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "0x1234", identity.KeyNormalizationBlockchainPlugin).Return("", nil) + mim.On("NormalizeSigningKey", mock.Anything, "0x1234", identity.KeyNormalizationBlockchainPlugin).Return("", nil) msa.On("WaitForMessage", bm.ctx, "ns1", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) _, err := bm.BroadcastIdentityClaim(bm.ctx, "ns1", &core.IdentityClaim{ @@ -72,7 +72,7 @@ func TestBroadcastIdentityClaimFail(t *testing.T) { mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "0x1234", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", mock.Anything, "0x1234", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) _, err := bm.BroadcastIdentityClaim(bm.ctx, "ns1", &core.IdentityClaim{ Identity: &core.Identity{}, @@ -92,7 +92,7 @@ func TestBroadcastDatatypeDefinitionAsNodeConfirm(t *testing.T) { mim := bm.identity.(*identitymanagermocks.Manager) ns := "customNamespace" - mim.On("ResolveInputSigningIdentity", mock.Anything, ns, mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) msa.On("WaitForMessage", bm.ctx, ns, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) _, err := bm.BroadcastDefinitionAsNode(bm.ctx, ns, &core.Datatype{}, core.SystemTagDefineNamespace, true) @@ -107,7 +107,7 @@ func TestBroadcastDefinitionBadIdentity(t *testing.T) { defer cancel() mim := bm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(fmt.Errorf("pop")) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(fmt.Errorf("pop")) _, err := bm.BroadcastDefinition(bm.ctx, "ns1", &core.Namespace{}, &core.SignerRef{ Author: "wrong", Key: "wrong", diff --git a/internal/broadcast/message.go b/internal/broadcast/message.go index be2d9ff286..d76af43aba 100644 --- a/internal/broadcast/message.go +++ b/internal/broadcast/message.go @@ -122,7 +122,7 @@ func (s *broadcastSender) resolve(ctx context.Context) error { // Resolve the sending identity if msg.Header.Type != core.MessageTypeDefinition || msg.Header.Tag != core.SystemTagIdentityClaim { - if err := s.mgr.identity.ResolveInputSigningIdentity(ctx, msg.Header.Namespace, &msg.Header.SignerRef); err != nil { + if err := s.mgr.identity.ResolveInputSigningIdentity(ctx, &msg.Header.SignerRef); err != nil { return i18n.WrapError(ctx, err, coremsgs.MsgAuthorInvalid) } } diff --git a/internal/broadcast/message_test.go b/internal/broadcast/message_test.go index 246947dd1c..0acbbd1162 100644 --- a/internal/broadcast/message_test.go +++ b/internal/broadcast/message_test.go @@ -42,7 +42,7 @@ func TestBroadcastMessageOk(t *testing.T) { mdm.On("VerifyNamespaceExists", ctx, "ns1").Return(nil) mdm.On("ResolveInlineData", ctx, mock.Anything).Return(nil) mdm.On("WriteNewMessage", mock.Anything, mock.Anything, mock.Anything).Return(nil) - mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", ctx, mock.Anything).Return(nil) msg, err := bm.BroadcastMessage(ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -74,7 +74,7 @@ func TestBroadcastMessageWaitConfirmOk(t *testing.T) { ctx := context.Background() mdm.On("VerifyNamespaceExists", ctx, "ns1").Return(nil) mdm.On("ResolveInlineData", ctx, mock.Anything).Return(nil) - mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", ctx, mock.Anything).Return(nil) replyMsg := &core.Message{ Header: core.MessageHeader{ @@ -128,7 +128,7 @@ func TestBroadcastMessageTooLarge(t *testing.T) { } }). Return(nil) - mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", ctx, mock.Anything).Return(nil) _, err := bm.BroadcastMessage(ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -157,7 +157,7 @@ func TestBroadcastMessageBadInput(t *testing.T) { ctx := context.Background() mdm.On("VerifyNamespaceExists", ctx, "ns1").Return(nil) mdm.On("ResolveInlineData", ctx, mock.Anything).Return(fmt.Errorf("pop")) - mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", ctx, mock.Anything).Return(nil) _, err := bm.BroadcastMessage(ctx, "ns1", &core.MessageInOut{ InlineData: core.InlineData{ @@ -177,7 +177,7 @@ func TestBroadcastMessageBadIdentity(t *testing.T) { mim := bm.identity.(*identitymanagermocks.Manager) mdm := bm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", ctx, "ns1").Return(nil) - mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(fmt.Errorf("pop")) + mim.On("ResolveInputSigningIdentity", ctx, mock.Anything).Return(fmt.Errorf("pop")) _, err := bm.BroadcastMessage(ctx, "ns1", &core.MessageInOut{ InlineData: core.InlineData{ @@ -199,7 +199,7 @@ func TestBroadcastPrepare(t *testing.T) { ctx := context.Background() mdm.On("VerifyNamespaceExists", ctx, "ns1").Return(nil) mdm.On("ResolveInlineData", ctx, mock.Anything).Return(nil) - mim.On("ResolveInputSigningIdentity", ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", ctx, mock.Anything).Return(nil) msg := &core.MessageInOut{ Message: core.Message{ diff --git a/internal/broadcast/tokenpool_test.go b/internal/broadcast/tokenpool_test.go index 51fb04b3f7..afada1625a 100644 --- a/internal/broadcast/tokenpool_test.go +++ b/internal/broadcast/tokenpool_test.go @@ -95,7 +95,7 @@ func TestBroadcastTokenPoolBroadcastFail(t *testing.T) { }, } - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) mdm.On("VerifyNamespaceExists", mock.Anything, "ns1").Return(nil) mdm.On("WriteNewMessage", mock.Anything, mock.Anything).Return(fmt.Errorf("pop")) @@ -123,7 +123,7 @@ func TestBroadcastTokenPoolOk(t *testing.T) { }, } - mim.On("ResolveInputSigningIdentity", mock.Anything, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", mock.Anything, mock.Anything).Return(nil) mdm.On("VerifyNamespaceExists", mock.Anything, "ns1").Return(nil) mdm.On("WriteNewMessage", mock.Anything, mock.Anything).Return(nil) diff --git a/internal/contracts/manager.go b/internal/contracts/manager.go index 396cdb6e78..c19240c8c4 100644 --- a/internal/contracts/manager.go +++ b/internal/contracts/manager.go @@ -218,7 +218,7 @@ func (cm *contractManager) writeInvokeTransaction(ctx context.Context, ns string } func (cm *contractManager) InvokeContract(ctx context.Context, ns string, req *core.ContractCallRequest, waitConfirm bool) (res interface{}, err error) { - req.Key, err = cm.identity.NormalizeSigningKey(ctx, ns, req.Key, identity.KeyNormalizationBlockchainPlugin) + req.Key, err = cm.identity.NormalizeSigningKey(ctx, req.Key, identity.KeyNormalizationBlockchainPlugin) if err != nil { return nil, err } diff --git a/internal/contracts/manager_test.go b/internal/contracts/manager_test.go index 40ee242068..36ca73466c 100644 --- a/internal/contracts/manager_test.go +++ b/internal/contracts/manager_test.go @@ -1278,7 +1278,7 @@ func TestInvokeContract(t *testing.T) { } mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(fftypes.NewUUID(), nil) - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdi.On("InsertOperation", mock.Anything, mock.MatchedBy(func(op *core.Operation) bool { return op.Namespace == "ns1" && op.Type == core.OpTypeBlockchainInvoke && op.Plugin == "mockblockchain" })).Return(nil) @@ -1318,7 +1318,7 @@ func TestInvokeContractConfirm(t *testing.T) { } mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(fftypes.NewUUID(), nil) - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdi.On("InsertOperation", mock.Anything, mock.MatchedBy(func(op *core.Operation) bool { return op.Namespace == "ns1" && op.Type == core.OpTypeBlockchainInvoke && op.Plugin == "mockblockchain" })).Return(nil) @@ -1364,7 +1364,7 @@ func TestInvokeContractFail(t *testing.T) { } mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(fftypes.NewUUID(), nil) - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdi.On("InsertOperation", mock.Anything, mock.MatchedBy(func(op *core.Operation) bool { return op.Namespace == "ns1" && op.Type == core.OpTypeBlockchainInvoke && op.Plugin == "mockblockchain" })).Return(nil) @@ -1393,7 +1393,7 @@ func TestInvokeContractFailNormalizeSigningKey(t *testing.T) { Location: fftypes.JSONAnyPtr(""), } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) _, err := cm.InvokeContract(context.Background(), "ns1", req, false) @@ -1411,7 +1411,7 @@ func TestInvokeContractFailResolve(t *testing.T) { Location: fftypes.JSONAnyPtr(""), } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mbi.On("InvokeContract", mock.Anything, mock.AnythingOfType("*fftypes.UUID"), "key-resolved", req.Location, req.Method, req.Input).Return(nil) _, err := cm.InvokeContract(context.Background(), "ns1", req, false) @@ -1436,7 +1436,7 @@ func TestInvokeContractTXFail(t *testing.T) { }, } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(nil, fmt.Errorf("pop")) _, err := cm.InvokeContract(context.Background(), "ns1", req, false) @@ -1456,7 +1456,7 @@ func TestInvokeContractMethodNotFound(t *testing.T) { MethodPath: "set", } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdb.On("GetFFIMethod", mock.Anything, "ns1", req.Interface, req.MethodPath).Return(nil, fmt.Errorf("pop")) _, err := cm.InvokeContract(context.Background(), "ns1", req, false) @@ -1493,7 +1493,7 @@ func TestInvokeContractMethodBadInput(t *testing.T) { }, }, } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) _, err := cm.InvokeContract(context.Background(), "ns1", req, false) assert.Regexp(t, "FF10304", err) @@ -1518,7 +1518,7 @@ func TestQueryContract(t *testing.T) { }, } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", mock.Anything, mock.MatchedBy(func(op *core.Operation) bool { return op.Namespace == "ns1" && op.Type == core.OpTypeBlockchainInvoke && op.Plugin == "mockblockchain" @@ -1547,7 +1547,7 @@ func TestCallContractInvalidType(t *testing.T) { }, } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", mock.Anything, mock.MatchedBy(func(op *core.Operation) bool { return op.Namespace == "ns1" && op.Type == core.OpTypeBlockchainInvoke && op.Plugin == "mockblockchain" @@ -1782,7 +1782,7 @@ func TestInvokeContractAPI(t *testing.T) { Location: fftypes.JSONAnyPtr(""), } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdb.On("GetContractAPIByName", mock.Anything, "ns1", "banana").Return(api, nil) mth.On("SubmitNewTransaction", mock.Anything, "ns1", core.TransactionTypeContractInvoke).Return(fftypes.NewUUID(), nil) mdi.On("InsertOperation", mock.Anything, mock.MatchedBy(func(op *core.Operation) bool { @@ -1817,7 +1817,7 @@ func TestInvokeContractAPIFailContractLookup(t *testing.T) { }, } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdb.On("GetContractAPIByName", mock.Anything, "ns1", "banana").Return(nil, fmt.Errorf("pop")) _, err := cm.InvokeContractAPI(context.Background(), "ns1", "banana", "peel", req, false) @@ -1838,7 +1838,7 @@ func TestInvokeContractAPIContractNotFound(t *testing.T) { }, } - mim.On("NormalizeSigningKey", mock.Anything, "ns1", "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) + mim.On("NormalizeSigningKey", mock.Anything, "", identity.KeyNormalizationBlockchainPlugin).Return("key-resolved", nil) mdb.On("GetContractAPIByName", mock.Anything, "ns1", "banana").Return(nil, nil) _, err := cm.InvokeContractAPI(context.Background(), "ns1", "banana", "peel", req, false) diff --git a/internal/definitions/definition_handler_network_node.go b/internal/definitions/definition_handler_network_node.go index a019b6de4b..b739251a8f 100644 --- a/internal/definitions/definition_handler_network_node.go +++ b/internal/definitions/definition_handler_network_node.go @@ -30,7 +30,7 @@ func (dh *definitionHandlers) handleDeprecatedNodeBroadcast(ctx context.Context, return HandlerResult{Action: ActionReject}, i18n.NewError(ctx, coremsgs.MsgDefRejectedBadPayload, "node", msg.Header.ID) } - owner, err := dh.identity.FindIdentityForVerifier(ctx, []core.IdentityType{core.IdentityTypeOrg}, core.LegacySystemNamespace, &core.VerifierRef{ + owner, err := dh.identity.FindIdentityForVerifier(ctx, []core.IdentityType{core.IdentityTypeOrg}, &core.VerifierRef{ Type: dh.blockchain.VerifierType(), Value: nodeOld.Owner, }) diff --git a/internal/definitions/definition_handler_network_node_test.go b/internal/definitions/definition_handler_network_node_test.go index 957644f1fe..0b1ad7719b 100644 --- a/internal/definitions/definition_handler_network_node_test.go +++ b/internal/definitions/definition_handler_network_node_test.go @@ -103,7 +103,7 @@ func TestHandleDeprecatedNodeDefinitionOK(t *testing.T) { parent, _, _ := testDeprecatedRootOrg(t) mim := dh.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ctx, []core.IdentityType{core.IdentityTypeOrg}, core.LegacySystemNamespace, &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ctx, []core.IdentityType{core.IdentityTypeOrg}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: node.Owner, }).Return(parent.Migrated().Identity, nil) @@ -163,7 +163,7 @@ func TestHandleDeprecatedNodeDefinitionFailOrgLookup(t *testing.T) { node, msg, data := testDeprecatedRootNode(t) mim := dh.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ctx, []core.IdentityType{core.IdentityTypeOrg}, core.LegacySystemNamespace, &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ctx, []core.IdentityType{core.IdentityTypeOrg}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: node.Owner, }).Return(nil, fmt.Errorf("pop")) @@ -184,7 +184,7 @@ func TestHandleDeprecatedNodeDefinitionOrgNotFound(t *testing.T) { node, msg, data := testDeprecatedRootNode(t) mim := dh.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ctx, []core.IdentityType{core.IdentityTypeOrg}, core.LegacySystemNamespace, &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ctx, []core.IdentityType{core.IdentityTypeOrg}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: node.Owner, }).Return(nil, nil) diff --git a/internal/events/aggregator.go b/internal/events/aggregator.go index 3b0e3c299d..d62865fba2 100644 --- a/internal/events/aggregator.go +++ b/internal/events/aggregator.go @@ -389,7 +389,7 @@ func (ag *aggregator) checkOnchainConsistency(ctx context.Context, msg *core.Mes resolvedAuthor, err := ag.identity.FindIdentityForVerifier(ctx, []core.IdentityType{ core.IdentityTypeOrg, core.IdentityTypeCustom, - }, msg.Header.Namespace, verifierRef) + }, verifierRef) if err != nil { return false, err } diff --git a/internal/events/aggregator_test.go b/internal/events/aggregator_test.go index 9e4e6007b4..0200755c14 100644 --- a/internal/events/aggregator_test.go +++ b/internal/events/aggregator_test.go @@ -158,7 +158,7 @@ func TestAggregationMaskedZeroNonceMatch(t *testing.T) { mpm := ag.messaging.(*privatemessagingmocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: member2key, }).Return(member2org, nil) @@ -299,7 +299,7 @@ func TestAggregationMaskedNextSequenceMatch(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: member2key, }).Return(member2org, nil) @@ -409,7 +409,7 @@ func TestAggregationBroadcast(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: member1key, }).Return(member1org, nil) @@ -498,7 +498,7 @@ func TestAggregationMigratedBroadcast(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: member1key, }).Return(member1org, nil) @@ -592,7 +592,7 @@ func TestAggregationMigratedBroadcastNilMessageID(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: member1key, }).Return(member1org, nil) @@ -660,7 +660,7 @@ func TestAggregationMigratedBroadcastInvalid(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: member1key, }).Return(member1org, nil) @@ -1049,7 +1049,7 @@ func TestProcessMsgFailDispatch(t *testing.T) { mdm.On("GetMessageWithDataCached", ag.ctx, mock.Anything, data.CRORequirePublicBlobRefs).Return(msg, nil, true, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) err := ag.processMessage(ag.ctx, &core.BatchManifest{}, &core.Pin{Sequence: 12345, Signer: "0x12345"}, 10, &core.MessageManifestEntry{ MessageRef: core.MessageRef{ @@ -1090,7 +1090,7 @@ func TestProcessMsgFailPinUpdate(t *testing.T) { Pins: core.FFStringArray{pin.String()}, } - mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", ag.ctx, []core.IdentityType{core.IdentityTypeOrg, core.IdentityTypeCustom}, &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", }).Return(org1, nil) @@ -1374,7 +1374,7 @@ func TestAttemptMessageDispatchFailValidateData(t *testing.T) { mim := ag.identity.(*identitymanagermocks.Manager) org1 := newTestOrg("org1") - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdm.On("GetMessageData", ag.ctx, mock.Anything, true).Return(core.DataArray{}, true, nil) mdm.On("ValidateAll", ag.ctx, mock.Anything).Return(false, fmt.Errorf("pop")) @@ -1397,7 +1397,7 @@ func TestAttemptMessageDispatchMissingBlobs(t *testing.T) { mim := ag.identity.(*identitymanagermocks.Manager) org1 := newTestOrg("org1") - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdi := ag.database.(*databasemocks.Plugin) mdi.On("GetBlobMatchingHash", ag.ctx, blobHash).Return(nil, nil) @@ -1422,7 +1422,7 @@ func TestAttemptMessageDispatchMissingTransfers(t *testing.T) { mim := ag.identity.(*identitymanagermocks.Manager) org1 := newTestOrg("org1") - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdi := ag.database.(*databasemocks.Plugin) mdi.On("GetTokenTransfers", ag.ctx, mock.Anything).Return([]*core.TokenTransfer{}, nil, nil) @@ -1451,7 +1451,7 @@ func TestAttemptMessageDispatchGetTransfersFail(t *testing.T) { mim := ag.identity.(*identitymanagermocks.Manager) org1 := newTestOrg("org1") - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdi := ag.database.(*databasemocks.Plugin) mdi.On("GetTokenTransfers", ag.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) @@ -1492,7 +1492,7 @@ func TestAttemptMessageDispatchTransferMismatch(t *testing.T) { }} mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdi := ag.database.(*databasemocks.Plugin) mdi.On("GetTokenTransfers", ag.ctx, mock.Anything).Return(transfers, nil, nil) @@ -1513,7 +1513,7 @@ func TestDefinitionBroadcastActionRejectCustomCorrelator(t *testing.T) { org1 := newTestOrg("org1") mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) customCorrelator := fftypes.NewUUID() msh := ag.definitions.(*definitionsmocks.DefinitionHandler) @@ -1571,7 +1571,7 @@ func TestDefinitionBroadcastInvalidSigner(t *testing.T) { org1 := newTestOrg("org1") mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(nil, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(nil, nil) mdm := ag.data.(*datamocks.Manager) mdm.On("GetMessageData", ag.ctx, mock.Anything, true).Return(core.DataArray{}, true, nil) @@ -1618,7 +1618,7 @@ func TestDispatchBroadcastQueuesLaterDispatch(t *testing.T) { msg1, msg2, org1, manifest := newTestManifest(core.MessageTypeDefinition, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdm := ag.data.(*datamocks.Manager) mdm.On("GetMessageWithDataCached", ag.ctx, msg1.Header.ID, data.CRORequirePublicBlobRefs).Return(msg1, core.DataArray{}, true, nil).Once() @@ -1648,7 +1648,7 @@ func TestDispatchPrivateQueuesLaterDispatch(t *testing.T) { msg1, msg2, org1, manifest := newTestManifest(core.MessageTypePrivate, groupID) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdm := ag.data.(*datamocks.Manager) mdm.On("GetMessageWithDataCached", ag.ctx, msg1.Header.ID, data.CRORequirePins).Return(msg1, core.DataArray{}, true, nil).Once() @@ -1690,7 +1690,7 @@ func TestDispatchPrivateNextPinIncremented(t *testing.T) { msg1, msg2, org1, manifest := newTestManifest(core.MessageTypePrivate, groupID) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdm := ag.data.(*datamocks.Manager) mdm.On("GetMessageWithDataCached", ag.ctx, msg1.Header.ID, data.CRORequirePins).Return(msg1, core.DataArray{}, true, nil).Once() @@ -1731,7 +1731,7 @@ func TestDefinitionBroadcastActionRetry(t *testing.T) { msg1, _, org1, _ := newTestManifest(core.MessageTypeDefinition, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) msh := ag.definitions.(*definitionsmocks.DefinitionHandler) msh.On("HandleDefinitionBroadcast", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(definitions.HandlerResult{Action: definitions.ActionRetry}, fmt.Errorf("pop")) @@ -1751,7 +1751,7 @@ func TestDefinitionBroadcastRejectSignerLookupFail(t *testing.T) { msg1, _, _, _ := newTestManifest(core.MessageTypeDefinition, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) _, valid, err := ag.attemptMessageDispatch(ag.ctx, msg1, nil, nil, &batchState{}, &core.Pin{Signer: "0x12345"}) assert.Regexp(t, "pop", err) @@ -1767,7 +1767,7 @@ func TestDefinitionBroadcastRejectSignerLookupWrongOrg(t *testing.T) { msg1, _, _, _ := newTestManifest(core.MessageTypeDefinition, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(newTestOrg("org2"), nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(newTestOrg("org2"), nil) _, valid, err := ag.attemptMessageDispatch(ag.ctx, msg1, nil, nil, &batchState{}, &core.Pin{Signer: "0x12345"}) assert.NoError(t, err) @@ -1797,7 +1797,7 @@ func TestDefinitionBroadcastParkUnregisteredSignerIdentityClaim(t *testing.T) { msg1.Header.Tag = core.SystemTagIdentityClaim mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(nil, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(nil, nil) msh := ag.definitions.(*definitionsmocks.DefinitionHandler) msh.On("HandleDefinitionBroadcast", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(definitions.HandlerResult{Action: definitions.ActionWait}, nil) @@ -1818,7 +1818,7 @@ func TestDefinitionBroadcastRootUnregisteredOk(t *testing.T) { msg1, _, _, _ := newTestManifest(core.MessageTypeDefinition, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(nil, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(nil, nil) _, valid, err := ag.attemptMessageDispatch(ag.ctx, msg1, nil, nil, &batchState{}, &core.Pin{Signer: "0x12345"}) assert.NoError(t, err) @@ -1834,7 +1834,7 @@ func TestDefinitionBroadcastActionWait(t *testing.T) { msg1, _, org1, _ := newTestManifest(core.MessageTypeDefinition, nil) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) msh := ag.definitions.(*definitionsmocks.DefinitionHandler) msh.On("HandleDefinitionBroadcast", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(definitions.HandlerResult{Action: definitions.ActionWait}, nil) @@ -1857,7 +1857,7 @@ func TestAttemptMessageDispatchEventFail(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdm.On("ValidateAll", ag.ctx, mock.Anything).Return(true, nil) mdi.On("InsertEvent", ag.ctx, mock.Anything).Return(fmt.Errorf("pop")) @@ -1885,7 +1885,7 @@ func TestAttemptMessageDispatchGroupInit(t *testing.T) { mdm := ag.data.(*datamocks.Manager) mim := ag.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything, mock.Anything).Return(org1, nil) + mim.On("FindIdentityForVerifier", ag.ctx, mock.Anything, mock.Anything).Return(org1, nil) mdm.On("GetMessageData", ag.ctx, mock.Anything, true).Return(core.DataArray{}, true, nil) mdm.On("ValidateAll", ag.ctx, mock.Anything).Return(true, nil) mdi.On("InsertEvent", ag.ctx, mock.Anything).Return(nil) diff --git a/internal/events/dx_callbacks.go b/internal/events/dx_callbacks.go index 75895c875f..c1668fc9e6 100644 --- a/internal/events/dx_callbacks.go +++ b/internal/events/dx_callbacks.go @@ -30,11 +30,11 @@ import ( // Check data exchange peer the data came from, has been registered to the org listed in the batch. // Note the on-chain identity check is performed separately by the aggregator (across broadcast and private consistently). -func (em *eventManager) checkReceivedOffchainIdentity(ctx context.Context, ns, peerID, author string) (node *core.Identity, err error) { +func (em *eventManager) checkReceivedOffchainIdentity(ctx context.Context, peerID, author string) (node *core.Identity, err error) { l := log.L(em.ctx) // Resolve the node for the peer ID - node, err = em.identity.FindIdentityForVerifier(ctx, []core.IdentityType{core.IdentityTypeNode}, ns, &core.VerifierRef{ + node, err = em.identity.FindIdentityForVerifier(ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: peerID, }) @@ -43,7 +43,7 @@ func (em *eventManager) checkReceivedOffchainIdentity(ctx context.Context, ns, p } // Find the identity in the mesage - org, retryable, err := em.identity.CachedIdentityLookupMustExist(ctx, ns, author) + org, retryable, err := em.identity.CachedIdentityLookupMustExist(ctx, author) if err != nil && retryable { l.Errorf("Failed to retrieve org: %v", err) return nil, err // retryable error @@ -95,7 +95,7 @@ func (em *eventManager) privateBatchReceived(peerID string, batch *core.Batch, w } } - node, err := em.checkReceivedOffchainIdentity(ctx, batch.Namespace, peerID, batch.Author) + node, err := em.checkReceivedOffchainIdentity(ctx, peerID, batch.Author) if err != nil { return err } diff --git a/internal/events/dx_callbacks_test.go b/internal/events/dx_callbacks_test.go index 2e7e8e13a1..e808b1af51 100644 --- a/internal/events/dx_callbacks_test.go +++ b/internal/events/dx_callbacks_test.go @@ -148,11 +148,11 @@ func TestPinnedReceiveOK(t *testing.T) { mdi := em.database.(*databasemocks.Plugin) mdx := &dataexchangemocks.Plugin{} mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertDataArray", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertMessages", em.ctx, mock.Anything, mock.AnythingOfType("database.PostCompletionHook")).Return(nil, nil).Run(func(args mock.Arguments) { @@ -195,11 +195,11 @@ func TestMessageReceiveOkBadBatchIgnored(t *testing.T) { mdx := &dataexchangemocks.Plugin{} mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mde := newMessageReceived("peer1", b, "") em.messageReceived(mdx, mde) @@ -221,11 +221,11 @@ func TestMessageReceivePersistBatchError(t *testing.T) { mdx := &dataexchangemocks.Plugin{} mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(fmt.Errorf("pop")) // no ack as we are simulating termination mid retry @@ -344,7 +344,7 @@ func TestMessageReceiveNodeLookupError(t *testing.T) { }) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(nil, fmt.Errorf("pop")) @@ -371,11 +371,11 @@ func TestMessageReceiveGetCandidateOrgFail(t *testing.T) { mdx := &dataexchangemocks.Plugin{} mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(nil, true, fmt.Errorf("pop")) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(nil, true, fmt.Errorf("pop")) // no ack as we are simulating termination mid retry mde := newMessageReceivedNoAck("peer1", b) @@ -398,11 +398,11 @@ func TestMessageReceiveGetCandidateOrgNotFound(t *testing.T) { mdx := &dataexchangemocks.Plugin{} mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(nil, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(nil, false, nil) mde := newMessageReceived("peer1", b, "") em.messageReceived(mdx, mde) @@ -423,11 +423,11 @@ func TestMessageReceiveGetCandidateOrgNotMatch(t *testing.T) { org1 := newTestOrg("org1") node1 := newTestNode("node1", org1) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(newTestOrg("org2"), false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(newTestOrg("org2"), false, nil) mde := newMessageReceived("peer1", b, "") em.messageReceived(mdx, mde) @@ -544,11 +544,11 @@ func TestMessageReceiveMessageIdentityFail(t *testing.T) { mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org2, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org2, false, nil) mim.On("CachedIdentityLookupByID", em.ctx, org2.Parent).Return(nil, fmt.Errorf("pop")) // no ack as we are simulating termination mid retry @@ -574,11 +574,11 @@ func TestMessageReceiveMessageIdentityParentNotFound(t *testing.T) { mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org2, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org2, false, nil) mim.On("CachedIdentityLookupByID", em.ctx, org2.Parent).Return(nil, nil) mde := newMessageReceived("peer1", b, "") @@ -604,11 +604,11 @@ func TestMessageReceiveMessageIdentityIncorrect(t *testing.T) { mdx.On("Name").Return("utdx") mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org2, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org2, false, nil) mim.On("CachedIdentityLookupByID", em.ctx, org2.Parent).Return(org3, nil) mde := newMessageReceived("peer1", b, "") @@ -635,11 +635,11 @@ func TestMessageReceiveMessagePersistMessageFail(t *testing.T) { org1 := newTestOrg("org1") node1 := newTestNode("node1", org1) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertDataArray", em.ctx, mock.Anything).Return(nil) mdi.On("InsertMessages", em.ctx, mock.Anything, mock.AnythingOfType("database.PostCompletionHook")).Return(fmt.Errorf("optimization fail")) @@ -671,11 +671,11 @@ func TestMessageReceiveMessagePersistDataFail(t *testing.T) { org1 := newTestOrg("org1") node1 := newTestNode("node1", org1) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertDataArray", em.ctx, mock.Anything).Return(fmt.Errorf("optimization miss")) mdi.On("UpsertData", em.ctx, mock.Anything, database.UpsertOptimizationExisting).Return(fmt.Errorf("pop")) @@ -706,11 +706,11 @@ func TestMessageReceiveUnpinnedBatchOk(t *testing.T) { mpm := em.messaging.(*privatemessagingmocks.Manager) mpm.On("EnsureLocalGroup", em.ctx, mock.Anything).Return(true, nil) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertDataArray", em.ctx, mock.Anything).Return(nil) mdi.On("InsertMessages", em.ctx, mock.Anything, mock.AnythingOfType("database.PostCompletionHook")).Return(nil, nil).Run(func(args mock.Arguments) { @@ -747,11 +747,11 @@ func TestMessageReceiveUnpinnedBatchConfirmMessagesFail(t *testing.T) { mpm := em.messaging.(*privatemessagingmocks.Manager) mpm.On("EnsureLocalGroup", em.ctx, mock.Anything).Return(true, nil) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertDataArray", em.ctx, mock.Anything).Return(nil) mdi.On("InsertMessages", em.ctx, mock.Anything, mock.AnythingOfType("database.PostCompletionHook")).Return(nil, nil).Run(func(args mock.Arguments) { @@ -788,11 +788,11 @@ func TestMessageReceiveUnpinnedBatchPersistEventFail(t *testing.T) { mpm := em.messaging.(*privatemessagingmocks.Manager) mpm.On("EnsureLocalGroup", em.ctx, mock.Anything).Return(true, nil) mim := em.identity.(*identitymanagermocks.Manager) - mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, "ns1", &core.VerifierRef{ + mim.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeNode}, &core.VerifierRef{ Type: core.VerifierTypeFFDXPeerID, Value: "peer1", }).Return(node1, nil) - mim.On("CachedIdentityLookupMustExist", em.ctx, "ns1", "signingOrg").Return(org1, false, nil) + mim.On("CachedIdentityLookupMustExist", em.ctx, "signingOrg").Return(org1, false, nil) mdi.On("UpsertBatch", em.ctx, mock.Anything).Return(nil, nil) mdi.On("InsertDataArray", em.ctx, mock.Anything).Return(nil) mdi.On("InsertMessages", em.ctx, mock.Anything, mock.AnythingOfType("database.PostCompletionHook")).Return(nil, nil).Run(func(args mock.Arguments) { diff --git a/internal/events/network_action.go b/internal/events/network_action.go index d3fe860d0a..2a0d516d3d 100644 --- a/internal/events/network_action.go +++ b/internal/events/network_action.go @@ -44,7 +44,7 @@ func (em *eventManager) actionTerminate(bi blockchain.Plugin, event *blockchain. func (em *eventManager) BlockchainNetworkAction(bi blockchain.Plugin, action string, event *blockchain.Event, signingKey *core.VerifierRef) error { return em.retry.Do(em.ctx, "handle network action", func(attempt int) (retry bool, err error) { // Verify that the action came from a registered root org - resolvedAuthor, err := em.identity.FindIdentityForVerifier(em.ctx, []core.IdentityType{core.IdentityTypeOrg}, core.LegacySystemNamespace, signingKey) + resolvedAuthor, err := em.identity.FindIdentityForVerifier(em.ctx, []core.IdentityType{core.IdentityTypeOrg}, signingKey) if err != nil { return true, err } diff --git a/internal/events/network_action_test.go b/internal/events/network_action_test.go index 5fdadea3d6..a3ce942685 100644 --- a/internal/events/network_action_test.go +++ b/internal/events/network_action_test.go @@ -46,7 +46,7 @@ func TestNetworkAction(t *testing.T) { mth := em.txHelper.(*txcommonmocks.Helper) mii := em.identity.(*identitymanagermocks.Manager) - mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, "ff_system", verifier).Return(&core.Identity{}, nil) + mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, verifier).Return(&core.Identity{}, nil) mdi.On("GetBlockchainEventByProtocolID", em.ctx, "ff_system", (*fftypes.UUID)(nil), "0001").Return(nil, nil) mth.On("InsertBlockchainEvent", em.ctx, mock.MatchedBy(func(be *core.BlockchainEvent) bool { return be.ProtocolID == "0001" @@ -77,8 +77,8 @@ func TestNetworkActionUnknownIdentity(t *testing.T) { mbi := &blockchainmocks.Plugin{} mii := em.identity.(*identitymanagermocks.Manager) - mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, "ff_system", verifier).Return(nil, fmt.Errorf("pop")).Once() - mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, "ff_system", verifier).Return(nil, nil).Once() + mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, verifier).Return(nil, fmt.Errorf("pop")).Once() + mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, verifier).Return(nil, nil).Once() err := em.BlockchainNetworkAction(mbi, "terminate", &blockchain.Event{}, verifier) assert.NoError(t, err) @@ -99,7 +99,7 @@ func TestNetworkActionNonRootIdentity(t *testing.T) { mbi := &blockchainmocks.Plugin{} mii := em.identity.(*identitymanagermocks.Manager) - mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, "ff_system", verifier).Return(&core.Identity{ + mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, verifier).Return(&core.Identity{ IdentityBase: core.IdentityBase{ Parent: fftypes.NewUUID(), }, @@ -124,7 +124,7 @@ func TestNetworkActionUnknown(t *testing.T) { mbi := &blockchainmocks.Plugin{} mii := em.identity.(*identitymanagermocks.Manager) - mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, "ff_system", verifier).Return(&core.Identity{}, nil) + mii.On("FindIdentityForVerifier", em.ctx, []core.IdentityType{core.IdentityTypeOrg}, verifier).Return(&core.Identity{}, nil) err := em.BlockchainNetworkAction(mbi, "bad", &blockchain.Event{}, verifier) assert.NoError(t, err) diff --git a/internal/identity/identitymanager.go b/internal/identity/identitymanager.go index 5408e8f33d..3e919960a8 100644 --- a/internal/identity/identitymanager.go +++ b/internal/identity/identitymanager.go @@ -41,50 +41,49 @@ const ( ) type Manager interface { - ResolveInputSigningIdentity(ctx context.Context, namespace string, signerRef *core.SignerRef) (err error) - NormalizeSigningKey(ctx context.Context, namespace, inputKey string, keyNormalizationMode int) (signingKey string, err error) - FindIdentityForVerifier(ctx context.Context, iTypes []core.IdentityType, namespace string, verifier *core.VerifierRef) (identity *core.Identity, err error) + ResolveInputSigningIdentity(ctx context.Context, signerRef *core.SignerRef) (err error) + NormalizeSigningKey(ctx context.Context, inputKey string, keyNormalizationMode int) (signingKey string, err error) + FindIdentityForVerifier(ctx context.Context, iTypes []core.IdentityType, verifier *core.VerifierRef) (identity *core.Identity, err error) ResolveIdentitySigner(ctx context.Context, identity *core.Identity) (parentSigner *core.SignerRef, err error) CachedIdentityLookupByID(ctx context.Context, id *fftypes.UUID) (identity *core.Identity, err error) - CachedIdentityLookupMustExist(ctx context.Context, namespace, did string) (identity *core.Identity, retryable bool, err error) - CachedIdentityLookupNilOK(ctx context.Context, namespace, did string) (identity *core.Identity, retryable bool, err error) - CachedVerifierLookup(ctx context.Context, vType core.VerifierType, namespace, value string) (verifier *core.Verifier, err error) - GetMultipartyRootVerifier(ctx context.Context, namespace string) (*core.VerifierRef, error) - GetMultipartyRootOrg(ctx context.Context, namespace string) (*core.Identity, error) + CachedIdentityLookupMustExist(ctx context.Context, did string) (identity *core.Identity, retryable bool, err error) + CachedIdentityLookupNilOK(ctx context.Context, did string) (identity *core.Identity, retryable bool, err error) + CachedVerifierLookup(ctx context.Context, vType core.VerifierType, value string) (verifier *core.Verifier, err error) + GetMultipartyRootVerifier(ctx context.Context) (*core.VerifierRef, error) + GetMultipartyRootOrg(ctx context.Context) (*core.Identity, error) VerifyIdentityChain(ctx context.Context, identity *core.Identity) (immediateParent *core.Identity, retryable bool, err error) } type identityManager struct { - database database.Plugin - blockchain blockchain.Plugin - data data.Manager - + database database.Plugin + blockchain blockchain.Plugin + data data.Manager + namespace string defaultKey string orgName string orgKey string - multipartyRootVerifier map[string]*core.VerifierRef - multipartyRootOrg map[string]*core.Identity + multipartyRootVerifier *core.VerifierRef + multipartyRootOrg *core.Identity identityCacheTTL time.Duration identityCache *ccache.Cache signingKeyCacheTTL time.Duration signingKeyCache *ccache.Cache } -func NewIdentityManager(ctx context.Context, defaultKey, orgName, orgKey string, di database.Plugin, bi blockchain.Plugin, dm data.Manager) (Manager, error) { +func NewIdentityManager(ctx context.Context, ns, defaultKey, orgName, orgKey string, di database.Plugin, bi blockchain.Plugin, dm data.Manager) (Manager, error) { if di == nil || bi == nil || dm == nil { return nil, i18n.NewError(ctx, coremsgs.MsgInitializationNilDepError, "IdentityManager") } im := &identityManager{ - database: di, - blockchain: bi, - data: dm, - defaultKey: defaultKey, - orgName: orgName, - orgKey: orgKey, - multipartyRootVerifier: make(map[string]*core.VerifierRef), - multipartyRootOrg: make(map[string]*core.Identity), - identityCacheTTL: config.GetDuration(coreconfig.IdentityManagerCacheTTL), - signingKeyCacheTTL: config.GetDuration(coreconfig.IdentityManagerCacheTTL), + database: di, + blockchain: bi, + data: dm, + namespace: ns, + defaultKey: defaultKey, + orgName: orgName, + orgKey: orgKey, + identityCacheTTL: config.GetDuration(coreconfig.IdentityManagerCacheTTL), + signingKeyCacheTTL: config.GetDuration(coreconfig.IdentityManagerCacheTTL), } // For the identity and signingkey caches, we just treat them all equally sized and the max items im.identityCache = ccache.New( @@ -109,9 +108,9 @@ func ParseKeyNormalizationConfig(strConfigVal string) int { // NormalizeSigningKey takes in only a "key" (which may be empty to use the default) to be normalized and returned. // This is for cases where keys are used directly without an "author" field alongside them (custom contracts, tokens), // or when the author is known by the caller and should not / cannot be confirmed prior to sending (identity claims) -func (im *identityManager) NormalizeSigningKey(ctx context.Context, namespace, inputKey string, keyNormalizationMode int) (signingKey string, err error) { +func (im *identityManager) NormalizeSigningKey(ctx context.Context, inputKey string, keyNormalizationMode int) (signingKey string, err error) { if inputKey == "" { - verifierRef, err := im.getDefaultVerifier(ctx, namespace) + verifierRef, err := im.getDefaultVerifier(ctx) if err != nil { return "", err } @@ -132,14 +131,14 @@ func (im *identityManager) NormalizeSigningKey(ctx context.Context, namespace, i // ResolveInputIdentity takes in blockchain signing input information from an API call (which may // include author or key or both), and updates it with fully resolved and normalized values -func (im *identityManager) ResolveInputSigningIdentity(ctx context.Context, namespace string, signerRef *core.SignerRef) (err error) { +func (im *identityManager) ResolveInputSigningIdentity(ctx context.Context, signerRef *core.SignerRef) (err error) { log.L(ctx).Debugf("Resolving identity input: key='%s' author='%s'", signerRef.Key, signerRef.Author) var verifier *core.VerifierRef switch { case signerRef.Author == "" && signerRef.Key == "": // Nothing specified: use the default node identity - err = im.resolveDefaultSigningIdentity(ctx, namespace, signerRef) + err = im.resolveDefaultSigningIdentity(ctx, signerRef) if err != nil { return err } @@ -154,7 +153,7 @@ func (im *identityManager) ResolveInputSigningIdentity(ctx context.Context, name identity, err := im.FindIdentityForVerifier(ctx, []core.IdentityType{ core.IdentityTypeOrg, core.IdentityTypeCustom, - }, namespace, verifier) + }, verifier) switch { case err != nil: return err @@ -169,7 +168,7 @@ func (im *identityManager) ResolveInputSigningIdentity(ctx context.Context, name } case signerRef.Author != "": // Key is unrecognized, but an author was specified: use the key and resolve author to DID - identity, _, err := im.CachedIdentityLookupMustExist(ctx, namespace, signerRef.Author) + identity, _, err := im.CachedIdentityLookupMustExist(ctx, signerRef.Author) if err != nil { return err } @@ -180,7 +179,7 @@ func (im *identityManager) ResolveInputSigningIdentity(ctx context.Context, name case signerRef.Author != "": // Author specified (without key): use the first blockchain key associated with it - identity, _, err := im.CachedIdentityLookupMustExist(ctx, namespace, signerRef.Author) + identity, _, err := im.CachedIdentityLookupMustExist(ctx, signerRef.Author) if err != nil { return err } @@ -215,12 +214,12 @@ func (im *identityManager) firstVerifierForIdentity(ctx context.Context, vType c } // resolveDefaultSigningIdentity adds the default signing identity into a message -func (im *identityManager) resolveDefaultSigningIdentity(ctx context.Context, namespace string, signerRef *core.SignerRef) (err error) { - verifierRef, err := im.getDefaultVerifier(ctx, namespace) +func (im *identityManager) resolveDefaultSigningIdentity(ctx context.Context, signerRef *core.SignerRef) (err error) { + verifierRef, err := im.getDefaultVerifier(ctx) if err != nil { return err } - identity, err := im.GetMultipartyRootOrg(ctx, namespace) + identity, err := im.GetMultipartyRootOrg(ctx) if err != nil { return err } @@ -230,17 +229,17 @@ func (im *identityManager) resolveDefaultSigningIdentity(ctx context.Context, na } // getDefaultVerifier gets the default blockchain verifier via the configuration -func (im *identityManager) getDefaultVerifier(ctx context.Context, namespace string) (verifier *core.VerifierRef, err error) { +func (im *identityManager) getDefaultVerifier(ctx context.Context) (verifier *core.VerifierRef, err error) { if im.defaultKey != "" { return im.normalizeKeyViaBlockchainPlugin(ctx, im.defaultKey) } - return im.GetMultipartyRootVerifier(ctx, namespace) + return im.GetMultipartyRootVerifier(ctx) } // GetMultipartyRootVerifier gets the blockchain verifier of the root org via the configuration -func (im *identityManager) GetMultipartyRootVerifier(ctx context.Context, namespace string) (*core.VerifierRef, error) { - if key, ok := im.multipartyRootVerifier[namespace]; ok { - return key, nil +func (im *identityManager) GetMultipartyRootVerifier(ctx context.Context) (*core.VerifierRef, error) { + if im.multipartyRootVerifier != nil { + return im.multipartyRootVerifier, nil } if im.orgKey == "" { @@ -251,7 +250,7 @@ func (im *identityManager) GetMultipartyRootVerifier(ctx context.Context, namesp if err != nil { return nil, err } - im.multipartyRootVerifier[namespace] = verifier + im.multipartyRootVerifier = verifier return verifier, nil } @@ -277,8 +276,8 @@ func (im *identityManager) normalizeKeyViaBlockchainPlugin(ctx context.Context, } // FindIdentityForVerifier is a reverse lookup function to look up an identity registered as owner of the specified verifier -func (im *identityManager) FindIdentityForVerifier(ctx context.Context, iTypes []core.IdentityType, namespace string, verifier *core.VerifierRef) (identity *core.Identity, err error) { - identity, err = im.cachedIdentityLookupByVerifierRef(ctx, namespace, verifier) +func (im *identityManager) FindIdentityForVerifier(ctx context.Context, iTypes []core.IdentityType, verifier *core.VerifierRef) (identity *core.Identity, err error) { + identity, err = im.cachedIdentityLookupByVerifierRef(ctx, im.namespace, verifier) if err != nil || identity != nil { return identity, err } @@ -286,16 +285,16 @@ func (im *identityManager) FindIdentityForVerifier(ctx context.Context, iTypes [ } // GetMultipartyRootOrg returns the identity of the organization that owns the node, if fully registered within the given namespace -func (im *identityManager) GetMultipartyRootOrg(ctx context.Context, namespace string) (*core.Identity, error) { - if id, ok := im.multipartyRootOrg[namespace]; ok { - return id, nil +func (im *identityManager) GetMultipartyRootOrg(ctx context.Context) (*core.Identity, error) { + if im.multipartyRootOrg != nil { + return im.multipartyRootOrg, nil } - verifierRef, err := im.GetMultipartyRootVerifier(ctx, namespace) + verifierRef, err := im.GetMultipartyRootVerifier(ctx) if err != nil { return nil, err } - identity, err := im.cachedIdentityLookupByVerifierRef(ctx, namespace, verifierRef) + identity, err := im.cachedIdentityLookupByVerifierRef(ctx, im.namespace, verifierRef) if err != nil || identity == nil { return nil, i18n.WrapError(ctx, err, coremsgs.MsgLocalOrgLookupFailed, im.orgName, verifierRef.Value) } @@ -303,7 +302,7 @@ func (im *identityManager) GetMultipartyRootOrg(ctx context.Context, namespace s if identity.Type != core.IdentityTypeOrg || identity.Name != im.orgName { return nil, i18n.NewError(ctx, coremsgs.MsgLocalOrgLookupFailed, im.orgName, verifierRef.Value) } - im.multipartyRootOrg[namespace] = identity + im.multipartyRootOrg = identity return identity, nil } @@ -389,7 +388,8 @@ func (im *identityManager) cachedIdentityLookupByVerifierRef(ctx context.Context return nil, err } else if verifier == nil { if namespace != core.LegacySystemNamespace && im.blockchain.NetworkVersion() == 1 { - // For V1 networks, fall back to SystemNamespace for looking up identities + // For V1 networks, fall back to LegacySystemNamespace for looking up identities + // This assumes that the system namespace shares a database with this manager's namespace! return im.cachedIdentityLookupByVerifierRef(ctx, core.LegacySystemNamespace, verifierRef) } return nil, err @@ -406,7 +406,7 @@ func (im *identityManager) cachedIdentityLookupByVerifierRef(ctx context.Context return identity, nil } -func (im *identityManager) CachedIdentityLookupNilOK(ctx context.Context, namespace, didLookupStr string) (identity *core.Identity, retryable bool, err error) { +func (im *identityManager) CachedIdentityLookupNilOK(ctx context.Context, didLookupStr string) (identity *core.Identity, retryable bool, err error) { // Use an LRU cache for the author identity, as it's likely for the same identity to be re-used over and over cacheKey := fmt.Sprintf("did=%s", didLookupStr) defer func() { @@ -441,7 +441,7 @@ func (im *identityManager) CachedIdentityLookupNilOK(ctx context.Context, namesp } } else { // If there is just a name in there, then it could be an Org type identity (from the very original usage of the field) - if identity, err = im.database.GetIdentityByName(ctx, core.IdentityTypeOrg, namespace, didLookupStr); err != nil { + if identity, err = im.database.GetIdentityByName(ctx, core.IdentityTypeOrg, im.namespace, didLookupStr); err != nil { return nil, true /* DB Error */, err } } @@ -454,8 +454,8 @@ func (im *identityManager) CachedIdentityLookupNilOK(ctx context.Context, namesp return identity, false, nil } -func (im *identityManager) CachedIdentityLookupMustExist(ctx context.Context, namespace, didLookupStr string) (identity *core.Identity, retryable bool, err error) { - identity, retryable, err = im.CachedIdentityLookupNilOK(ctx, namespace, didLookupStr) +func (im *identityManager) CachedIdentityLookupMustExist(ctx context.Context, didLookupStr string) (identity *core.Identity, retryable bool, err error) { + identity, retryable, err = im.CachedIdentityLookupNilOK(ctx, didLookupStr) if err != nil { return nil, retryable, err } @@ -482,14 +482,14 @@ func (im *identityManager) CachedIdentityLookupByID(ctx context.Context, id *fft return identity, nil } -func (im *identityManager) CachedVerifierLookup(ctx context.Context, vType core.VerifierType, namespace, value string) (verifier *core.Verifier, err error) { +func (im *identityManager) CachedVerifierLookup(ctx context.Context, vType core.VerifierType, value string) (verifier *core.Verifier, err error) { // Use an LRU cache for the author identity, as it's likely for the same identity to be re-used over and over - cacheKey := fmt.Sprintf("v=%s|%s|%s", vType, namespace, value) + cacheKey := fmt.Sprintf("v=%s|%s", vType, value) if cached := im.identityCache.Get(cacheKey); cached != nil { cached.Extend(im.identityCacheTTL) verifier = cached.Value().(*core.Verifier) } else { - verifier, err = im.database.GetVerifierByValue(ctx, vType, namespace, value) + verifier, err = im.database.GetVerifierByValue(ctx, vType, im.namespace, value) if err != nil || verifier == nil { return verifier, err } diff --git a/internal/identity/identitymanager_test.go b/internal/identity/identitymanager_test.go index 2b35d8c68e..e689da8f76 100644 --- a/internal/identity/identitymanager_test.go +++ b/internal/identity/identitymanager_test.go @@ -41,13 +41,13 @@ func newTestIdentityManager(t *testing.T) (context.Context, *identityManager) { mbi.On("VerifierType").Return(core.VerifierTypeEthAddress).Maybe() ctx := context.Background() - im, err := NewIdentityManager(ctx, "", "", "", mdi, mbi, mdm) + im, err := NewIdentityManager(ctx, "ns1", "", "", "", mdi, mbi, mdm) assert.NoError(t, err) return ctx, im.(*identityManager) } func TestNewIdentityManagerMissingDeps(t *testing.T) { - _, err := NewIdentityManager(context.Background(), "", "", "", nil, nil, nil) + _, err := NewIdentityManager(context.Background(), "", "", "", "", nil, nil, nil) assert.Regexp(t, "FF10128", err) } @@ -56,7 +56,7 @@ func TestResolveInputSigningIdentityNoKey(t *testing.T) { ctx, im := newTestIdentityManager(t) msgIdentity := &core.SignerRef{} - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "FF10354", err) } @@ -95,7 +95,7 @@ func TestResolveInputSigningIdentityOrgFallbackOk(t *testing.T) { }, nil) msgIdentity := &core.SignerRef{} - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.NoError(t, err) assert.Equal(t, "did:firefly:org/org1", msgIdentity.Author) assert.Equal(t, "fullkey123", msgIdentity.Key) @@ -138,7 +138,7 @@ func TestResolveInputSigningIdentityByKeyOk(t *testing.T) { msgIdentity := &core.SignerRef{ Key: "mykey123", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.NoError(t, err) assert.Equal(t, "did:firefly:ns/ns1/myid", msgIdentity.Author) assert.Equal(t, "fullkey123", msgIdentity.Key) @@ -177,7 +177,7 @@ func TestResolveInputSigningIdentityAnonymousKeyWithAuthorOk(t *testing.T) { Key: "mykey123", Author: "did:firefly:ns/ns1/myid", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.NoError(t, err) assert.Equal(t, "did:firefly:ns/ns1/myid", msgIdentity.Author) assert.Equal(t, "fullkey123", msgIdentity.Key) @@ -203,7 +203,7 @@ func TestResolveInputSigningIdentityKeyWithNoAuthorFail(t *testing.T) { msgIdentity := &core.SignerRef{ Key: "mykey123", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "FF10356", err) mbi.AssertExpectations(t) @@ -245,7 +245,7 @@ func TestResolveInputSigningIdentityByKeyDIDMismatch(t *testing.T) { Key: "mykey123", Author: "did:firefly:ns/ns1/notmyid", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "FF10355", err) mbi.AssertExpectations(t) @@ -275,7 +275,7 @@ func TestResolveInputSigningIdentityByKeyNotFound(t *testing.T) { Key: "mykey123", Author: "did:firefly:ns/ns1/unknown", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "FF10277", err) mbi.AssertExpectations(t) @@ -297,7 +297,7 @@ func TestResolveInputSigningIdentityByKeyFail(t *testing.T) { msgIdentity := &core.SignerRef{ Key: "mykey123", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "pop", err) mbi.AssertExpectations(t) @@ -315,7 +315,7 @@ func TestResolveInputSigningIdentityByKeyResolveFail(t *testing.T) { msgIdentity := &core.SignerRef{ Key: "mykey123", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "pop", err) mbi.AssertExpectations(t) @@ -353,7 +353,7 @@ func TestResolveInputSigningIdentityByOrgNameOk(t *testing.T) { msgIdentity := &core.SignerRef{ Author: "org1", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.NoError(t, err) assert.Equal(t, "did:firefly:org/org1", msgIdentity.Author) assert.Equal(t, "fullkey123", msgIdentity.Key) @@ -373,7 +373,7 @@ func TestResolveInputSigningIdentityByOrgLookkupNotFound(t *testing.T) { msgIdentity := &core.SignerRef{ Author: "org1", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "FF10277", err) mdi.AssertExpectations(t) @@ -391,7 +391,7 @@ func TestResolveInputSigningIdentityByOrgLookkupFail(t *testing.T) { msgIdentity := &core.SignerRef{ Author: "org1", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "pop", err) mdi.AssertExpectations(t) @@ -420,7 +420,7 @@ func TestResolveInputSigningIdentityByOrgVerifierFail(t *testing.T) { msgIdentity := &core.SignerRef{ Author: "org1", } - err := im.ResolveInputSigningIdentity(ctx, "ns1", msgIdentity) + err := im.ResolveInputSigningIdentity(ctx, msgIdentity) assert.Regexp(t, "pop", err) mdi.AssertExpectations(t) @@ -436,7 +436,7 @@ func TestNormalizeSigningKeyDefault(t *testing.T) { mbi := im.blockchain.(*blockchainmocks.Plugin) mbi.On("NormalizeSigningKey", ctx, "key123").Return("fullkey123", nil) - resolvedKey, err := im.NormalizeSigningKey(ctx, "ns1", "", KeyNormalizationBlockchainPlugin) + resolvedKey, err := im.NormalizeSigningKey(ctx, "", KeyNormalizationBlockchainPlugin) assert.NoError(t, err) assert.Equal(t, "fullkey123", resolvedKey) @@ -453,7 +453,7 @@ func TestNormalizeSigningKeyOrgFallbackOk(t *testing.T) { mbi := im.blockchain.(*blockchainmocks.Plugin) mbi.On("NormalizeSigningKey", ctx, "key123").Return("fullkey123", nil) - resolvedKey, err := im.NormalizeSigningKey(ctx, "ns1", "", KeyNormalizationBlockchainPlugin) + resolvedKey, err := im.NormalizeSigningKey(ctx, "", KeyNormalizationBlockchainPlugin) assert.NoError(t, err) assert.Equal(t, "fullkey123", resolvedKey) @@ -470,7 +470,7 @@ func TestNormalizeSigningKeyOrgFallbackErr(t *testing.T) { mbi := im.blockchain.(*blockchainmocks.Plugin) mbi.On("NormalizeSigningKey", ctx, "key123").Return("fullkey123", fmt.Errorf("pop")) - _, err := im.NormalizeSigningKey(ctx, "ns1", "", KeyNormalizationBlockchainPlugin) + _, err := im.NormalizeSigningKey(ctx, "", KeyNormalizationBlockchainPlugin) assert.Regexp(t, "pop", err) mbi.AssertExpectations(t) @@ -484,7 +484,7 @@ func TestResolveInputSigningKeyOk(t *testing.T) { mbi := im.blockchain.(*blockchainmocks.Plugin) mbi.On("NormalizeSigningKey", ctx, "key123").Return("fullkey123", nil) - resolvedKey, err := im.NormalizeSigningKey(ctx, "ns1", "key123", KeyNormalizationBlockchainPlugin) + resolvedKey, err := im.NormalizeSigningKey(ctx, "key123", KeyNormalizationBlockchainPlugin) assert.NoError(t, err) assert.Equal(t, "fullkey123", resolvedKey) @@ -498,7 +498,7 @@ func TestResolveInputSigningKeyFail(t *testing.T) { mbi := im.blockchain.(*blockchainmocks.Plugin) mbi.On("NormalizeSigningKey", ctx, "key123").Return("", fmt.Errorf("pop")) - _, err := im.NormalizeSigningKey(ctx, "ns1", "key123", KeyNormalizationBlockchainPlugin) + _, err := im.NormalizeSigningKey(ctx, "key123", KeyNormalizationBlockchainPlugin) assert.Regexp(t, "pop", err) mbi.AssertExpectations(t) @@ -508,7 +508,7 @@ func TestResolveInputSigningKeyBypass(t *testing.T) { ctx, im := newTestIdentityManager(t) - key, err := im.NormalizeSigningKey(ctx, "ns1", "different-type-of-key", KeyNormalizationNone) + key, err := im.NormalizeSigningKey(ctx, "different-type-of-key", KeyNormalizationNone) assert.NoError(t, err) assert.Equal(t, "different-type-of-key", key) } @@ -541,7 +541,7 @@ func TestFirstVerifierForIdentityNotFound(t *testing.T) { func TestResolveDefaultSigningIdentityNotFound(t *testing.T) { ctx, im := newTestIdentityManager(t) - im.multipartyRootVerifier["ns1"] = &core.VerifierRef{ + im.multipartyRootVerifier = &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "key12345", } @@ -553,7 +553,7 @@ func TestResolveDefaultSigningIdentityNotFound(t *testing.T) { mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "key12345").Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, core.LegacySystemNamespace, "key12345").Return(nil, nil) - err := im.resolveDefaultSigningIdentity(ctx, "ns1", &core.SignerRef{}) + err := im.resolveDefaultSigningIdentity(ctx, &core.SignerRef{}) assert.Regexp(t, "FF10281", err) mbi.AssertExpectations(t) @@ -564,7 +564,7 @@ func TestResolveDefaultSigningIdentityNotFound(t *testing.T) { func TestResolveDefaultSigningIdentitySystemFallback(t *testing.T) { ctx, im := newTestIdentityManager(t) - im.multipartyRootVerifier["ns1"] = &core.VerifierRef{ + im.multipartyRootVerifier = &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "key12345", } @@ -596,7 +596,7 @@ func TestResolveDefaultSigningIdentitySystemFallback(t *testing.T) { im.orgName = "org1" ref := &core.SignerRef{} - err := im.resolveDefaultSigningIdentity(ctx, "ns1", ref) + err := im.resolveDefaultSigningIdentity(ctx, ref) assert.NoError(t, err) assert.Equal(t, "did:firefly:org/org1", ref.Author) assert.Equal(t, "key12345", ref.Key) @@ -615,7 +615,7 @@ func TestGetMultipartyRootVerifierResolveFailed(t *testing.T) { im.orgKey = "0x12345" - _, err := im.GetMultipartyRootVerifier(ctx, "ns1") + _, err := im.GetMultipartyRootVerifier(ctx) assert.Regexp(t, "pop", err) mbi.AssertExpectations(t) @@ -654,11 +654,9 @@ func TestNormalizeKeyViaBlockchainPluginCached(t *testing.T) { func TestGetMultipartyRootOrgCached(t *testing.T) { ctx, im := newTestIdentityManager(t) - im.multipartyRootOrg = map[string]*core.Identity{ - "ns1": {}, - } + im.multipartyRootOrg = &core.Identity{} - id, err := im.GetMultipartyRootOrg(ctx, "ns1") + id, err := im.GetMultipartyRootOrg(ctx) assert.NoError(t, err) assert.NotNil(t, id) @@ -668,7 +666,7 @@ func TestGetMultipartyRootVerifierNotSet(t *testing.T) { ctx, im := newTestIdentityManager(t) - _, err := im.GetMultipartyRootOrg(ctx, "ns1") + _, err := im.GetMultipartyRootOrg(ctx) assert.Regexp(t, "FF10354", err) } @@ -676,7 +674,7 @@ func TestGetMultipartyRootVerifierNotSet(t *testing.T) { func TestGetMultipartyRootOrgMismatch(t *testing.T) { ctx, im := newTestIdentityManager(t) - im.multipartyRootVerifier["ns1"] = &core.VerifierRef{ + im.multipartyRootVerifier = &core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "fullkey123", } @@ -703,7 +701,7 @@ func TestGetMultipartyRootOrgMismatch(t *testing.T) { }, }, nil) - _, err := im.GetMultipartyRootOrg(ctx, "ns1") + _, err := im.GetMultipartyRootOrg(ctx) assert.Regexp(t, "FF10281", err) } @@ -832,11 +830,11 @@ func TestCachedIdentityLookupMustExistCaching(t *testing.T) { mdi := im.database.(*databasemocks.Plugin) mdi.On("GetIdentityByDID", ctx, "did:firefly:node/peer1").Return(id, nil).Once() - v1, _, err := im.CachedIdentityLookupMustExist(ctx, "ns1", "did:firefly:node/peer1") + v1, _, err := im.CachedIdentityLookupMustExist(ctx, "did:firefly:node/peer1") assert.NoError(t, err) assert.Equal(t, id, v1) - v2, _, err := im.CachedIdentityLookupMustExist(ctx, "ns1", "did:firefly:node/peer1") + v2, _, err := im.CachedIdentityLookupMustExist(ctx, "did:firefly:node/peer1") assert.NoError(t, err) assert.Equal(t, id, v2) } @@ -845,7 +843,7 @@ func TestCachedIdentityLookupMustExistUnknownResolver(t *testing.T) { ctx, im := newTestIdentityManager(t) - _, retryable, err := im.CachedIdentityLookupMustExist(ctx, "ns1", "did:random:anything") + _, retryable, err := im.CachedIdentityLookupMustExist(ctx, "did:random:anything") assert.Regexp(t, "FF10349", err) assert.False(t, retryable) @@ -858,7 +856,7 @@ func TestCachedIdentityLookupMustExistGetIDFail(t *testing.T) { mdi := im.database.(*databasemocks.Plugin) mdi.On("GetIdentityByDID", ctx, "did:firefly:node/peer1").Return(nil, fmt.Errorf("pop")) - _, retryable, err := im.CachedIdentityLookupMustExist(ctx, "ns1", "did:firefly:node/peer1") + _, retryable, err := im.CachedIdentityLookupMustExist(ctx, "did:firefly:node/peer1") assert.Regexp(t, "pop", err) assert.True(t, retryable) @@ -877,7 +875,7 @@ func TestCachedIdentityLookupByVerifierByOldDIDFail(t *testing.T) { return uuid.Equals(orgUUID) })).Return(nil, fmt.Errorf("pop")) - _, retryable, err := im.CachedIdentityLookupMustExist(ctx, "ns1", did) + _, retryable, err := im.CachedIdentityLookupMustExist(ctx, did) assert.Regexp(t, "pop", err) assert.True(t, retryable) @@ -1208,11 +1206,11 @@ func TestCachedVerifierLookupCaching(t *testing.T) { mdi := im.database.(*databasemocks.Plugin) mdi.On("GetVerifierByValue", ctx, verifier.Type, verifier.Namespace, verifier.Value).Return(verifier, nil).Once() - v1, err := im.CachedVerifierLookup(ctx, core.VerifierTypeFFDXPeerID, "ns1", "peer1") + v1, err := im.CachedVerifierLookup(ctx, core.VerifierTypeFFDXPeerID, "peer1") assert.NoError(t, err) assert.Equal(t, verifier, v1) - v2, err := im.CachedVerifierLookup(ctx, core.VerifierTypeFFDXPeerID, "ns1", "peer1") + v2, err := im.CachedVerifierLookup(ctx, core.VerifierTypeFFDXPeerID, "peer1") assert.NoError(t, err) assert.Equal(t, verifier, v2) @@ -1226,7 +1224,7 @@ func TestCachedVerifierLookupError(t *testing.T) { mdi := im.database.(*databasemocks.Plugin) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeFFDXPeerID, "ns1", "peer1").Return(nil, fmt.Errorf("pop")) - _, err := im.CachedVerifierLookup(ctx, core.VerifierTypeFFDXPeerID, "ns1", "peer1") + _, err := im.CachedVerifierLookup(ctx, core.VerifierTypeFFDXPeerID, "peer1") assert.Regexp(t, "pop", err) mdi.AssertExpectations(t) diff --git a/internal/networkmap/data_query.go b/internal/networkmap/data_query.go index 5d488155e1..b49a1ca18e 100644 --- a/internal/networkmap/data_query.go +++ b/internal/networkmap/data_query.go @@ -132,7 +132,7 @@ func (nm *networkMap) GetIdentityByIDWithVerifiers(ctx context.Context, ns, id s } func (nm *networkMap) GetIdentityByDID(ctx context.Context, ns, did string) (*core.Identity, error) { - identity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, ns, did) + identity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, did) if err != nil { return nil, err } @@ -140,7 +140,7 @@ func (nm *networkMap) GetIdentityByDID(ctx context.Context, ns, did string) (*co } func (nm *networkMap) GetIdentityByDIDWithVerifiers(ctx context.Context, ns, did string) (*core.IdentityWithVerifiers, error) { - identity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, ns, did) + identity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, did) if err != nil { return nil, err } diff --git a/internal/networkmap/data_query_test.go b/internal/networkmap/data_query_test.go index c307a4f08c..4a0c503ff6 100644 --- a/internal/networkmap/data_query_test.go +++ b/internal/networkmap/data_query_test.go @@ -329,7 +329,7 @@ func TestGetVerifierByHashBadUUID(t *testing.T) { func TestGetVerifierByDIDOk(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "ns", "did:firefly:org/abc"). + nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(testOrg("abc"), true, nil) id, err := nm.GetIdentityByDID(nm.ctx, "ns", "did:firefly:org/abc") assert.NoError(t, err) @@ -339,7 +339,7 @@ func TestGetVerifierByDIDOk(t *testing.T) { func TestGetVerifierByDIDWithVerifiersOk(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "ns", "did:firefly:org/abc"). + nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(testOrg("abc"), true, nil) nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ @@ -356,7 +356,7 @@ func TestGetVerifierByDIDWithVerifiersOk(t *testing.T) { func TestGetVerifierByDIDWithVerifiersError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "ns", "did:firefly:org/abc"). + nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(nil, true, fmt.Errorf("pop")) _, err := nm.GetIdentityByDIDWithVerifiers(nm.ctx, "ns", "did:firefly:org/abc") assert.Regexp(t, "pop", err) @@ -365,7 +365,7 @@ func TestGetVerifierByDIDWithVerifiersError(t *testing.T) { func TestGetVerifierByDIDNotErr(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "ns", "did:firefly:org/abc"). + nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(nil, true, fmt.Errorf("pop")) id, err := nm.GetIdentityByDID(nm.ctx, "ns", "did:firefly:org/abc") assert.Regexp(t, "pop", err) diff --git a/internal/networkmap/did_test.go b/internal/networkmap/did_test.go index ed36361d55..2922eee60e 100644 --- a/internal/networkmap/did_test.go +++ b/internal/networkmap/did_test.go @@ -152,7 +152,7 @@ func TestDIDGenerationGetIdentityByDIDFail(t *testing.T) { org1 := testOrg("org1") mii := nm.identity.(*identitymanagermocks.Manager) - mii.On("CachedIdentityLookupMustExist", nm.ctx, "ns", mock.Anything).Return(nil, false, fmt.Errorf("pop")) + mii.On("CachedIdentityLookupMustExist", nm.ctx, mock.Anything).Return(nil, false, fmt.Errorf("pop")) _, err := nm.GetDIDDocForIndentityByDID(nm.ctx, "ns", org1.DID) assert.Regexp(t, "pop", err) @@ -165,7 +165,7 @@ func TestDIDGenerationGetIdentityByDIDFailVerifiers(t *testing.T) { org1 := testOrg("org1") mii := nm.identity.(*identitymanagermocks.Manager) - mii.On("CachedIdentityLookupMustExist", nm.ctx, "ns", mock.Anything).Return(&core.Identity{ + mii.On("CachedIdentityLookupMustExist", nm.ctx, mock.Anything).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: fftypes.NewUUID(), }, diff --git a/internal/networkmap/manager.go b/internal/networkmap/manager.go index c3d8d9351f..196feab0b3 100644 --- a/internal/networkmap/manager.go +++ b/internal/networkmap/manager.go @@ -31,11 +31,11 @@ import ( ) type Manager interface { - RegisterOrganization(ctx context.Context, ns string, org *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) - RegisterNode(ctx context.Context, ns string, waitConfirm bool) (node *core.Identity, err error) - RegisterNodeOrganization(ctx context.Context, ns string, waitConfirm bool) (org *core.Identity, err error) - RegisterIdentity(ctx context.Context, ns string, dto *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) - UpdateIdentity(ctx context.Context, ns string, id string, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) + RegisterOrganization(ctx context.Context, org *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) + RegisterNode(ctx context.Context, waitConfirm bool) (node *core.Identity, err error) + RegisterNodeOrganization(ctx context.Context, waitConfirm bool) (org *core.Identity, err error) + RegisterIdentity(ctx context.Context, dto *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) + UpdateIdentity(ctx context.Context, id string, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) GetOrganizationByNameOrID(ctx context.Context, ns, nameOrID string) (*core.Identity, error) GetOrganizations(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) @@ -57,6 +57,7 @@ type Manager interface { type networkMap struct { ctx context.Context + namespace string orgName string orgDesc string database database.Plugin @@ -67,13 +68,14 @@ type networkMap struct { syncasync syncasync.Bridge } -func NewNetworkMap(ctx context.Context, orgName, orgDesc string, di database.Plugin, dm data.Manager, bm broadcast.Manager, dx dataexchange.Plugin, im identity.Manager, sa syncasync.Bridge) (Manager, error) { +func NewNetworkMap(ctx context.Context, ns, orgName, orgDesc string, di database.Plugin, dm data.Manager, bm broadcast.Manager, dx dataexchange.Plugin, im identity.Manager, sa syncasync.Bridge) (Manager, error) { if di == nil || dm == nil || bm == nil || dx == nil || im == nil { return nil, i18n.NewError(ctx, coremsgs.MsgInitializationNilDepError, "NetworkMap") } nm := &networkMap{ ctx: ctx, + namespace: ns, orgName: orgName, orgDesc: orgDesc, database: di, diff --git a/internal/networkmap/manager_test.go b/internal/networkmap/manager_test.go index ed3b796e25..b6e9bb67d8 100644 --- a/internal/networkmap/manager_test.go +++ b/internal/networkmap/manager_test.go @@ -39,13 +39,13 @@ func newTestNetworkmap(t *testing.T) (*networkMap, func()) { mdx := &dataexchangemocks.Plugin{} mim := &identitymanagermocks.Manager{} msa := &syncasyncmocks.Bridge{} - nm, err := NewNetworkMap(ctx, "org0", "org0", mdi, mdm, mbm, mdx, mim, msa) + nm, err := NewNetworkMap(ctx, "ns1", "org0", "org0", mdi, mdm, mbm, mdx, mim, msa) assert.NoError(t, err) return nm.(*networkMap), cancel } func TestNewNetworkMapMissingDep(t *testing.T) { - _, err := NewNetworkMap(context.Background(), "", "", nil, nil, nil, nil, nil, nil) + _, err := NewNetworkMap(context.Background(), "", "", "", nil, nil, nil, nil, nil, nil) assert.Regexp(t, "FF10128", err) } diff --git a/internal/networkmap/register_identity.go b/internal/networkmap/register_identity.go index 0661071e76..17f42cabdd 100644 --- a/internal/networkmap/register_identity.go +++ b/internal/networkmap/register_identity.go @@ -25,7 +25,7 @@ import ( "github.com/hyperledger/firefly/pkg/core" ) -func (nm *networkMap) RegisterIdentity(ctx context.Context, ns string, dto *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) { +func (nm *networkMap) RegisterIdentity(ctx context.Context, dto *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) { // The parent can be a UUID directly var parent *fftypes.UUID @@ -33,7 +33,7 @@ func (nm *networkMap) RegisterIdentity(ctx context.Context, ns string, dto *core parent, err = fftypes.ParseUUID(ctx, dto.Parent) if err != nil { // Or a DID - parentIdentity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, ns, dto.Parent) + parentIdentity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, dto.Parent) if err != nil { return nil, err } @@ -45,7 +45,7 @@ func (nm *networkMap) RegisterIdentity(ctx context.Context, ns string, dto *core identity = &core.Identity{ IdentityBase: core.IdentityBase{ ID: fftypes.NewUUID(), - Namespace: ns, + Namespace: nm.namespace, Name: dto.Name, Type: dto.Type, Parent: parent, @@ -56,7 +56,7 @@ func (nm *networkMap) RegisterIdentity(ctx context.Context, ns string, dto *core }, } - if err := nm.data.VerifyNamespaceExists(ctx, ns); err != nil { + if err := nm.data.VerifyNamespaceExists(ctx, nm.namespace); err != nil { return nil, err } diff --git a/internal/networkmap/register_identity_test.go b/internal/networkmap/register_identity_test.go index b08dcc1d5d..665307c492 100644 --- a/internal/networkmap/register_identity_test.go +++ b/internal/networkmap/register_identity_test.go @@ -46,14 +46,14 @@ func TestRegisterIdentityOrgWithParentOk(t *testing.T) { }, nil) mdm := nm.data.(*datamocks.Manager) - mdm.On("VerifyNamespaceExists", nm.ctx, "ns").Return(nil) + mdm.On("VerifyNamespaceExists", nm.ctx, "ns1").Return(nil) mockMsg1 := &core.Message{Header: core.MessageHeader{ID: fftypes.NewUUID()}} mockMsg2 := &core.Message{Header: core.MessageHeader{ID: fftypes.NewUUID()}} mbm := nm.broadcast.(*broadcastmocks.Manager) mbm.On("BroadcastIdentityClaim", nm.ctx, - "ns", + "ns1", mock.AnythingOfType("*core.IdentityClaim"), mock.MatchedBy(func(sr *core.SignerRef) bool { return sr.Key == "0x12345" @@ -61,14 +61,14 @@ func TestRegisterIdentityOrgWithParentOk(t *testing.T) { core.SystemTagIdentityClaim, false).Return(mockMsg1, nil) mbm.On("BroadcastDefinition", nm.ctx, - "ns", + "ns1", mock.AnythingOfType("*core.IdentityVerification"), mock.MatchedBy(func(sr *core.SignerRef) bool { return sr.Key == "0x23456" }), core.SystemTagIdentityVerification, false).Return(mockMsg2, nil) - org, err := nm.RegisterIdentity(nm.ctx, "ns", &core.IdentityCreateDTO{ + org, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "child1", Key: "0x12345", Parent: fftypes.NewUUID().String(), @@ -130,7 +130,7 @@ func TestRegisterIdentityOrgWithParentWaitConfirmOk(t *testing.T) { }), core.SystemTagIdentityVerification, false).Return(mockMsg2, nil) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "child1", Key: "0x12345", Parent: fftypes.NewUUID().String(), @@ -149,7 +149,7 @@ func TestRegisterIdentityCustomBadNS(t *testing.T) { defer cancel() mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", nm.ctx, "ns1", "did:firefly:org/parent1").Return(&core.Identity{ + mim.On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/parent1").Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: fftypes.NewUUID(), DID: "did:firefly:org/parent1", @@ -159,7 +159,7 @@ func TestRegisterIdentityCustomBadNS(t *testing.T) { mdm := nm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", nm.ctx, "ns1").Return(fmt.Errorf("pop")) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Key: "0x12345", Parent: "did:firefly:org/parent1", @@ -179,7 +179,7 @@ func TestRegisterIdentityCustomWithParentFail(t *testing.T) { mim := nm.identity.(*identitymanagermocks.Manager) mim.On("VerifyIdentityChain", nm.ctx, mock.AnythingOfType("*core.Identity")).Return(parentIdentity, false, nil) - mim.On("CachedIdentityLookupMustExist", nm.ctx, "ns1", "did:firefly:org/parent1").Return(&core.Identity{ + mim.On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/parent1").Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: fftypes.NewUUID(), DID: "did:firefly:org/parent1", @@ -211,7 +211,7 @@ func TestRegisterIdentityCustomWithParentFail(t *testing.T) { }), core.SystemTagIdentityVerification, false).Return(nil, fmt.Errorf("pop")) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Key: "0x12345", Parent: "did:firefly:org/parent1", @@ -237,7 +237,7 @@ func TestRegisterIdentityGetParentMsgFail(t *testing.T) { mdm := nm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", nm.ctx, "ns1").Return(nil) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Key: "0x12345", Parent: fftypes.NewUUID().String(), @@ -268,7 +268,7 @@ func TestRegisterIdentityRootBroadcastFail(t *testing.T) { }), core.SystemTagIdentityClaim, false).Return(nil, fmt.Errorf("pop")) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Key: "0x12345", Parent: fftypes.NewUUID().String(), @@ -291,7 +291,7 @@ func TestRegisterIdentityMissingKey(t *testing.T) { mdm := nm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", nm.ctx, "ns1").Return(nil) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Parent: fftypes.NewUUID().String(), }, false) @@ -312,7 +312,7 @@ func TestRegisterIdentityVerifyFail(t *testing.T) { mdm := nm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", nm.ctx, "ns1").Return(nil) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Parent: fftypes.NewUUID().String(), }, false) @@ -328,9 +328,9 @@ func TestRegisterIdentityBadParent(t *testing.T) { defer cancel() mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", nm.ctx, "ns1", "did:firefly:org/1").Return(nil, false, fmt.Errorf("pop")) + mim.On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/1").Return(nil, false, fmt.Errorf("pop")) - _, err := nm.RegisterIdentity(nm.ctx, "ns1", &core.IdentityCreateDTO{ + _, err := nm.RegisterIdentity(nm.ctx, &core.IdentityCreateDTO{ Name: "custom1", Parent: "did:firefly:org/1", }, false) diff --git a/internal/networkmap/register_node.go b/internal/networkmap/register_node.go index 90a35d2618..c5a56ead46 100644 --- a/internal/networkmap/register_node.go +++ b/internal/networkmap/register_node.go @@ -25,9 +25,9 @@ import ( "github.com/hyperledger/firefly/pkg/core" ) -func (nm *networkMap) RegisterNode(ctx context.Context, ns string, waitConfirm bool) (identity *core.Identity, err error) { +func (nm *networkMap) RegisterNode(ctx context.Context, waitConfirm bool) (identity *core.Identity, err error) { - nodeOwningOrg, err := nm.identity.GetMultipartyRootOrg(ctx, ns) + nodeOwningOrg, err := nm.identity.GetMultipartyRootOrg(ctx) if err != nil { return nil, err } @@ -52,5 +52,5 @@ func (nm *networkMap) RegisterNode(ctx context.Context, ns string, waitConfirm b } nodeRequest.Profile = dxInfo - return nm.RegisterIdentity(ctx, ns, nodeRequest, waitConfirm) + return nm.RegisterIdentity(ctx, nodeRequest, waitConfirm) } diff --git a/internal/networkmap/register_node_test.go b/internal/networkmap/register_node_test.go index 5932c761ad..c6714fc564 100644 --- a/internal/networkmap/register_node_test.go +++ b/internal/networkmap/register_node_test.go @@ -44,7 +44,7 @@ func TestRegisterNodeOk(t *testing.T) { parentOrg := testOrg("org1") mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", nm.ctx, "ns1").Return(parentOrg, nil) + mim.On("GetMultipartyRootOrg", nm.ctx).Return(parentOrg, nil) mim.On("VerifyIdentityChain", nm.ctx, mock.AnythingOfType("*core.Identity")).Return(parentOrg, false, nil) signerRef := &core.SignerRef{Key: "0x23456"} mim.On("ResolveIdentitySigner", nm.ctx, parentOrg).Return(signerRef, nil) @@ -66,7 +66,7 @@ func TestRegisterNodeOk(t *testing.T) { signerRef, core.SystemTagIdentityClaim, false).Return(mockMsg, nil) - node, err := nm.RegisterNode(nm.ctx, "ns1", false) + node, err := nm.RegisterNode(nm.ctx, false) assert.NoError(t, err) assert.Equal(t, *mockMsg.Header.ID, *node.Messages.Claim) @@ -88,7 +88,7 @@ func TestRegisterNodePeerInfoFail(t *testing.T) { parentOrg := testOrg("org1") mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", nm.ctx, "ns1").Return(parentOrg, nil) + mim.On("GetMultipartyRootOrg", nm.ctx).Return(parentOrg, nil) mim.On("VerifyIdentityChain", nm.ctx, mock.AnythingOfType("*core.Identity")).Return(parentOrg, false, nil) signerRef := &core.SignerRef{Key: "0x23456"} mim.On("ResolveIdentitySigner", nm.ctx, parentOrg).Return(signerRef, nil) @@ -96,7 +96,7 @@ func TestRegisterNodePeerInfoFail(t *testing.T) { mdx := nm.exchange.(*dataexchangemocks.Plugin) mdx.On("GetEndpointInfo", nm.ctx).Return(fftypes.JSONObject{}, fmt.Errorf("pop")) - _, err := nm.RegisterNode(nm.ctx, "ns1", false) + _, err := nm.RegisterNode(nm.ctx, false) assert.Regexp(t, "pop", err) } @@ -107,9 +107,9 @@ func TestRegisterNodeGetOwnerFail(t *testing.T) { defer cancel() mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", nm.ctx, "ns1").Return(nil, fmt.Errorf("pop")) + mim.On("GetMultipartyRootOrg", nm.ctx).Return(nil, fmt.Errorf("pop")) - _, err := nm.RegisterNode(nm.ctx, "ns1", false) + _, err := nm.RegisterNode(nm.ctx, false) assert.Regexp(t, "pop", err) } diff --git a/internal/networkmap/register_org.go b/internal/networkmap/register_org.go index ed7682ed5b..2518b4de81 100644 --- a/internal/networkmap/register_org.go +++ b/internal/networkmap/register_org.go @@ -25,9 +25,9 @@ import ( ) // RegisterNodeOrganization is a convenience helper to register the org configured on the node, without any extra info -func (nm *networkMap) RegisterNodeOrganization(ctx context.Context, ns string, waitConfirm bool) (*core.Identity, error) { +func (nm *networkMap) RegisterNodeOrganization(ctx context.Context, waitConfirm bool) (*core.Identity, error) { - key, err := nm.identity.GetMultipartyRootVerifier(ctx, ns) + key, err := nm.identity.GetMultipartyRootVerifier(ctx) if err != nil { return nil, err } @@ -42,10 +42,10 @@ func (nm *networkMap) RegisterNodeOrganization(ctx context.Context, ns string, w }, Key: key.Value, } - return nm.RegisterOrganization(ctx, ns, orgRequest, waitConfirm) + return nm.RegisterOrganization(ctx, orgRequest, waitConfirm) } -func (nm *networkMap) RegisterOrganization(ctx context.Context, ns string, orgRequest *core.IdentityCreateDTO, waitConfirm bool) (*core.Identity, error) { +func (nm *networkMap) RegisterOrganization(ctx context.Context, orgRequest *core.IdentityCreateDTO, waitConfirm bool) (*core.Identity, error) { orgRequest.Type = core.IdentityTypeOrg - return nm.RegisterIdentity(ctx, ns, orgRequest, waitConfirm) + return nm.RegisterIdentity(ctx, orgRequest, waitConfirm) } diff --git a/internal/networkmap/register_org_test.go b/internal/networkmap/register_org_test.go index 0854353e79..b0d6ec54ca 100644 --- a/internal/networkmap/register_org_test.go +++ b/internal/networkmap/register_org_test.go @@ -58,7 +58,7 @@ func TestRegisterNodeOrgOk(t *testing.T) { defer cancel() mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootVerifier", nm.ctx, "ns1").Return(&core.VerifierRef{ + mim.On("GetMultipartyRootVerifier", nm.ctx).Return(&core.VerifierRef{ Value: "0x12345", }, nil) mim.On("VerifyIdentityChain", nm.ctx, mock.AnythingOfType("*core.Identity")).Return(nil, false, nil) @@ -76,7 +76,7 @@ func TestRegisterNodeOrgOk(t *testing.T) { }), core.SystemTagIdentityClaim, false).Return(mockMsg, nil) - org, err := nm.RegisterNodeOrganization(nm.ctx, "ns1", false) + org, err := nm.RegisterNodeOrganization(nm.ctx, false) assert.NoError(t, err) assert.Equal(t, *mockMsg.Header.ID, *org.Messages.Claim) @@ -93,11 +93,11 @@ func TestRegisterNodeOrgNoName(t *testing.T) { nm.orgName = "" mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootVerifier", nm.ctx, "ns1").Return(&core.VerifierRef{ + mim.On("GetMultipartyRootVerifier", nm.ctx).Return(&core.VerifierRef{ Value: "0x12345", }, nil) - _, err := nm.RegisterNodeOrganization(nm.ctx, "ns1", false) + _, err := nm.RegisterNodeOrganization(nm.ctx, false) assert.Regexp(t, "FF10216", err) mim.AssertExpectations(t) @@ -109,9 +109,9 @@ func TestRegisterNodeGetOwnerBlockchainKeyFail(t *testing.T) { defer cancel() mim := nm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootVerifier", nm.ctx, "ns1").Return(nil, fmt.Errorf("pop")) + mim.On("GetMultipartyRootVerifier", nm.ctx).Return(nil, fmt.Errorf("pop")) - _, err := nm.RegisterNodeOrganization(nm.ctx, "ns1", false) + _, err := nm.RegisterNodeOrganization(nm.ctx, false) assert.Regexp(t, "pop", err) } diff --git a/internal/networkmap/update_identity.go b/internal/networkmap/update_identity.go index 077245848b..c48f80f025 100644 --- a/internal/networkmap/update_identity.go +++ b/internal/networkmap/update_identity.go @@ -25,22 +25,22 @@ import ( "github.com/hyperledger/firefly/pkg/core" ) -func (nm *networkMap) UpdateIdentity(ctx context.Context, ns, uuidStr string, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) { +func (nm *networkMap) UpdateIdentity(ctx context.Context, uuidStr string, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) { id, err := fftypes.ParseUUID(ctx, uuidStr) if err != nil { return nil, err } - return nm.updateIdentityID(ctx, ns, id, dto, waitConfirm) + return nm.updateIdentityID(ctx, id, dto, waitConfirm) } -func (nm *networkMap) updateIdentityID(ctx context.Context, ns string, id *fftypes.UUID, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) { +func (nm *networkMap) updateIdentityID(ctx context.Context, id *fftypes.UUID, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) { // Get the original identity identity, err = nm.identity.CachedIdentityLookupByID(ctx, id) if err != nil { return nil, err } - if identity == nil || identity.Namespace != ns { + if identity == nil || identity.Namespace != nm.namespace { return nil, i18n.NewError(ctx, coremsgs.Msg404NoResult) } diff --git a/internal/networkmap/update_identity_test.go b/internal/networkmap/update_identity_test.go index 8954f5da2e..5b949654a3 100644 --- a/internal/networkmap/update_identity_test.go +++ b/internal/networkmap/update_identity_test.go @@ -51,7 +51,7 @@ func TestUpdateIdentityProfileOk(t *testing.T) { }), core.SystemTagIdentityUpdate, true).Return(mockMsg1, nil) - org, err := nm.UpdateIdentity(nm.ctx, identity.Namespace, identity.ID.String(), &core.IdentityUpdateDTO{ + org, err := nm.UpdateIdentity(nm.ctx, identity.ID.String(), &core.IdentityUpdateDTO{ IdentityProfile: core.IdentityProfile{ Description: "new desc", Profile: fftypes.JSONObject{"new": "profile"}, @@ -85,7 +85,7 @@ func TestUpdateIdentityProfileBroadcastFail(t *testing.T) { }), core.SystemTagIdentityUpdate, true).Return(nil, fmt.Errorf("pop")) - _, err := nm.UpdateIdentity(nm.ctx, identity.Namespace, identity.ID.String(), &core.IdentityUpdateDTO{ + _, err := nm.UpdateIdentity(nm.ctx, identity.ID.String(), &core.IdentityUpdateDTO{ IdentityProfile: core.IdentityProfile{ Description: "new desc", Profile: fftypes.JSONObject{"new": "profile"}, @@ -109,7 +109,7 @@ func TestUpdateIdentityProfileBadProfile(t *testing.T) { signerRef := &core.SignerRef{Key: "0x12345"} mim.On("ResolveIdentitySigner", nm.ctx, identity).Return(signerRef, nil) - _, err := nm.UpdateIdentity(nm.ctx, identity.Namespace, identity.ID.String(), &core.IdentityUpdateDTO{ + _, err := nm.UpdateIdentity(nm.ctx, identity.ID.String(), &core.IdentityUpdateDTO{ IdentityProfile: core.IdentityProfile{ Description: string(make([]byte, 4097)), Profile: fftypes.JSONObject{"new": "profile"}, @@ -130,7 +130,7 @@ func TestUpdateIdentityProfileNotFound(t *testing.T) { mim := nm.identity.(*identitymanagermocks.Manager) mim.On("CachedIdentityLookupByID", nm.ctx, identity.ID).Return(nil, nil) - _, err := nm.UpdateIdentity(nm.ctx, identity.Namespace, identity.ID.String(), &core.IdentityUpdateDTO{ + _, err := nm.UpdateIdentity(nm.ctx, identity.ID.String(), &core.IdentityUpdateDTO{ IdentityProfile: core.IdentityProfile{ Description: string(make([]byte, 4097)), Profile: fftypes.JSONObject{"new": "profile"}, @@ -151,7 +151,7 @@ func TestUpdateIdentityProfileLookupFail(t *testing.T) { mim := nm.identity.(*identitymanagermocks.Manager) mim.On("CachedIdentityLookupByID", nm.ctx, identity.ID).Return(nil, fmt.Errorf("pop")) - _, err := nm.UpdateIdentity(nm.ctx, identity.Namespace, identity.ID.String(), &core.IdentityUpdateDTO{ + _, err := nm.UpdateIdentity(nm.ctx, identity.ID.String(), &core.IdentityUpdateDTO{ IdentityProfile: core.IdentityProfile{ Description: string(make([]byte, 4097)), Profile: fftypes.JSONObject{"new": "profile"}, @@ -174,7 +174,7 @@ func TestUpdateIdentityProfileClaimLookupFail(t *testing.T) { signerRef := &core.SignerRef{Key: "0x12345"} mim.On("ResolveIdentitySigner", nm.ctx, identity).Return(signerRef, fmt.Errorf("pop")) - _, err := nm.UpdateIdentity(nm.ctx, identity.Namespace, identity.ID.String(), &core.IdentityUpdateDTO{ + _, err := nm.UpdateIdentity(nm.ctx, identity.ID.String(), &core.IdentityUpdateDTO{ IdentityProfile: core.IdentityProfile{ Description: "Desc1", Profile: fftypes.JSONObject{"new": "profile"}, @@ -190,6 +190,6 @@ func TestUpdateIdentityProfileBadID(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - _, err := nm.UpdateIdentity(nm.ctx, "ns1", "badness", &core.IdentityUpdateDTO{}, true) + _, err := nm.UpdateIdentity(nm.ctx, "badness", &core.IdentityUpdateDTO{}, true) assert.Regexp(t, "FF00138", err) } diff --git a/internal/orchestrator/orchestrator.go b/internal/orchestrator/orchestrator.go index f1c6367dfd..7a52bb1e7a 100644 --- a/internal/orchestrator/orchestrator.go +++ b/internal/orchestrator/orchestrator.go @@ -64,7 +64,7 @@ type Orchestrator interface { PrivateMessaging() privatemessaging.Manager // Status - GetStatus(ctx context.Context, ns string) (*core.NodeStatus, error) + GetStatus(ctx context.Context) (*core.NodeStatus, error) // Subscription management GetSubscriptions(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Subscription, *database.FilterResult, error) @@ -114,7 +114,7 @@ type Orchestrator interface { RequestReply(ctx context.Context, ns string, msg *core.MessageInOut) (reply *core.MessageInOut, err error) // Network Operations - SubmitNetworkAction(ctx context.Context, ns string, action *core.NetworkAction) error + SubmitNetworkAction(ctx context.Context, action *core.NetworkAction) error } type BlockchainPlugin struct { @@ -394,7 +394,7 @@ func (or *orchestrator) initComponents(ctx context.Context) (err error) { } if or.identity == nil { - or.identity, err = identity.NewIdentityManager(ctx, or.config.DefaultKey, or.config.Multiparty.OrgName, or.config.Multiparty.OrgKey, or.database(), or.blockchain(), or.data) + or.identity, err = identity.NewIdentityManager(ctx, or.namespace, or.config.DefaultKey, or.config.Multiparty.OrgName, or.config.Multiparty.OrgKey, or.database(), or.blockchain(), or.data) if err != nil { return err } @@ -471,27 +471,27 @@ func (or *orchestrator) initComponents(ctx context.Context) (err error) { or.syncasync.Init(or.events) if or.networkmap == nil { - or.networkmap, err = networkmap.NewNetworkMap(ctx, or.config.Multiparty.OrgName, or.config.Multiparty.OrgDesc, or.database(), or.data, or.broadcast, or.dataexchange(), or.identity, or.syncasync) + or.networkmap, err = networkmap.NewNetworkMap(ctx, or.namespace, or.config.Multiparty.OrgName, or.config.Multiparty.OrgDesc, or.database(), or.data, or.broadcast, or.dataexchange(), or.identity, or.syncasync) } return err } -func (or *orchestrator) SubmitNetworkAction(ctx context.Context, ns string, action *core.NetworkAction) error { - key, err := or.identity.NormalizeSigningKey(ctx, ns, "", identity.KeyNormalizationBlockchainPlugin) +func (or *orchestrator) SubmitNetworkAction(ctx context.Context, action *core.NetworkAction) error { + key, err := or.identity.NormalizeSigningKey(ctx, "", identity.KeyNormalizationBlockchainPlugin) if err != nil { return err } if action.Type == core.NetworkActionTerminate { - if ns != core.LegacySystemNamespace { + if or.namespace != core.LegacySystemNamespace { // For now, "terminate" only works on ff_system - return i18n.NewError(ctx, coremsgs.MsgTerminateNotSupported, ns) + return i18n.NewError(ctx, coremsgs.MsgTerminateNotSupported, or.namespace) } } else { return i18n.NewError(ctx, coremsgs.MsgUnrecognizedNetworkAction, action.Type) } // TODO: This should be a new operation type po := &core.PreparedOperation{ - Namespace: ns, + Namespace: or.namespace, ID: fftypes.NewUUID(), } return or.blockchain().SubmitNetworkAction(ctx, po.NamespacedIDString(), key, action.Type) diff --git a/internal/orchestrator/orchestrator_test.go b/internal/orchestrator/orchestrator_test.go index 9d6411fabb..40c5362077 100644 --- a/internal/orchestrator/orchestrator_test.go +++ b/internal/orchestrator/orchestrator_test.go @@ -425,29 +425,32 @@ func TestStartStopOk(t *testing.T) { func TestNetworkAction(t *testing.T) { or := newTestOrchestrator() - or.mim.On("NormalizeSigningKey", context.Background(), "ff_system", "", identity.KeyNormalizationBlockchainPlugin).Return("0x123", nil) + or.namespace = core.LegacySystemNamespace + or.mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x123", nil) or.mbi.On("SubmitNetworkAction", context.Background(), mock.Anything, "0x123", core.NetworkActionTerminate).Return(nil) - err := or.SubmitNetworkAction(context.Background(), "ff_system", &core.NetworkAction{Type: core.NetworkActionTerminate}) + err := or.SubmitNetworkAction(context.Background(), &core.NetworkAction{Type: core.NetworkActionTerminate}) assert.NoError(t, err) } func TestNetworkActionBadKey(t *testing.T) { or := newTestOrchestrator() - or.mim.On("NormalizeSigningKey", context.Background(), "ff_system", "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) - err := or.SubmitNetworkAction(context.Background(), "ff_system", &core.NetworkAction{Type: core.NetworkActionTerminate}) + or.namespace = core.LegacySystemNamespace + or.mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("", fmt.Errorf("pop")) + err := or.SubmitNetworkAction(context.Background(), &core.NetworkAction{Type: core.NetworkActionTerminate}) assert.EqualError(t, err, "pop") } func TestNetworkActionBadType(t *testing.T) { or := newTestOrchestrator() - or.mim.On("NormalizeSigningKey", context.Background(), "ff_system", "", identity.KeyNormalizationBlockchainPlugin).Return("0x123", nil) - err := or.SubmitNetworkAction(context.Background(), "ff_system", &core.NetworkAction{Type: "bad"}) + or.namespace = core.LegacySystemNamespace + or.mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x123", nil) + err := or.SubmitNetworkAction(context.Background(), &core.NetworkAction{Type: "bad"}) assert.Regexp(t, "FF10397", err) } func TestNetworkActionBadNamespace(t *testing.T) { or := newTestOrchestrator() - or.mim.On("NormalizeSigningKey", context.Background(), "ns", "", identity.KeyNormalizationBlockchainPlugin).Return("0x123", nil) - err := or.SubmitNetworkAction(context.Background(), "ns", &core.NetworkAction{Type: core.NetworkActionTerminate}) + or.mim.On("NormalizeSigningKey", context.Background(), "", identity.KeyNormalizationBlockchainPlugin).Return("0x123", nil) + err := or.SubmitNetworkAction(context.Background(), &core.NetworkAction{Type: core.NetworkActionTerminate}) assert.Regexp(t, "FF10399", err) } diff --git a/internal/orchestrator/status.go b/internal/orchestrator/status.go index d33e73b495..402c259b43 100644 --- a/internal/orchestrator/status.go +++ b/internal/orchestrator/status.go @@ -77,7 +77,7 @@ func (or *orchestrator) GetNodeUUID(ctx context.Context, ns string) (node *fftyp if or.node != nil { return or.node } - status, err := or.GetStatus(ctx, ns) + status, err := or.GetStatus(ctx) if err != nil { log.L(or.ctx).Warnf("Failed to query local node UUID: %s", err) return nil @@ -90,14 +90,14 @@ func (or *orchestrator) GetNodeUUID(ctx context.Context, ns string) (node *fftyp return or.node } -func (or *orchestrator) GetStatus(ctx context.Context, ns string) (status *core.NodeStatus, err error) { +func (or *orchestrator) GetStatus(ctx context.Context) (status *core.NodeStatus, err error) { - org, err := or.identity.GetMultipartyRootOrg(ctx, ns) + org, err := or.identity.GetMultipartyRootOrg(ctx) if err != nil { log.L(ctx).Warnf("Failed to query local org for status: %s", err) } status = &core.NodeStatus{ - Namespace: ns, + Namespace: or.namespace, Node: core.NodeStatusNode{ Name: config.GetString(coreconfig.NodeName), }, @@ -113,7 +113,7 @@ func (or *orchestrator) GetStatus(ctx context.Context, ns string) (status *core. status.Org.DID = org.DID // It's possible namespace will fallback to SystemNamespace (if configured to do so) - ns = org.Namespace + ns := org.Namespace verifiers, _, err := or.networkmap.GetIdentityVerifiers(ctx, ns, org.ID.String(), database.VerifierQueryFactory.NewFilter(ctx).And()) if err != nil { @@ -124,7 +124,7 @@ func (or *orchestrator) GetStatus(ctx context.Context, ns string) (status *core. status.Org.Verifiers[i] = &v.VerifierRef } - node, _, err := or.identity.CachedIdentityLookupNilOK(ctx, ns, fmt.Sprintf("%s%s", core.FireFlyNodeDIDPrefix, status.Node.Name)) + node, _, err := or.identity.CachedIdentityLookupNilOK(ctx, fmt.Sprintf("%s%s", core.FireFlyNodeDIDPrefix, status.Node.Name)) if err != nil { return nil, err } diff --git a/internal/orchestrator/status_test.go b/internal/orchestrator/status_test.go index ec45fdcb17..327f9ffbf2 100644 --- a/internal/orchestrator/status_test.go +++ b/internal/orchestrator/status_test.go @@ -89,7 +89,7 @@ func TestGetStatusRegistered(t *testing.T) { nodeID := fftypes.NewUUID() mim := or.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", or.ctx, "ns").Return(&core.Identity{ + mim.On("GetMultipartyRootOrg", or.ctx).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, Name: "org1", @@ -97,7 +97,7 @@ func TestGetStatusRegistered(t *testing.T) { DID: "did:firefly:org/org1", }, }, nil) - mim.On("CachedIdentityLookupNilOK", or.ctx, "ns", "did:firefly:node/node1").Return(&core.Identity{ + mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: nodeID, Name: "node1", @@ -117,7 +117,7 @@ func TestGetStatusRegistered(t *testing.T) { mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) - status, err := or.GetStatus(or.ctx, "ns") + status, err := or.GetStatus(or.ctx) assert.NoError(t, err) assert.Equal(t, "ns", status.Namespace) @@ -156,7 +156,7 @@ func TestGetStatusVerifierLookupFail(t *testing.T) { nodeID := fftypes.NewUUID() mim := or.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", or.ctx, "ns").Return(&core.Identity{ + mim.On("GetMultipartyRootOrg", or.ctx).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, Name: "org1", @@ -164,7 +164,7 @@ func TestGetStatusVerifierLookupFail(t *testing.T) { DID: "did:firefly:org/org1", }, }, nil) - mim.On("CachedIdentityLookupNilOK", or.ctx, "ns", "did:firefly:node/node1").Return(&core.Identity{ + mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: nodeID, Name: "node1", @@ -177,7 +177,7 @@ func TestGetStatusVerifierLookupFail(t *testing.T) { mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) - _, err := or.GetStatus(or.ctx, "ns") + _, err := or.GetStatus(or.ctx) assert.Regexp(t, "pop", err) } @@ -193,7 +193,7 @@ func TestGetStatusWrongNodeOwner(t *testing.T) { nodeID := fftypes.NewUUID() mim := or.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", or.ctx, "ns").Return(&core.Identity{ + mim.On("GetMultipartyRootOrg", or.ctx).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, Name: "org1", @@ -201,7 +201,7 @@ func TestGetStatusWrongNodeOwner(t *testing.T) { DID: "did:firefly:org/org1", }, }, nil) - mim.On("CachedIdentityLookupNilOK", or.ctx, "ns", "did:firefly:node/node1").Return(&core.Identity{ + mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: nodeID, Name: "node1", @@ -221,7 +221,7 @@ func TestGetStatusWrongNodeOwner(t *testing.T) { mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) - status, err := or.GetStatus(or.ctx, "ns") + status, err := or.GetStatus(or.ctx) assert.NoError(t, err) assert.Equal(t, "ns", status.Namespace) @@ -245,14 +245,14 @@ func TestGetStatusUnregistered(t *testing.T) { config.Set(coreconfig.NodeName, "node1") mim := or.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", or.ctx, "ns").Return(nil, fmt.Errorf("pop")) + mim.On("GetMultipartyRootOrg", or.ctx).Return(nil, fmt.Errorf("pop")) or.config.Multiparty.OrgName = "org1" mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) - status, err := or.GetStatus(or.ctx, "ns") + status, err := or.GetStatus(or.ctx) assert.NoError(t, err) assert.Equal(t, "ns", status.Namespace) @@ -277,7 +277,7 @@ func TestGetStatusOrgOnlyRegistered(t *testing.T) { orgID := fftypes.NewUUID() mim := or.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", or.ctx, "ns").Return(&core.Identity{ + mim.On("GetMultipartyRootOrg", or.ctx).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, Name: "org1", @@ -285,7 +285,7 @@ func TestGetStatusOrgOnlyRegistered(t *testing.T) { DID: "did:firefly:org/org1", }, }, nil) - mim.On("CachedIdentityLookupNilOK", or.ctx, "ns", "did:firefly:node/node1").Return(nil, false, nil) + mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(nil, false, nil) mnm := or.networkmap.(*networkmapmocks.Manager) mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ @@ -299,7 +299,7 @@ func TestGetStatusOrgOnlyRegistered(t *testing.T) { mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) - status, err := or.GetStatus(or.ctx, "ns") + status, err := or.GetStatus(or.ctx) assert.NoError(t, err) assert.Equal(t, "ns", status.Namespace) @@ -333,7 +333,7 @@ func TestGetStatusNodeError(t *testing.T) { orgID := fftypes.NewUUID() mim := or.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", or.ctx, "ns").Return(&core.Identity{ + mim.On("GetMultipartyRootOrg", or.ctx).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, Name: "org1", @@ -341,7 +341,7 @@ func TestGetStatusNodeError(t *testing.T) { DID: "did:firefly:org/org1", }, }, nil) - mim.On("CachedIdentityLookupNilOK", or.ctx, "ns", "did:firefly:node/node1").Return(nil, false, fmt.Errorf("pop")) + mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(nil, false, fmt.Errorf("pop")) mnm := or.networkmap.(*networkmapmocks.Manager) mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ @@ -353,7 +353,7 @@ func TestGetStatusNodeError(t *testing.T) { mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) - _, err := or.GetStatus(or.ctx, "ns") + _, err := or.GetStatus(or.ctx) assert.EqualError(t, err, "pop") assert.Nil(t, or.GetNodeUUID(or.ctx, "ns")) diff --git a/internal/privatemessaging/message.go b/internal/privatemessaging/message.go index 181aa7255c..74d6e5ec5f 100644 --- a/internal/privatemessaging/message.go +++ b/internal/privatemessaging/message.go @@ -138,7 +138,7 @@ func (s *messageSender) resolve(ctx context.Context) error { } // Resolve the sending identity - if err := s.mgr.identity.ResolveInputSigningIdentity(ctx, msg.Header.Namespace, &msg.Header.SignerRef); err != nil { + if err := s.mgr.identity.ResolveInputSigningIdentity(ctx, &msg.Header.SignerRef); err != nil { return i18n.WrapError(ctx, err, coremsgs.MsgAuthorInvalid) } diff --git a/internal/privatemessaging/message_test.go b/internal/privatemessaging/message_test.go index 2998c07747..fe10557ad4 100644 --- a/internal/privatemessaging/message_test.go +++ b/internal/privatemessaging/message_test.go @@ -80,9 +80,9 @@ func TestSendConfirmMessageE2EOk(t *testing.T) { intermediateOrg := newTestOrg("localorg") intermediateOrg.Parent = rootOrg.ID localNode := newTestNode("node1", intermediateOrg) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(intermediateOrg, nil) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(intermediateOrg, false, nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(intermediateOrg, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(intermediateOrg, false, nil) mim.On("CachedIdentityLookupByID", pm.ctx, rootOrg.ID).Return(rootOrg, nil) mdm := pm.data.(*datamocks.Manager) @@ -132,8 +132,8 @@ func TestSendUnpinnedMessageE2EOk(t *testing.T) { defer cancel() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Run(func(args mock.Arguments) { - identity := args[2].(*core.SignerRef) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Run(func(args mock.Arguments) { + identity := args[1].(*core.SignerRef) identity.Author = "localorg" identity.Key = "localkey" }).Return(nil) @@ -181,7 +181,7 @@ func TestSendMessageBadGroup(t *testing.T) { mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) _, err := pm.SendMessage(pm.ctx, "ns1", &core.MessageInOut{ InlineData: core.InlineData{ @@ -204,7 +204,7 @@ func TestSendMessageBadIdentity(t *testing.T) { mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(fmt.Errorf("pop")) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(fmt.Errorf("pop")) _, err := pm.SendMessage(pm.ctx, "ns1", &core.MessageInOut{ InlineData: core.InlineData{ @@ -231,14 +231,14 @@ func TestResolveAndSendBadInlineData(t *testing.T) { mim := pm.identity.(*identitymanagermocks.Manager) localOrg := newTestOrg("localorg") localNode := newTestNode("node1", localOrg) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Run(func(args mock.Arguments) { + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Run(func(args mock.Arguments) { identity := args[2].(*core.SignerRef) identity.Author = "localorg" identity.Key = "localkey" }).Return(nil) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "localorg").Return(localOrg, false, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "localorg").Return(localOrg, false, nil) mdi := pm.database.(*databasemocks.Plugin) mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() @@ -279,8 +279,8 @@ func TestSendUnpinnedMessageTooLarge(t *testing.T) { defer cancel() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Run(func(args mock.Arguments) { - identity := args[2].(*core.SignerRef) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Run(func(args mock.Arguments) { + identity := args[1].(*core.SignerRef) identity.Author = "localorg" identity.Key = "localkey" }).Return(nil) @@ -350,14 +350,14 @@ func TestMessagePrepare(t *testing.T) { mim := pm.identity.(*identitymanagermocks.Manager) localOrg := newTestOrg("localorg") localNode := newTestNode("node1", localOrg) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Run(func(args mock.Arguments) { - identity := args[2].(*core.SignerRef) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Run(func(args mock.Arguments) { + identity := args[1].(*core.SignerRef) identity.Author = "localorg" identity.Key = "localkey" }).Return(nil) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "localorg").Return(localOrg, false, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "localorg").Return(localOrg, false, nil) mdi := pm.database.(*databasemocks.Plugin) mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() @@ -457,7 +457,7 @@ func TestSendUnpinnedMessageInsertFail(t *testing.T) { defer cancel() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.MatchedBy(func(identity *core.SignerRef) bool { + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.MatchedBy(func(identity *core.SignerRef) bool { assert.Empty(t, identity.Author) return true })).Return(nil) @@ -504,7 +504,7 @@ func TestSendUnpinnedMessageConfirmFail(t *testing.T) { mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(fmt.Errorf("pop")) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(fmt.Errorf("pop")) _, err := pm.SendMessage(pm.ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -535,7 +535,7 @@ func TestSendUnpinnedMessageResolveGroupFail(t *testing.T) { mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) groupID := fftypes.NewRandB32() @@ -578,7 +578,7 @@ func TestSendUnpinnedMessageResolveGroupNotFound(t *testing.T) { mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) groupID := fftypes.NewRandB32() @@ -647,7 +647,7 @@ func TestRequestReplySuccess(t *testing.T) { defer cancel() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.Anything).Return(nil) + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.Anything).Return(nil) msa := pm.syncasync.(*syncasyncmocks.Bridge) msa.On("WaitForReply", pm.ctx, "ns1", mock.Anything, mock.Anything). @@ -692,11 +692,11 @@ func TestDispatchedUnpinnedMessageOK(t *testing.T) { node2 := newTestNode("node2", newTestOrg("remoteorg")) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, "ns1", mock.MatchedBy(func(identity *core.SignerRef) bool { + mim.On("ResolveInputSigningIdentity", pm.ctx, mock.MatchedBy(func(identity *core.SignerRef) bool { assert.Equal(t, "localorg", identity.Author) return true })).Return(nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdx := pm.exchange.(*dataexchangemocks.Plugin) mdx.On("SendMessage", pm.ctx, mock.Anything, "node2-peer", mock.Anything).Return(nil) @@ -763,7 +763,7 @@ func TestSendDataTransferBlobsFail(t *testing.T) { assert.Equal(t, "localorg", identity.Author) return true })).Return(nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) mdi.On("GetBlobMatchingHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) @@ -812,7 +812,7 @@ func TestSendDataTransferFail(t *testing.T) { nodes := []*core.Identity{node2} mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mom := pm.operations.(*operationmocks.Manager) mom.On("AddOrReuseOperation", pm.ctx, mock.Anything).Return(nil) @@ -865,7 +865,7 @@ func TestSendDataTransferInsertOperationFail(t *testing.T) { assert.Equal(t, "localorg", identity.Author) return true })).Return(nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mom := pm.operations.(*operationmocks.Manager) mom.On("AddOrReuseOperation", pm.ctx, mock.Anything).Return(fmt.Errorf("pop")) diff --git a/internal/privatemessaging/privatemessaging.go b/internal/privatemessaging/privatemessaging.go index af2cfa0fbd..07c9a7b0a8 100644 --- a/internal/privatemessaging/privatemessaging.go +++ b/internal/privatemessaging/privatemessaging.go @@ -269,7 +269,7 @@ func (pm *privateMessaging) sendData(ctx context.Context, tw *core.TransportWrap batch := tw.Batch // Lookup the local org - localOrg, err := pm.identity.GetMultipartyRootOrg(ctx, batch.Namespace) + localOrg, err := pm.identity.GetMultipartyRootOrg(ctx) if err != nil { return err } diff --git a/internal/privatemessaging/privatemessaging_test.go b/internal/privatemessaging/privatemessaging_test.go index 9c0f167fe6..f3e89cbea0 100644 --- a/internal/privatemessaging/privatemessaging_test.go +++ b/internal/privatemessaging/privatemessaging_test.go @@ -135,7 +135,7 @@ func TestDispatchBatchWithBlobs(t *testing.T) { mim := pm.identity.(*identitymanagermocks.Manager) mom := pm.operations.(*operationmocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ Hash: fftypes.NewRandB32(), GroupIdentity: core.GroupIdentity{ @@ -274,7 +274,7 @@ func TestSendAndSubmitBatchUnregisteredNode(t *testing.T) { }, nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(nil, fmt.Errorf("pop")) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(nil, fmt.Errorf("pop")) err := pm.dispatchPinnedBatch(pm.ctx, &batch.DispatchState{ Persisted: core.BatchPersisted{ @@ -324,7 +324,7 @@ func TestSendSubmitInsertOperationFail(t *testing.T) { node2 := newTestNode("node2", newTestOrg("remoteorg")) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() @@ -370,7 +370,7 @@ func TestSendSubmitBlobTransferFail(t *testing.T) { blob1 := fftypes.NewRandB32() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() @@ -430,7 +430,7 @@ func TestWriteTransactionSubmitBatchPinFail(t *testing.T) { blob1 := fftypes.NewRandB32() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() diff --git a/internal/privatemessaging/recipients.go b/internal/privatemessaging/recipients.go index be3954f905..405f2b88e0 100644 --- a/internal/privatemessaging/recipients.go +++ b/internal/privatemessaging/recipients.go @@ -79,7 +79,7 @@ func (pm *privateMessaging) getFirstNodeForOrg(ctx context.Context, identity *co func (pm *privateMessaging) resolveNode(ctx context.Context, identity *core.Identity, nodeInput string) (node *core.Identity, err error) { retryable := true if nodeInput != "" { - node, retryable, err = pm.identity.CachedIdentityLookupMustExist(ctx, identity.Namespace, nodeInput) + node, retryable, err = pm.identity.CachedIdentityLookupMustExist(ctx, nodeInput) } else { // Find any node owned by this organization inputIdentityDebugInfo := fmt.Sprintf("%s (%s)", identity.DID, identity.ID) @@ -107,7 +107,7 @@ func (pm *privateMessaging) resolveNode(ctx context.Context, identity *core.Iden func (pm *privateMessaging) getRecipients(ctx context.Context, in *core.MessageInOut) (gi *core.GroupIdentity, err error) { - localOrg, err := pm.identity.GetMultipartyRootOrg(ctx, in.Header.Namespace) + localOrg, err := pm.identity.GetMultipartyRootOrg(ctx) if err != nil { return nil, err } @@ -120,7 +120,7 @@ func (pm *privateMessaging) getRecipients(ctx context.Context, in *core.MessageI } for i, rInput := range in.Group.Members { // Resolve the identity - identity, _, err := pm.identity.CachedIdentityLookupMustExist(ctx, in.Header.Namespace, rInput.Identity) + identity, _, err := pm.identity.CachedIdentityLookupMustExist(ctx, rInput.Identity) if err != nil { return nil, err } diff --git a/internal/privatemessaging/recipients_test.go b/internal/privatemessaging/recipients_test.go index 96f4a910b6..356c786dcf 100644 --- a/internal/privatemessaging/recipients_test.go +++ b/internal/privatemessaging/recipients_test.go @@ -48,8 +48,8 @@ func TestResolveMemberListNewGroupE2E(t *testing.T) { mdi.On("UpsertGroup", pm.ctx, mock.Anything, database.UpsertOptimizationNew).Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "remoteorg").Return(remoteOrg, false, nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localOrg, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "remoteorg").Return(remoteOrg, false, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) ud := mdi.On("UpsertData", pm.ctx, mock.Anything, database.UpsertOptimizationNew).Return(nil) ud.RunFn = func(a mock.Arguments) { data := a[1].(*core.Data) @@ -115,8 +115,8 @@ func TestResolveMemberListExistingGroup(t *testing.T) { mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil) mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(localOrg, false, nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localNode, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -148,8 +148,8 @@ func TestResolveMemberListLookupFail(t *testing.T) { localNode := newTestNode("node1", localOrg) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(nil, true, fmt.Errorf("pop")) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localNode, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(nil, true, fmt.Errorf("pop")) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -183,8 +183,8 @@ func TestResolveMemberListGetGroupsFail(t *testing.T) { mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil) mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(localOrg, false, nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localNode, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -213,7 +213,7 @@ func TestResolveMemberListLocalOrgUnregistered(t *testing.T) { defer cancel() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(nil, fmt.Errorf("pop")) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(nil, fmt.Errorf("pop")) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -251,8 +251,8 @@ func TestResolveMemberListMissingLocalMemberLookupFailed(t *testing.T) { mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, fmt.Errorf("pop")).Once() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(localOrg, false, nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localNode, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -287,8 +287,8 @@ func TestResolveMemberListNodeNotFound(t *testing.T) { mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil).Once() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(localOrg, false, nil) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(localNode, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -326,8 +326,8 @@ func TestResolveMemberNodeOwnedParentOrg(t *testing.T) { mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil) mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("GetMultipartyRootOrg", pm.ctx, "ns1").Return(parentOrg, nil) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "org1").Return(childOrg, false, nil) + mim.On("GetMultipartyRootOrg", pm.ctx).Return(parentOrg, nil) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(childOrg, false, nil) mim.On("CachedIdentityLookupByID", pm.ctx, parentOrg.ID).Return(parentOrg, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ @@ -356,7 +356,7 @@ func TestGetNodeFail(t *testing.T) { defer cancel() mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("CachedIdentityLookupMustExist", pm.ctx, "ns1", "id-node1").Return(nil, true, fmt.Errorf("pop")) + mim.On("CachedIdentityLookupMustExist", pm.ctx, "id-node1").Return(nil, true, fmt.Errorf("pop")) _, err := pm.resolveNode(pm.ctx, newTestOrg("org1"), "id-node1") assert.Regexp(t, "pop", err) diff --git a/mocks/identitymanagermocks/manager.go b/mocks/identitymanagermocks/manager.go index 1a1a0db381..d857118c9c 100644 --- a/mocks/identitymanagermocks/manager.go +++ b/mocks/identitymanagermocks/manager.go @@ -39,13 +39,13 @@ func (_m *Manager) CachedIdentityLookupByID(ctx context.Context, id *fftypes.UUI return r0, r1 } -// CachedIdentityLookupMustExist provides a mock function with given fields: ctx, namespace, did -func (_m *Manager) CachedIdentityLookupMustExist(ctx context.Context, namespace string, did string) (*core.Identity, bool, error) { - ret := _m.Called(ctx, namespace, did) +// CachedIdentityLookupMustExist provides a mock function with given fields: ctx, did +func (_m *Manager) CachedIdentityLookupMustExist(ctx context.Context, did string) (*core.Identity, bool, error) { + ret := _m.Called(ctx, did) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { - r0 = rf(ctx, namespace, did) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { + r0 = rf(ctx, did) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -53,15 +53,15 @@ func (_m *Manager) CachedIdentityLookupMustExist(ctx context.Context, namespace } var r1 bool - if rf, ok := ret.Get(1).(func(context.Context, string, string) bool); ok { - r1 = rf(ctx, namespace, did) + if rf, ok := ret.Get(1).(func(context.Context, string) bool); ok { + r1 = rf(ctx, did) } else { r1 = ret.Get(1).(bool) } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, string) error); ok { - r2 = rf(ctx, namespace, did) + if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { + r2 = rf(ctx, did) } else { r2 = ret.Error(2) } @@ -69,13 +69,13 @@ func (_m *Manager) CachedIdentityLookupMustExist(ctx context.Context, namespace return r0, r1, r2 } -// CachedIdentityLookupNilOK provides a mock function with given fields: ctx, namespace, did -func (_m *Manager) CachedIdentityLookupNilOK(ctx context.Context, namespace string, did string) (*core.Identity, bool, error) { - ret := _m.Called(ctx, namespace, did) +// CachedIdentityLookupNilOK provides a mock function with given fields: ctx, did +func (_m *Manager) CachedIdentityLookupNilOK(ctx context.Context, did string) (*core.Identity, bool, error) { + ret := _m.Called(ctx, did) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { - r0 = rf(ctx, namespace, did) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { + r0 = rf(ctx, did) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -83,15 +83,15 @@ func (_m *Manager) CachedIdentityLookupNilOK(ctx context.Context, namespace stri } var r1 bool - if rf, ok := ret.Get(1).(func(context.Context, string, string) bool); ok { - r1 = rf(ctx, namespace, did) + if rf, ok := ret.Get(1).(func(context.Context, string) bool); ok { + r1 = rf(ctx, did) } else { r1 = ret.Get(1).(bool) } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, string) error); ok { - r2 = rf(ctx, namespace, did) + if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { + r2 = rf(ctx, did) } else { r2 = ret.Error(2) } @@ -99,13 +99,13 @@ func (_m *Manager) CachedIdentityLookupNilOK(ctx context.Context, namespace stri return r0, r1, r2 } -// CachedVerifierLookup provides a mock function with given fields: ctx, vType, namespace, value -func (_m *Manager) CachedVerifierLookup(ctx context.Context, vType fftypes.FFEnum, namespace string, value string) (*core.Verifier, error) { - ret := _m.Called(ctx, vType, namespace, value) +// CachedVerifierLookup provides a mock function with given fields: ctx, vType, value +func (_m *Manager) CachedVerifierLookup(ctx context.Context, vType fftypes.FFEnum, value string) (*core.Verifier, error) { + ret := _m.Called(ctx, vType, value) var r0 *core.Verifier - if rf, ok := ret.Get(0).(func(context.Context, fftypes.FFEnum, string, string) *core.Verifier); ok { - r0 = rf(ctx, vType, namespace, value) + if rf, ok := ret.Get(0).(func(context.Context, fftypes.FFEnum, string) *core.Verifier); ok { + r0 = rf(ctx, vType, value) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Verifier) @@ -113,8 +113,8 @@ func (_m *Manager) CachedVerifierLookup(ctx context.Context, vType fftypes.FFEnu } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, fftypes.FFEnum, string, string) error); ok { - r1 = rf(ctx, vType, namespace, value) + if rf, ok := ret.Get(1).(func(context.Context, fftypes.FFEnum, string) error); ok { + r1 = rf(ctx, vType, value) } else { r1 = ret.Error(1) } @@ -122,13 +122,13 @@ func (_m *Manager) CachedVerifierLookup(ctx context.Context, vType fftypes.FFEnu return r0, r1 } -// FindIdentityForVerifier provides a mock function with given fields: ctx, iTypes, namespace, verifier -func (_m *Manager) FindIdentityForVerifier(ctx context.Context, iTypes []fftypes.FFEnum, namespace string, verifier *core.VerifierRef) (*core.Identity, error) { - ret := _m.Called(ctx, iTypes, namespace, verifier) +// FindIdentityForVerifier provides a mock function with given fields: ctx, iTypes, verifier +func (_m *Manager) FindIdentityForVerifier(ctx context.Context, iTypes []fftypes.FFEnum, verifier *core.VerifierRef) (*core.Identity, error) { + ret := _m.Called(ctx, iTypes, verifier) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, []fftypes.FFEnum, string, *core.VerifierRef) *core.Identity); ok { - r0 = rf(ctx, iTypes, namespace, verifier) + if rf, ok := ret.Get(0).(func(context.Context, []fftypes.FFEnum, *core.VerifierRef) *core.Identity); ok { + r0 = rf(ctx, iTypes, verifier) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -136,8 +136,8 @@ func (_m *Manager) FindIdentityForVerifier(ctx context.Context, iTypes []fftypes } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, []fftypes.FFEnum, string, *core.VerifierRef) error); ok { - r1 = rf(ctx, iTypes, namespace, verifier) + if rf, ok := ret.Get(1).(func(context.Context, []fftypes.FFEnum, *core.VerifierRef) error); ok { + r1 = rf(ctx, iTypes, verifier) } else { r1 = ret.Error(1) } @@ -145,13 +145,13 @@ func (_m *Manager) FindIdentityForVerifier(ctx context.Context, iTypes []fftypes return r0, r1 } -// GetMultipartyRootOrg provides a mock function with given fields: ctx, namespace -func (_m *Manager) GetMultipartyRootOrg(ctx context.Context, namespace string) (*core.Identity, error) { - ret := _m.Called(ctx, namespace) +// GetMultipartyRootOrg provides a mock function with given fields: ctx +func (_m *Manager) GetMultipartyRootOrg(ctx context.Context) (*core.Identity, error) { + ret := _m.Called(ctx) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { - r0 = rf(ctx, namespace) + if rf, ok := ret.Get(0).(func(context.Context) *core.Identity); ok { + r0 = rf(ctx) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -159,8 +159,8 @@ func (_m *Manager) GetMultipartyRootOrg(ctx context.Context, namespace string) ( } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, namespace) + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) } else { r1 = ret.Error(1) } @@ -168,13 +168,13 @@ func (_m *Manager) GetMultipartyRootOrg(ctx context.Context, namespace string) ( return r0, r1 } -// GetMultipartyRootVerifier provides a mock function with given fields: ctx, namespace -func (_m *Manager) GetMultipartyRootVerifier(ctx context.Context, namespace string) (*core.VerifierRef, error) { - ret := _m.Called(ctx, namespace) +// GetMultipartyRootVerifier provides a mock function with given fields: ctx +func (_m *Manager) GetMultipartyRootVerifier(ctx context.Context) (*core.VerifierRef, error) { + ret := _m.Called(ctx) var r0 *core.VerifierRef - if rf, ok := ret.Get(0).(func(context.Context, string) *core.VerifierRef); ok { - r0 = rf(ctx, namespace) + if rf, ok := ret.Get(0).(func(context.Context) *core.VerifierRef); ok { + r0 = rf(ctx) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.VerifierRef) @@ -182,8 +182,8 @@ func (_m *Manager) GetMultipartyRootVerifier(ctx context.Context, namespace stri } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, namespace) + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) } else { r1 = ret.Error(1) } @@ -191,20 +191,20 @@ func (_m *Manager) GetMultipartyRootVerifier(ctx context.Context, namespace stri return r0, r1 } -// NormalizeSigningKey provides a mock function with given fields: ctx, namespace, inputKey, keyNormalizationMode -func (_m *Manager) NormalizeSigningKey(ctx context.Context, namespace string, inputKey string, keyNormalizationMode int) (string, error) { - ret := _m.Called(ctx, namespace, inputKey, keyNormalizationMode) +// NormalizeSigningKey provides a mock function with given fields: ctx, inputKey, keyNormalizationMode +func (_m *Manager) NormalizeSigningKey(ctx context.Context, inputKey string, keyNormalizationMode int) (string, error) { + ret := _m.Called(ctx, inputKey, keyNormalizationMode) var r0 string - if rf, ok := ret.Get(0).(func(context.Context, string, string, int) string); ok { - r0 = rf(ctx, namespace, inputKey, keyNormalizationMode) + if rf, ok := ret.Get(0).(func(context.Context, string, int) string); ok { + r0 = rf(ctx, inputKey, keyNormalizationMode) } else { r0 = ret.Get(0).(string) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string, int) error); ok { - r1 = rf(ctx, namespace, inputKey, keyNormalizationMode) + if rf, ok := ret.Get(1).(func(context.Context, string, int) error); ok { + r1 = rf(ctx, inputKey, keyNormalizationMode) } else { r1 = ret.Error(1) } @@ -235,13 +235,13 @@ func (_m *Manager) ResolveIdentitySigner(ctx context.Context, _a1 *core.Identity return r0, r1 } -// ResolveInputSigningIdentity provides a mock function with given fields: ctx, namespace, signerRef -func (_m *Manager) ResolveInputSigningIdentity(ctx context.Context, namespace string, signerRef *core.SignerRef) error { - ret := _m.Called(ctx, namespace, signerRef) +// ResolveInputSigningIdentity provides a mock function with given fields: ctx, signerRef +func (_m *Manager) ResolveInputSigningIdentity(ctx context.Context, signerRef *core.SignerRef) error { + ret := _m.Called(ctx, signerRef) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, *core.SignerRef) error); ok { - r0 = rf(ctx, namespace, signerRef) + if rf, ok := ret.Get(0).(func(context.Context, *core.SignerRef) error); ok { + r0 = rf(ctx, signerRef) } else { r0 = ret.Error(0) } diff --git a/mocks/networkmapmocks/manager.go b/mocks/networkmapmocks/manager.go index 802446dec3..a9e0b88dc4 100644 --- a/mocks/networkmapmocks/manager.go +++ b/mocks/networkmapmocks/manager.go @@ -449,13 +449,13 @@ func (_m *Manager) GetVerifiers(ctx context.Context, ns string, filter database. return r0, r1, r2 } -// RegisterIdentity provides a mock function with given fields: ctx, ns, dto, waitConfirm -func (_m *Manager) RegisterIdentity(ctx context.Context, ns string, dto *core.IdentityCreateDTO, waitConfirm bool) (*core.Identity, error) { - ret := _m.Called(ctx, ns, dto, waitConfirm) +// RegisterIdentity provides a mock function with given fields: ctx, dto, waitConfirm +func (_m *Manager) RegisterIdentity(ctx context.Context, dto *core.IdentityCreateDTO, waitConfirm bool) (*core.Identity, error) { + ret := _m.Called(ctx, dto, waitConfirm) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, *core.IdentityCreateDTO, bool) *core.Identity); ok { - r0 = rf(ctx, ns, dto, waitConfirm) + if rf, ok := ret.Get(0).(func(context.Context, *core.IdentityCreateDTO, bool) *core.Identity); ok { + r0 = rf(ctx, dto, waitConfirm) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -463,8 +463,8 @@ func (_m *Manager) RegisterIdentity(ctx context.Context, ns string, dto *core.Id } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, *core.IdentityCreateDTO, bool) error); ok { - r1 = rf(ctx, ns, dto, waitConfirm) + if rf, ok := ret.Get(1).(func(context.Context, *core.IdentityCreateDTO, bool) error); ok { + r1 = rf(ctx, dto, waitConfirm) } else { r1 = ret.Error(1) } @@ -472,13 +472,13 @@ func (_m *Manager) RegisterIdentity(ctx context.Context, ns string, dto *core.Id return r0, r1 } -// RegisterNode provides a mock function with given fields: ctx, ns, waitConfirm -func (_m *Manager) RegisterNode(ctx context.Context, ns string, waitConfirm bool) (*core.Identity, error) { - ret := _m.Called(ctx, ns, waitConfirm) +// RegisterNode provides a mock function with given fields: ctx, waitConfirm +func (_m *Manager) RegisterNode(ctx context.Context, waitConfirm bool) (*core.Identity, error) { + ret := _m.Called(ctx, waitConfirm) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, bool) *core.Identity); ok { - r0 = rf(ctx, ns, waitConfirm) + if rf, ok := ret.Get(0).(func(context.Context, bool) *core.Identity); ok { + r0 = rf(ctx, waitConfirm) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -486,8 +486,8 @@ func (_m *Manager) RegisterNode(ctx context.Context, ns string, waitConfirm bool } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, bool) error); ok { - r1 = rf(ctx, ns, waitConfirm) + if rf, ok := ret.Get(1).(func(context.Context, bool) error); ok { + r1 = rf(ctx, waitConfirm) } else { r1 = ret.Error(1) } @@ -495,13 +495,13 @@ func (_m *Manager) RegisterNode(ctx context.Context, ns string, waitConfirm bool return r0, r1 } -// RegisterNodeOrganization provides a mock function with given fields: ctx, ns, waitConfirm -func (_m *Manager) RegisterNodeOrganization(ctx context.Context, ns string, waitConfirm bool) (*core.Identity, error) { - ret := _m.Called(ctx, ns, waitConfirm) +// RegisterNodeOrganization provides a mock function with given fields: ctx, waitConfirm +func (_m *Manager) RegisterNodeOrganization(ctx context.Context, waitConfirm bool) (*core.Identity, error) { + ret := _m.Called(ctx, waitConfirm) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, bool) *core.Identity); ok { - r0 = rf(ctx, ns, waitConfirm) + if rf, ok := ret.Get(0).(func(context.Context, bool) *core.Identity); ok { + r0 = rf(ctx, waitConfirm) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -509,8 +509,8 @@ func (_m *Manager) RegisterNodeOrganization(ctx context.Context, ns string, wait } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, bool) error); ok { - r1 = rf(ctx, ns, waitConfirm) + if rf, ok := ret.Get(1).(func(context.Context, bool) error); ok { + r1 = rf(ctx, waitConfirm) } else { r1 = ret.Error(1) } @@ -518,13 +518,13 @@ func (_m *Manager) RegisterNodeOrganization(ctx context.Context, ns string, wait return r0, r1 } -// RegisterOrganization provides a mock function with given fields: ctx, ns, org, waitConfirm -func (_m *Manager) RegisterOrganization(ctx context.Context, ns string, org *core.IdentityCreateDTO, waitConfirm bool) (*core.Identity, error) { - ret := _m.Called(ctx, ns, org, waitConfirm) +// RegisterOrganization provides a mock function with given fields: ctx, org, waitConfirm +func (_m *Manager) RegisterOrganization(ctx context.Context, org *core.IdentityCreateDTO, waitConfirm bool) (*core.Identity, error) { + ret := _m.Called(ctx, org, waitConfirm) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, *core.IdentityCreateDTO, bool) *core.Identity); ok { - r0 = rf(ctx, ns, org, waitConfirm) + if rf, ok := ret.Get(0).(func(context.Context, *core.IdentityCreateDTO, bool) *core.Identity); ok { + r0 = rf(ctx, org, waitConfirm) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -532,8 +532,8 @@ func (_m *Manager) RegisterOrganization(ctx context.Context, ns string, org *cor } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, *core.IdentityCreateDTO, bool) error); ok { - r1 = rf(ctx, ns, org, waitConfirm) + if rf, ok := ret.Get(1).(func(context.Context, *core.IdentityCreateDTO, bool) error); ok { + r1 = rf(ctx, org, waitConfirm) } else { r1 = ret.Error(1) } @@ -541,13 +541,13 @@ func (_m *Manager) RegisterOrganization(ctx context.Context, ns string, org *cor return r0, r1 } -// UpdateIdentity provides a mock function with given fields: ctx, ns, id, dto, waitConfirm -func (_m *Manager) UpdateIdentity(ctx context.Context, ns string, id string, dto *core.IdentityUpdateDTO, waitConfirm bool) (*core.Identity, error) { - ret := _m.Called(ctx, ns, id, dto, waitConfirm) +// UpdateIdentity provides a mock function with given fields: ctx, id, dto, waitConfirm +func (_m *Manager) UpdateIdentity(ctx context.Context, id string, dto *core.IdentityUpdateDTO, waitConfirm bool) (*core.Identity, error) { + ret := _m.Called(ctx, id, dto, waitConfirm) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string, *core.IdentityUpdateDTO, bool) *core.Identity); ok { - r0 = rf(ctx, ns, id, dto, waitConfirm) + if rf, ok := ret.Get(0).(func(context.Context, string, *core.IdentityUpdateDTO, bool) *core.Identity); ok { + r0 = rf(ctx, id, dto, waitConfirm) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -555,8 +555,8 @@ func (_m *Manager) UpdateIdentity(ctx context.Context, ns string, id string, dto } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string, *core.IdentityUpdateDTO, bool) error); ok { - r1 = rf(ctx, ns, id, dto, waitConfirm) + if rf, ok := ret.Get(1).(func(context.Context, string, *core.IdentityUpdateDTO, bool) error); ok { + r1 = rf(ctx, id, dto, waitConfirm) } else { r1 = ret.Error(1) } diff --git a/mocks/orchestratormocks/orchestrator.go b/mocks/orchestratormocks/orchestrator.go index 8084bb5247..0855746c8d 100644 --- a/mocks/orchestratormocks/orchestrator.go +++ b/mocks/orchestratormocks/orchestrator.go @@ -962,13 +962,13 @@ func (_m *Orchestrator) GetPins(ctx context.Context, ns string, filter database. return r0, r1, r2 } -// GetStatus provides a mock function with given fields: ctx, ns -func (_m *Orchestrator) GetStatus(ctx context.Context, ns string) (*core.NodeStatus, error) { - ret := _m.Called(ctx, ns) +// GetStatus provides a mock function with given fields: ctx +func (_m *Orchestrator) GetStatus(ctx context.Context) (*core.NodeStatus, error) { + ret := _m.Called(ctx) var r0 *core.NodeStatus - if rf, ok := ret.Get(0).(func(context.Context, string) *core.NodeStatus); ok { - r0 = rf(ctx, ns) + if rf, ok := ret.Get(0).(func(context.Context) *core.NodeStatus); ok { + r0 = rf(ctx) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.NodeStatus) @@ -976,8 +976,8 @@ func (_m *Orchestrator) GetStatus(ctx context.Context, ns string) (*core.NodeSta } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, ns) + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) } else { r1 = ret.Error(1) } @@ -1297,13 +1297,13 @@ func (_m *Orchestrator) Start() error { return r0 } -// SubmitNetworkAction provides a mock function with given fields: ctx, ns, action -func (_m *Orchestrator) SubmitNetworkAction(ctx context.Context, ns string, action *core.NetworkAction) error { - ret := _m.Called(ctx, ns, action) +// SubmitNetworkAction provides a mock function with given fields: ctx, action +func (_m *Orchestrator) SubmitNetworkAction(ctx context.Context, action *core.NetworkAction) error { + ret := _m.Called(ctx, action) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, *core.NetworkAction) error); ok { - r0 = rf(ctx, ns, action) + if rf, ok := ret.Get(0).(func(context.Context, *core.NetworkAction) error); ok { + r0 = rf(ctx, action) } else { r0 = ret.Error(0) } From 40e5c704e31d1b3eb7c27c3643e7a5ba3dd59f7f Mon Sep 17 00:00:00 2001 From: Andrew Richardson Date: Tue, 14 Jun 2022 16:46:04 -0400 Subject: [PATCH 2/2] Remove namespace from network map and group manager calls Also add namespace as a param to all database queries on identities, verifiers, and groups. Switch group manager to go via identity manager for identity lookups, instead of going directly to the database (to preserve fallback resolutions on ff_system). Signed-off-by: Andrew Richardson --- internal/apiserver/route_get_groups.go | 2 +- internal/apiserver/route_get_groups_test.go | 2 +- internal/apiserver/route_get_identities.go | 4 +- .../apiserver/route_get_identities_test.go | 4 +- .../apiserver/route_get_identity_by_did.go | 4 +- .../route_get_identity_by_did_test.go | 4 +- .../apiserver/route_get_identity_by_id.go | 4 +- .../route_get_identity_by_id_test.go | 4 +- internal/apiserver/route_get_identity_did.go | 2 +- .../apiserver/route_get_identity_did_test.go | 2 +- .../apiserver/route_get_identity_verifiers.go | 2 +- .../route_get_identity_verifiers_test.go | 2 +- internal/apiserver/route_get_net_did.go | 4 +- internal/apiserver/route_get_net_did_test.go | 4 +- internal/apiserver/route_get_net_diddoc.go | 2 +- .../apiserver/route_get_net_diddoc_test.go | 2 +- .../apiserver/route_get_net_identities.go | 4 +- .../route_get_net_identities_test.go | 4 +- internal/apiserver/route_get_net_node.go | 2 +- internal/apiserver/route_get_net_node_test.go | 2 +- internal/apiserver/route_get_net_nodes.go | 2 +- .../apiserver/route_get_net_nodes_test.go | 2 +- internal/apiserver/route_get_net_org.go | 2 +- internal/apiserver/route_get_net_org_test.go | 2 +- internal/apiserver/route_get_net_orgs.go | 2 +- internal/apiserver/route_get_net_orgs_test.go | 2 +- .../apiserver/route_get_verifier_by_id.go | 2 +- .../route_get_verifier_by_id_test.go | 2 +- internal/apiserver/route_get_verifiers.go | 2 +- .../apiserver/route_get_verifiers_test.go | 2 +- internal/assets/manager_test.go | 2 +- internal/batch/batch_manager_test.go | 26 +- internal/batch/batch_processor_test.go | 2 +- internal/contracts/manager_test.go | 6 +- internal/database/sqlcommon/group_sql.go | 38 +-- internal/database/sqlcommon/group_sql_test.go | 75 +----- internal/database/sqlcommon/identity_sql.go | 34 +-- .../database/sqlcommon/identity_sql_test.go | 66 +---- internal/database/sqlcommon/verifier_sql.go | 30 +-- .../database/sqlcommon/verifier_sql_test.go | 57 +--- internal/definitions/definition_handler.go | 4 +- .../definition_handler_identity_claim.go | 2 +- .../definition_handler_identity_claim_test.go | 22 +- ...tion_handler_identity_verification_test.go | 2 +- .../definition_handler_network_node_test.go | 2 +- .../definition_handler_network_org_test.go | 2 +- .../definitions/definition_handler_test.go | 4 +- internal/events/event_dispatcher_test.go | 2 +- internal/events/event_manager_test.go | 4 +- internal/events/subscription_manager_test.go | 4 +- internal/identity/identitymanager.go | 10 +- internal/identity/identitymanager_test.go | 52 ++-- internal/namespace/manager_test.go | 2 +- internal/networkmap/data_query.go | 82 +++--- internal/networkmap/data_query_test.go | 160 +++++------ internal/networkmap/did.go | 2 +- internal/networkmap/did_test.go | 22 +- internal/networkmap/manager.go | 32 +-- internal/operations/manager_test.go | 2 +- internal/operations/operation_updater_test.go | 2 +- internal/orchestrator/orchestrator.go | 10 +- internal/orchestrator/orchestrator_test.go | 4 +- internal/orchestrator/status.go | 6 +- internal/orchestrator/status_test.go | 16 +- internal/privatemessaging/groupmanager.go | 21 +- .../privatemessaging/groupmanager_test.go | 50 ++-- internal/privatemessaging/message_test.go | 39 ++- internal/privatemessaging/operations.go | 6 +- internal/privatemessaging/operations_test.go | 73 +++-- internal/privatemessaging/privatemessaging.go | 6 +- .../privatemessaging/privatemessaging_test.go | 42 +-- internal/privatemessaging/recipients.go | 6 +- internal/privatemessaging/recipients_test.go | 34 +-- .../shareddownload/download_manager_test.go | 2 +- internal/syncasync/sync_async_bridge.go | 14 +- internal/syncasync/sync_async_bridge_test.go | 8 +- internal/txcommon/event_enrich.go | 2 +- internal/txcommon/event_enrich_test.go | 56 ++-- internal/txcommon/txcommon.go | 8 +- internal/txcommon/txcommon_test.go | 40 +-- mocks/databasemocks/plugin.go | 152 ++++------- mocks/networkmapmocks/manager.go | 252 +++++++++--------- mocks/orchestratormocks/orchestrator.go | 18 -- mocks/privatemessagingmocks/manager.go | 18 +- pkg/database/plugin.go | 23 +- 85 files changed, 722 insertions(+), 1014 deletions(-) diff --git a/internal/apiserver/route_get_groups.go b/internal/apiserver/route_get_groups.go index 4bac62fe65..1972d3e70b 100644 --- a/internal/apiserver/route_get_groups.go +++ b/internal/apiserver/route_get_groups.go @@ -38,7 +38,7 @@ var getGroups = &ffapi.Route{ Extensions: &coreExtensions{ FilterFactory: database.GroupQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return filterResult(cr.or.PrivateMessaging().GetGroupsNS(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.PrivateMessaging().GetGroups(cr.ctx, cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_groups_test.go b/internal/apiserver/route_get_groups_test.go index 09f961c9e9..fde6a2072a 100644 --- a/internal/apiserver/route_get_groups_test.go +++ b/internal/apiserver/route_get_groups_test.go @@ -34,7 +34,7 @@ func TestGetGroups(t *testing.T) { mpm := &privatemessagingmocks.Manager{} o.On("PrivateMessaging").Return(mpm) - mpm.On("GetGroupsNS", mock.Anything, "mynamespace", mock.Anything). + mpm.On("GetGroups", mock.Anything, mock.Anything). Return([]*core.Group{}, nil, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_identities.go b/internal/apiserver/route_get_identities.go index 067902ffc8..0457f32d31 100644 --- a/internal/apiserver/route_get_identities.go +++ b/internal/apiserver/route_get_identities.go @@ -42,9 +42,9 @@ var getIdentities = &ffapi.Route{ FilterFactory: database.IdentityQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { if strings.EqualFold(r.QP["fetchverifiers"], "true") { - return filterResult(cr.or.NetworkMap().GetIdentitiesWithVerifiers(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetIdentitiesWithVerifiers(cr.ctx, cr.filter)) } - return filterResult(cr.or.NetworkMap().GetIdentities(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetIdentities(cr.ctx, cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_identities_test.go b/internal/apiserver/route_get_identities_test.go index 4fc9b0e8a6..be9be45948 100644 --- a/internal/apiserver/route_get_identities_test.go +++ b/internal/apiserver/route_get_identities_test.go @@ -34,7 +34,7 @@ func TestGetIdentities(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentities", mock.Anything, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil) + mnm.On("GetIdentities", mock.Anything, mock.Anything).Return([]*core.Identity{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) @@ -48,7 +48,7 @@ func TestGetIdentitiesWithVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentitiesWithVerifiers", mock.Anything, "ns1", mock.Anything).Return([]*core.IdentityWithVerifiers{}, nil, nil) + mnm.On("GetIdentitiesWithVerifiers", mock.Anything, mock.Anything).Return([]*core.IdentityWithVerifiers{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/apiserver/route_get_identity_by_did.go b/internal/apiserver/route_get_identity_by_did.go index 2223545a49..e8025c0c01 100644 --- a/internal/apiserver/route_get_identity_by_did.go +++ b/internal/apiserver/route_get_identity_by_did.go @@ -42,9 +42,9 @@ var getIdentityByDID = &ffapi.Route{ Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { if strings.EqualFold(r.QP["fetchverifiers"], "true") { - return cr.or.NetworkMap().GetIdentityByDIDWithVerifiers(cr.ctx, extractNamespace(r.PP), r.PP["did"]) + return cr.or.NetworkMap().GetIdentityByDIDWithVerifiers(cr.ctx, r.PP["did"]) } - return cr.or.NetworkMap().GetIdentityByDID(cr.ctx, extractNamespace(r.PP), r.PP["did"]) + return cr.or.NetworkMap().GetIdentityByDID(cr.ctx, r.PP["did"]) }, }, } diff --git a/internal/apiserver/route_get_identity_by_did_test.go b/internal/apiserver/route_get_identity_by_did_test.go index 48fb10bd99..99b4501b97 100644 --- a/internal/apiserver/route_get_identity_by_did_test.go +++ b/internal/apiserver/route_get_identity_by_did_test.go @@ -34,7 +34,7 @@ func TestGetIdentityByDID(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetIdentityByDID", mock.Anything, "default", "did:firefly:org/org_1"). + nmn.On("GetIdentityByDID", mock.Anything, "did:firefly:org/org_1"). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) @@ -49,7 +49,7 @@ func TestGetIdentityByDIDWithVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetIdentityByDIDWithVerifiers", mock.Anything, "default", "did:firefly:org/org_1"). + nmn.On("GetIdentityByDIDWithVerifiers", mock.Anything, "did:firefly:org/org_1"). Return(&core.IdentityWithVerifiers{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_identity_by_id.go b/internal/apiserver/route_get_identity_by_id.go index e9a87756e9..f489682993 100644 --- a/internal/apiserver/route_get_identity_by_id.go +++ b/internal/apiserver/route_get_identity_by_id.go @@ -42,9 +42,9 @@ var getIdentityByID = &ffapi.Route{ Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { if strings.EqualFold(r.QP["fetchverifiers"], "true") { - return cr.or.NetworkMap().GetIdentityByIDWithVerifiers(cr.ctx, extractNamespace(r.PP), r.PP["iid"]) + return cr.or.NetworkMap().GetIdentityByIDWithVerifiers(cr.ctx, r.PP["iid"]) } - return cr.or.NetworkMap().GetIdentityByID(cr.ctx, extractNamespace(r.PP), r.PP["iid"]) + return cr.or.NetworkMap().GetIdentityByID(cr.ctx, r.PP["iid"]) }, }, } diff --git a/internal/apiserver/route_get_identity_by_id_test.go b/internal/apiserver/route_get_identity_by_id_test.go index bdcc00539e..ba1ce51441 100644 --- a/internal/apiserver/route_get_identity_by_id_test.go +++ b/internal/apiserver/route_get_identity_by_id_test.go @@ -34,7 +34,7 @@ func TestGetIdentityByID(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentityByID", mock.Anything, "ns1", "id1").Return(&core.Identity{}, nil, nil) + mnm.On("GetIdentityByID", mock.Anything, "id1").Return(&core.Identity{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) @@ -48,7 +48,7 @@ func TestGetIdentityByIDWithVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentityByIDWithVerifiers", mock.Anything, "ns1", "id1").Return(&core.IdentityWithVerifiers{}, nil, nil) + mnm.On("GetIdentityByIDWithVerifiers", mock.Anything, "id1").Return(&core.IdentityWithVerifiers{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/apiserver/route_get_identity_did.go b/internal/apiserver/route_get_identity_did.go index 8eb6591840..78db46d9c9 100644 --- a/internal/apiserver/route_get_identity_did.go +++ b/internal/apiserver/route_get_identity_did.go @@ -38,7 +38,7 @@ var getIdentityDID = &ffapi.Route{ JSONOutputCodes: []int{http.StatusOK}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return cr.or.NetworkMap().GetDIDDocForIndentityByID(cr.ctx, extractNamespace(r.PP), r.PP["iid"]) + return cr.or.NetworkMap().GetDIDDocForIndentityByID(cr.ctx, r.PP["iid"]) }, }, } diff --git a/internal/apiserver/route_get_identity_did_test.go b/internal/apiserver/route_get_identity_did_test.go index 1ac5b38c1e..21c8558732 100644 --- a/internal/apiserver/route_get_identity_did_test.go +++ b/internal/apiserver/route_get_identity_did_test.go @@ -34,7 +34,7 @@ func TestGetIdentityDID(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetDIDDocForIndentityByID", mock.Anything, "ns1", "id1").Return(&networkmap.DIDDocument{}, nil, nil) + mnm.On("GetDIDDocForIndentityByID", mock.Anything, "id1").Return(&networkmap.DIDDocument{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/apiserver/route_get_identity_verifiers.go b/internal/apiserver/route_get_identity_verifiers.go index e31a2fd20a..2b79eb1ac5 100644 --- a/internal/apiserver/route_get_identity_verifiers.go +++ b/internal/apiserver/route_get_identity_verifiers.go @@ -40,7 +40,7 @@ var getIdentityVerifiers = &ffapi.Route{ Extensions: &coreExtensions{ FilterFactory: database.VerifierQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return filterResult(cr.or.NetworkMap().GetIdentityVerifiers(cr.ctx, extractNamespace(r.PP), r.PP["iid"], cr.filter)) + return filterResult(cr.or.NetworkMap().GetIdentityVerifiers(cr.ctx, r.PP["iid"], cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_identity_verifiers_test.go b/internal/apiserver/route_get_identity_verifiers_test.go index 115a928209..5b11aef3c8 100644 --- a/internal/apiserver/route_get_identity_verifiers_test.go +++ b/internal/apiserver/route_get_identity_verifiers_test.go @@ -34,7 +34,7 @@ func TestGetIdentityVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentityVerifiers", mock.Anything, "ns1", "id1", mock.Anything).Return([]*core.Verifier{}, nil, nil) + mnm.On("GetIdentityVerifiers", mock.Anything, "id1", mock.Anything).Return([]*core.Verifier{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/apiserver/route_get_net_did.go b/internal/apiserver/route_get_net_did.go index 5f04259f92..8757cfa969 100644 --- a/internal/apiserver/route_get_net_did.go +++ b/internal/apiserver/route_get_net_did.go @@ -43,9 +43,9 @@ var getNetworkIdentityByDID = &ffapi.Route{ Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { if strings.EqualFold(r.QP["fetchverifiers"], "true") { - return cr.or.NetworkMap().GetIdentityByDIDWithVerifiers(cr.ctx, extractNamespace(r.PP), r.PP["did"]) + return cr.or.NetworkMap().GetIdentityByDIDWithVerifiers(cr.ctx, r.PP["did"]) } - return cr.or.NetworkMap().GetIdentityByDID(cr.ctx, extractNamespace(r.PP), r.PP["did"]) + return cr.or.NetworkMap().GetIdentityByDID(cr.ctx, r.PP["did"]) }, }, } diff --git a/internal/apiserver/route_get_net_did_test.go b/internal/apiserver/route_get_net_did_test.go index fe96806448..4eb25e0dff 100644 --- a/internal/apiserver/route_get_net_did_test.go +++ b/internal/apiserver/route_get_net_did_test.go @@ -34,7 +34,7 @@ func TestGetNetIdentityByDID(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetIdentityByDID", mock.Anything, "default", "did:firefly:org/org_1"). + nmn.On("GetIdentityByDID", mock.Anything, "did:firefly:org/org_1"). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) @@ -49,7 +49,7 @@ func TestGetNetIdentityByDIDWithVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetIdentityByDIDWithVerifiers", mock.Anything, "default", "did:firefly:org/org_1"). + nmn.On("GetIdentityByDIDWithVerifiers", mock.Anything, "did:firefly:org/org_1"). Return(&core.IdentityWithVerifiers{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_net_diddoc.go b/internal/apiserver/route_get_net_diddoc.go index 25d2f4262d..f83240c00d 100644 --- a/internal/apiserver/route_get_net_diddoc.go +++ b/internal/apiserver/route_get_net_diddoc.go @@ -37,7 +37,7 @@ var getNetworkDIDDocByDID = &ffapi.Route{ JSONOutputCodes: []int{http.StatusOK}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return cr.or.NetworkMap().GetDIDDocForIndentityByDID(cr.ctx, extractNamespace(r.PP), r.PP["did"]) + return cr.or.NetworkMap().GetDIDDocForIndentityByDID(cr.ctx, r.PP["did"]) }, }, } diff --git a/internal/apiserver/route_get_net_diddoc_test.go b/internal/apiserver/route_get_net_diddoc_test.go index 46ee15ceb6..a836d9f341 100644 --- a/internal/apiserver/route_get_net_diddoc_test.go +++ b/internal/apiserver/route_get_net_diddoc_test.go @@ -34,7 +34,7 @@ func TestGetDIDDocByDID(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetDIDDocForIndentityByDID", mock.Anything, "default", "did:firefly:org/org_1"). + nmn.On("GetDIDDocForIndentityByDID", mock.Anything, "did:firefly:org/org_1"). Return(&networkmap.DIDDocument{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_net_identities.go b/internal/apiserver/route_get_net_identities.go index 8fe8c80a59..e7ede2d24a 100644 --- a/internal/apiserver/route_get_net_identities.go +++ b/internal/apiserver/route_get_net_identities.go @@ -42,9 +42,9 @@ var getNetworkIdentities = &ffapi.Route{ FilterFactory: database.IdentityQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { if strings.EqualFold(r.QP["fetchverifiers"], "true") { - return filterResult(cr.or.NetworkMap().GetIdentitiesWithVerifiers(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetIdentitiesWithVerifiers(cr.ctx, cr.filter)) } - return filterResult(cr.or.NetworkMap().GetIdentities(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetIdentities(cr.ctx, cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_net_identities_test.go b/internal/apiserver/route_get_net_identities_test.go index 2f769b138f..91c0cc7509 100644 --- a/internal/apiserver/route_get_net_identities_test.go +++ b/internal/apiserver/route_get_net_identities_test.go @@ -34,7 +34,7 @@ func TestGetNetIdentities(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentities", mock.Anything, "default", mock.Anything).Return([]*core.Identity{}, nil, nil) + mnm.On("GetIdentities", mock.Anything, mock.Anything).Return([]*core.Identity{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) @@ -48,7 +48,7 @@ func TestGetNetIdentitiesWithVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetIdentitiesWithVerifiers", mock.Anything, "default", mock.Anything).Return([]*core.IdentityWithVerifiers{}, nil, nil) + mnm.On("GetIdentitiesWithVerifiers", mock.Anything, mock.Anything).Return([]*core.IdentityWithVerifiers{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/apiserver/route_get_net_node.go b/internal/apiserver/route_get_net_node.go index 9aa506fd7c..5653e16739 100644 --- a/internal/apiserver/route_get_net_node.go +++ b/internal/apiserver/route_get_net_node.go @@ -38,7 +38,7 @@ var getNetworkNode = &ffapi.Route{ JSONOutputCodes: []int{http.StatusOK}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - output, err = cr.or.NetworkMap().GetNodeByNameOrID(cr.ctx, extractNamespace(r.PP), r.PP["nameOrId"]) + output, err = cr.or.NetworkMap().GetNodeByNameOrID(cr.ctx, r.PP["nameOrId"]) return output, err }, }, diff --git a/internal/apiserver/route_get_net_node_test.go b/internal/apiserver/route_get_net_node_test.go index 6c3e49565a..c3768dc019 100644 --- a/internal/apiserver/route_get_net_node_test.go +++ b/internal/apiserver/route_get_net_node_test.go @@ -34,7 +34,7 @@ func TestGetNode(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetNodeByNameOrID", mock.Anything, "default", "node12345"). + nmn.On("GetNodeByNameOrID", mock.Anything, "node12345"). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_net_nodes.go b/internal/apiserver/route_get_net_nodes.go index d93c3d4f02..16713712e5 100644 --- a/internal/apiserver/route_get_net_nodes.go +++ b/internal/apiserver/route_get_net_nodes.go @@ -38,7 +38,7 @@ var getNetworkNodes = &ffapi.Route{ Extensions: &coreExtensions{ FilterFactory: database.IdentityQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return filterResult(cr.or.NetworkMap().GetNodes(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetNodes(cr.ctx, cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_net_nodes_test.go b/internal/apiserver/route_get_net_nodes_test.go index cdade72c9a..63ac9f5912 100644 --- a/internal/apiserver/route_get_net_nodes_test.go +++ b/internal/apiserver/route_get_net_nodes_test.go @@ -34,7 +34,7 @@ func TestGetNodess(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetNodes", mock.Anything, "default", mock.Anything). + mnm.On("GetNodes", mock.Anything, mock.Anything). Return([]*core.Identity{}, nil, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_net_org.go b/internal/apiserver/route_get_net_org.go index cc33e33c1b..08da6faabc 100644 --- a/internal/apiserver/route_get_net_org.go +++ b/internal/apiserver/route_get_net_org.go @@ -38,7 +38,7 @@ var getNetworkOrg = &ffapi.Route{ JSONOutputCodes: []int{http.StatusOK}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - output, err = cr.or.NetworkMap().GetOrganizationByNameOrID(cr.ctx, extractNamespace(r.PP), r.PP["nameOrId"]) + output, err = cr.or.NetworkMap().GetOrganizationByNameOrID(cr.ctx, r.PP["nameOrId"]) return output, err }, }, diff --git a/internal/apiserver/route_get_net_org_test.go b/internal/apiserver/route_get_net_org_test.go index eabf1e51c3..bea14bb6f6 100644 --- a/internal/apiserver/route_get_net_org_test.go +++ b/internal/apiserver/route_get_net_org_test.go @@ -34,7 +34,7 @@ func TestGetOrg(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - nmn.On("GetOrganizationByNameOrID", mock.Anything, "default", "org12345"). + nmn.On("GetOrganizationByNameOrID", mock.Anything, "org12345"). Return(&core.Identity{}, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_net_orgs.go b/internal/apiserver/route_get_net_orgs.go index 6735e80fc2..daec866bc9 100644 --- a/internal/apiserver/route_get_net_orgs.go +++ b/internal/apiserver/route_get_net_orgs.go @@ -38,7 +38,7 @@ var getNetworkOrgs = &ffapi.Route{ Extensions: &coreExtensions{ FilterFactory: database.IdentityQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return filterResult(cr.or.NetworkMap().GetOrganizations(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetOrganizations(cr.ctx, cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_net_orgs_test.go b/internal/apiserver/route_get_net_orgs_test.go index f86ece85a8..e995b30fb8 100644 --- a/internal/apiserver/route_get_net_orgs_test.go +++ b/internal/apiserver/route_get_net_orgs_test.go @@ -34,7 +34,7 @@ func TestGetOrganizations(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetOrganizations", mock.Anything, "default", mock.Anything). + mnm.On("GetOrganizations", mock.Anything, mock.Anything). Return([]*core.Identity{}, nil, nil) r.ServeHTTP(res, req) diff --git a/internal/apiserver/route_get_verifier_by_id.go b/internal/apiserver/route_get_verifier_by_id.go index 65d98feb72..70b5026a00 100644 --- a/internal/apiserver/route_get_verifier_by_id.go +++ b/internal/apiserver/route_get_verifier_by_id.go @@ -38,7 +38,7 @@ var getVerifierByID = &ffapi.Route{ JSONOutputCodes: []int{http.StatusOK}, Extensions: &coreExtensions{ CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return cr.or.NetworkMap().GetVerifierByHash(cr.ctx, extractNamespace(r.PP), r.PP["hash"]) + return cr.or.NetworkMap().GetVerifierByHash(cr.ctx, r.PP["hash"]) }, }, } diff --git a/internal/apiserver/route_get_verifier_by_id_test.go b/internal/apiserver/route_get_verifier_by_id_test.go index 9862869912..4401343698 100644 --- a/internal/apiserver/route_get_verifier_by_id_test.go +++ b/internal/apiserver/route_get_verifier_by_id_test.go @@ -34,7 +34,7 @@ func TestGetVerifierByID(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetVerifierByHash", mock.Anything, "ns1", "hashid1").Return(&core.Verifier{}, nil, nil) + mnm.On("GetVerifierByHash", mock.Anything, "hashid1").Return(&core.Verifier{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/apiserver/route_get_verifiers.go b/internal/apiserver/route_get_verifiers.go index 8b606025b6..9fa36008bc 100644 --- a/internal/apiserver/route_get_verifiers.go +++ b/internal/apiserver/route_get_verifiers.go @@ -38,7 +38,7 @@ var getVerifiers = &ffapi.Route{ Extensions: &coreExtensions{ FilterFactory: database.VerifierQueryFactory, CoreJSONHandler: func(r *ffapi.APIRequest, cr *coreRequest) (output interface{}, err error) { - return filterResult(cr.or.NetworkMap().GetVerifiers(cr.ctx, extractNamespace(r.PP), cr.filter)) + return filterResult(cr.or.NetworkMap().GetVerifiers(cr.ctx, cr.filter)) }, }, } diff --git a/internal/apiserver/route_get_verifiers_test.go b/internal/apiserver/route_get_verifiers_test.go index 055ebefe43..f8cc7fa1ac 100644 --- a/internal/apiserver/route_get_verifiers_test.go +++ b/internal/apiserver/route_get_verifiers_test.go @@ -34,7 +34,7 @@ func TestGetVerifiers(t *testing.T) { req.Header.Set("Content-Type", "application/json; charset=utf-8") res := httptest.NewRecorder() - mnm.On("GetVerifiers", mock.Anything, "ns1", mock.Anything).Return([]*core.Verifier{}, nil, nil) + mnm.On("GetVerifiers", mock.Anything, mock.Anything).Return([]*core.Verifier{}, nil, nil) r.ServeHTTP(res, req) assert.Equal(t, 200, res.Result().StatusCode) diff --git a/internal/assets/manager_test.go b/internal/assets/manager_test.go index e9073b5e13..0f95abc2ad 100644 --- a/internal/assets/manager_test.go +++ b/internal/assets/manager_test.go @@ -57,7 +57,7 @@ func newTestAssetsCommon(t *testing.T, metrics bool) (*assetManager, func()) { mti := &tokenmocks.Plugin{} mm := &metricsmocks.Manager{} mom := &operationmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mm.On("IsMetricsEnabled").Return(metrics) mm.On("TransferSubmitted", mock.Anything) mom.On("RegisterHandler", mock.Anything, mock.Anything, mock.Anything) diff --git a/internal/batch/batch_manager_test.go b/internal/batch/batch_manager_test.go index a77d0b6569..3fda1ebb80 100644 --- a/internal/batch/batch_manager_test.go +++ b/internal/batch/batch_manager_test.go @@ -47,7 +47,7 @@ func newTestBatchManager(t *testing.T) (*batchManager, func()) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, err := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) assert.NoError(t, err) return bm.(*batchManager), bm.(*batchManager).cancelCtx @@ -59,7 +59,7 @@ func TestE2EDispatchBroadcast(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mni.On("GetNodeUUID", mock.Anything, "ns1").Return(fftypes.NewUUID()) readyForDispatch := make(chan bool) waitForDispatch := make(chan *DispatchState) @@ -175,7 +175,7 @@ func TestE2EDispatchPrivateUnpinned(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mni.On("GetNodeUUID", mock.Anything, "ns1").Return(fftypes.NewUUID()) readyForDispatch := make(chan bool) waitForDispatch := make(chan *DispatchState) @@ -286,7 +286,7 @@ func TestDispatchUnknownType(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) ctx, cancel := context.WithCancel(context.Background()) bmi, _ := NewBatchManager(ctx, mni, mdi, mdm, txHelper) bm := bmi.(*batchManager) @@ -317,7 +317,7 @@ func TestGetInvalidBatchTypeMsg(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, _ := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) defer bm.Close() _, err := bm.(*batchManager).getProcessor(core.BatchTypeBroadcast, "wrong", nil, "ns1", &core.SignerRef{}) @@ -328,7 +328,7 @@ func TestMessageSequencerCancelledContext(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mdi.On("GetMessageIDs", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")).Once() bm, _ := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) defer bm.Close() @@ -343,7 +343,7 @@ func TestMessageSequencerMissingMessageData(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, _ := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) bm.RegisterDispatcher("utdispatcher", core.TransactionTypeNone, []core.MessageType{core.MessageTypeBroadcast}, func(c context.Context, state *DispatchState) error { @@ -385,7 +385,7 @@ func TestMessageSequencerUpdateMessagesFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mni.On("GetNodeUUID", mock.Anything, "ns1").Return(fftypes.NewUUID()) ctx, cancelCtx := context.WithCancel(context.Background()) bm, _ := NewBatchManager(ctx, mni, mdi, mdm, txHelper) @@ -441,7 +441,7 @@ func TestMessageSequencerDispatchFail(t *testing.T) { mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} mni.On("GetNodeUUID", mock.Anything, "ns1").Return(fftypes.NewUUID()) - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) ctx, cancelCtx := context.WithCancel(context.Background()) bm, _ := NewBatchManager(ctx, mni, mdi, mdm, txHelper) bm.RegisterDispatcher("utdispatcher", core.TransactionTypeBatchPin, []core.MessageType{core.MessageTypeBroadcast}, @@ -482,7 +482,7 @@ func TestMessageSequencerUpdateBatchFail(t *testing.T) { mni := &sysmessagingmocks.LocalNodeInfo{} mni.On("GetNodeUUID", mock.Anything, "ns1").Return(fftypes.NewUUID()) ctx, cancelCtx := context.WithCancel(context.Background()) - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, _ := NewBatchManager(ctx, mni, mdi, mdm, txHelper) bm.RegisterDispatcher("utdispatcher", core.TransactionTypeBatchPin, []core.MessageType{core.MessageTypeBroadcast}, func(c context.Context, state *DispatchState) error { @@ -565,7 +565,7 @@ func TestAssembleMessageDataNilData(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, _ := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) bm.Close() mdm.On("GetMessageWithDataCached", mock.Anything, mock.Anything).Return(nil, nil, false, nil) @@ -577,7 +577,7 @@ func TestGetMessageDataFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, _ := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) mdm.On("GetMessageWithDataCached", mock.Anything, mock.Anything).Return(nil, nil, false, fmt.Errorf("pop")) bm.Close() @@ -590,7 +590,7 @@ func TestGetMessageNotFound(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mni := &sysmessagingmocks.LocalNodeInfo{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) bm, _ := NewBatchManager(context.Background(), mni, mdi, mdm, txHelper) mdm.On("GetMessageWithDataCached", mock.Anything, mock.Anything).Return(nil, nil, false, nil) bm.Close() diff --git a/internal/batch/batch_processor_test.go b/internal/batch/batch_processor_test.go index 5bbdafdb9e..a8f0988dd3 100644 --- a/internal/batch/batch_processor_test.go +++ b/internal/batch/batch_processor_test.go @@ -41,7 +41,7 @@ func newTestBatchProcessor(t *testing.T, dispatch DispatchHandler) (func(), *dat mdi := bm.database.(*databasemocks.Plugin) mni := bm.ni.(*sysmessagingmocks.LocalNodeInfo) mdm := bm.data.(*datamocks.Manager) - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mni.On("GetNodeUUID", mock.Anything, "ns1").Return(fftypes.NewUUID()).Maybe() bp := newBatchProcessor(bm, &batchProcessorConf{ namespace: "ns1", diff --git a/internal/contracts/manager_test.go b/internal/contracts/manager_test.go index 36ca73466c..ff3ac7b659 100644 --- a/internal/contracts/manager_test.go +++ b/internal/contracts/manager_test.go @@ -48,7 +48,7 @@ func newTestContractManager() *contractManager { mim := &identitymanagermocks.Manager{} mbi := &blockchainmocks.Plugin{} mom := &operationmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) msa := &syncasyncmocks.Bridge{} mbi.On("GetFFIParamValidator", mock.Anything).Return(nil, nil) mom.On("RegisterHandler", mock.Anything, mock.Anything, mock.Anything) @@ -83,7 +83,7 @@ func TestNewContractManagerFFISchemaLoaderFail(t *testing.T) { mim := &identitymanagermocks.Manager{} mbi := &blockchainmocks.Plugin{} mom := &operationmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) msa := &syncasyncmocks.Bridge{} mbi.On("GetFFIParamValidator", mock.Anything).Return(nil, fmt.Errorf("pop")) _, err := NewContractManager(context.Background(), mdi, mbm, mim, mbi, mom, txHelper, msa) @@ -97,7 +97,7 @@ func TestNewContractManagerFFISchemaLoader(t *testing.T) { mim := &identitymanagermocks.Manager{} mbi := &blockchainmocks.Plugin{} mom := &operationmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) msa := &syncasyncmocks.Bridge{} mbi.On("GetFFIParamValidator", mock.Anything).Return(ðereum.FFIParamValidator{}, nil) mom.On("RegisterHandler", mock.Anything, mock.Anything, mock.Anything) diff --git a/internal/database/sqlcommon/group_sql.go b/internal/database/sqlcommon/group_sql.go index 5125ef7d54..8a93589f61 100644 --- a/internal/database/sqlcommon/group_sql.go +++ b/internal/database/sqlcommon/group_sql.go @@ -243,12 +243,12 @@ func (s *SQLCommon) groupResult(ctx context.Context, row *sql.Rows) (*core.Group return &group, nil } -func (s *SQLCommon) GetGroupByHash(ctx context.Context, hash *fftypes.Bytes32) (group *core.Group, err error) { +func (s *SQLCommon) GetGroupByHash(ctx context.Context, namespace string, hash *fftypes.Bytes32) (group *core.Group, err error) { rows, _, err := s.query(ctx, groupsTable, sq.Select(groupColumns...). From(groupsTable). - Where(sq.Eq{"hash": hash}), + Where(sq.Eq{"hash": hash, "namespace": namespace}), ) if err != nil { return nil, err @@ -273,8 +273,8 @@ func (s *SQLCommon) GetGroupByHash(ctx context.Context, hash *fftypes.Bytes32) ( return group, nil } -func (s *SQLCommon) GetGroups(ctx context.Context, filter database.Filter) (group []*core.Group, res *database.FilterResult, err error) { - query, fop, fi, err := s.filterSelect(ctx, "", sq.Select(groupColumns...).From(groupsTable), filter, groupFilterFieldMap, []interface{}{"sequence"}) +func (s *SQLCommon) GetGroups(ctx context.Context, namespace string, filter database.Filter) (group []*core.Group, res *database.FilterResult, err error) { + query, fop, fi, err := s.filterSelect(ctx, "", sq.Select(groupColumns...).From(groupsTable), filter, groupFilterFieldMap, []interface{}{"sequence"}, sq.Eq{"namespace": namespace}) if err != nil { return nil, nil, err } @@ -303,33 +303,3 @@ func (s *SQLCommon) GetGroups(ctx context.Context, filter database.Filter) (grou return groups, s.queryRes(ctx, groupsTable, tx, fop, fi), err } - -func (s *SQLCommon) UpdateGroup(ctx context.Context, hash *fftypes.Bytes32, update database.Update) (err error) { - return s.UpdateGroups(ctx, database.GroupQueryFactory.NewFilter(ctx).Eq("hash", hash), update) -} - -func (s *SQLCommon) UpdateGroups(ctx context.Context, filter database.Filter, update database.Update) (err error) { - - ctx, tx, autoCommit, err := s.beginOrUseTx(ctx) - if err != nil { - return err - } - defer s.rollbackTx(ctx, tx, autoCommit) - - query, err := s.buildUpdate(sq.Update(groupsTable), update, groupFilterFieldMap) - if err != nil { - return err - } - - query, err = s.filterUpdate(ctx, query, filter, opFilterFieldMap) - if err != nil { - return err - } - - _, err = s.updateTx(ctx, groupsTable, tx, query, nil /* no change event for filter based update */) - if err != nil { - return err - } - - return s.commitTx(ctx, tx, autoCommit) -} diff --git a/internal/database/sqlcommon/group_sql_test.go b/internal/database/sqlcommon/group_sql_test.go index 73845508d5..b75840559c 100644 --- a/internal/database/sqlcommon/group_sql_test.go +++ b/internal/database/sqlcommon/group_sql_test.go @@ -60,7 +60,7 @@ func TestUpsertGroupE2EWithDB(t *testing.T) { assert.NoError(t, err) // Check we get the exact same group back - groupRead, err := s.GetGroupByHash(ctx, group.Hash) + groupRead, err := s.GetGroupByHash(ctx, "ns1", group.Hash) assert.NoError(t, err) groupJson, _ := json.Marshal(&group) groupReadJson, _ := json.Marshal(&groupRead) @@ -83,7 +83,7 @@ func TestUpsertGroupE2EWithDB(t *testing.T) { assert.NoError(t, err) // Check we get the exact same group back - note the removal of one of the data elements - groupRead, err = s.GetGroupByHash(ctx, group.Hash) + groupRead, err = s.GetGroupByHash(ctx, "ns1", group.Hash) assert.NoError(t, err) groupJson, _ = json.Marshal(&groupUpdated) groupReadJson, _ = json.Marshal(&groupRead) @@ -97,7 +97,7 @@ func TestUpsertGroupE2EWithDB(t *testing.T) { fb.Eq("message", groupUpdated.Message), fb.Gt("created", "0"), ) - groups, _, err := s.GetGroups(ctx, filter) + groups, _, err := s.GetGroups(ctx, "ns1", filter) assert.NoError(t, err) assert.Equal(t, 1, len(groups)) groupReadJson, _ = json.Marshal(groups[0]) @@ -108,26 +108,10 @@ func TestUpsertGroupE2EWithDB(t *testing.T) { fb.Eq("hash", groupUpdated.Hash.String()), fb.Eq("created", "0"), ) - groups, _, err = s.GetGroups(ctx, filter) + groups, _, err = s.GetGroups(ctx, "ns1", filter) assert.NoError(t, err) assert.Equal(t, 0, len(groups)) - // Update (testing what's possible at the DB layer) - newHash := fftypes.NewRandB32() - up := database.GroupQueryFactory.NewUpdate(ctx). - Set("hash", newHash) - err = s.UpdateGroup(ctx, group.Hash, up) - assert.NoError(t, err) - - // Test find updated value - filter = fb.And( - fb.Eq("hash", newHash), - ) - groups, res, err := s.GetGroups(ctx, filter.Count(true)) - assert.NoError(t, err) - assert.Equal(t, 1, len(groups)) - assert.Equal(t, int64(1), *res.TotalCount) - s.callbacks.AssertExpectations(t) } @@ -314,7 +298,7 @@ func TestGetGroupByIDSelectFail(t *testing.T) { s, mock := newMockProvider().init() groupID := fftypes.NewRandB32() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) - _, err := s.GetGroupByHash(context.Background(), groupID) + _, err := s.GetGroupByHash(context.Background(), "ns1", groupID) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -323,7 +307,7 @@ func TestGetGroupByIDNotFound(t *testing.T) { s, mock := newMockProvider().init() groupID := fftypes.NewRandB32() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"hash"})) - group, err := s.GetGroupByHash(context.Background(), groupID) + group, err := s.GetGroupByHash(context.Background(), "ns1", groupID) assert.NoError(t, err) assert.Nil(t, group) assert.NoError(t, mock.ExpectationsWereMet()) @@ -333,7 +317,7 @@ func TestGetGroupByIDScanFail(t *testing.T) { s, mock := newMockProvider().init() groupID := fftypes.NewRandB32() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"hash"}).AddRow("only one")) - _, err := s.GetGroupByHash(context.Background(), groupID) + _, err := s.GetGroupByHash(context.Background(), "ns1", groupID) assert.Regexp(t, "FF10121", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -344,7 +328,7 @@ func TestGetGroupByIDLoadMembersFail(t *testing.T) { mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows(groupColumns). AddRow(nil, "ns1", "name1", fftypes.NewRandB32(), fftypes.Now())) mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) - _, err := s.GetGroupByHash(context.Background(), groupID) + _, err := s.GetGroupByHash(context.Background(), "ns1", groupID) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -352,7 +336,7 @@ func TestGetGroupByIDLoadMembersFail(t *testing.T) { func TestGetGroupsBuildQueryFail(t *testing.T) { s, _ := newMockProvider().init() f := database.GroupQueryFactory.NewFilter(context.Background()).Eq("hash", map[bool]bool{true: false}) - _, _, err := s.GetGroups(context.Background(), f) + _, _, err := s.GetGroups(context.Background(), "ns1", f) assert.Regexp(t, "FF00143.*hash", err) } @@ -360,7 +344,7 @@ func TestGetGroupsQueryFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) f := database.GroupQueryFactory.NewFilter(context.Background()).Eq("hash", "") - _, _, err := s.GetGroups(context.Background(), f) + _, _, err := s.GetGroups(context.Background(), "ns1", f) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -369,7 +353,7 @@ func TestGetGroupsReadGroupFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"hash"}).AddRow("only one")) f := database.GroupQueryFactory.NewFilter(context.Background()).Eq("hash", "") - _, _, err := s.GetGroups(context.Background(), f) + _, _, err := s.GetGroups(context.Background(), "ns1", f) assert.Regexp(t, "FF10121", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -380,42 +364,7 @@ func TestGetGroupsLoadMembersFail(t *testing.T) { AddRow(nil, "ns1", "group1", fftypes.NewRandB32(), fftypes.Now())) mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) f := database.GroupQueryFactory.NewFilter(context.Background()).Gt("created", "0") - _, _, err := s.GetGroups(context.Background(), f) + _, _, err := s.GetGroups(context.Background(), "ns1", f) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } - -func TestGroupUpdateBeginFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin().WillReturnError(fmt.Errorf("pop")) - u := database.GroupQueryFactory.NewUpdate(context.Background()).Set("hash", "anything") - err := s.UpdateGroup(context.Background(), fftypes.NewRandB32(), u) - assert.Regexp(t, "FF10114", err) -} - -func TestGroupUpdateBuildQueryFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - u := database.GroupQueryFactory.NewUpdate(context.Background()).Set("hash", map[bool]bool{true: false}) - err := s.UpdateGroup(context.Background(), fftypes.NewRandB32(), u) - assert.Regexp(t, "FF00143.*hash", err) -} - -func TestGroupsUpdateBuildFilterFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - f := database.GroupQueryFactory.NewFilter(context.Background()).Eq("hash", map[bool]bool{true: false}) - u := database.GroupQueryFactory.NewUpdate(context.Background()).Set("description", "my desc") - err := s.UpdateGroups(context.Background(), f, u) - assert.Regexp(t, "FF00143.*hash", err) -} - -func TestGroupUpdateFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - mock.ExpectExec("UPDATE .*").WillReturnError(fmt.Errorf("pop")) - mock.ExpectRollback() - u := database.GroupQueryFactory.NewUpdate(context.Background()).Set("description", fftypes.NewUUID()) - err := s.UpdateGroup(context.Background(), fftypes.NewRandB32(), u) - assert.Regexp(t, "FF10117", err) -} diff --git a/internal/database/sqlcommon/identity_sql.go b/internal/database/sqlcommon/identity_sql.go index 16b29102f9..d5563c7f03 100644 --- a/internal/database/sqlcommon/identity_sql.go +++ b/internal/database/sqlcommon/identity_sql.go @@ -197,17 +197,17 @@ func (s *SQLCommon) GetIdentityByName(ctx context.Context, iType core.IdentityTy return s.getIdentityPred(ctx, name, sq.Eq{"itype": iType, "namespace": namespace, "name": name}) } -func (s *SQLCommon) GetIdentityByDID(ctx context.Context, did string) (identity *core.Identity, err error) { - return s.getIdentityPred(ctx, did, sq.Eq{"did": did}) +func (s *SQLCommon) GetIdentityByDID(ctx context.Context, namespace, did string) (identity *core.Identity, err error) { + return s.getIdentityPred(ctx, did, sq.Eq{"did": did, "namespace": namespace}) } -func (s *SQLCommon) GetIdentityByID(ctx context.Context, id *fftypes.UUID) (identity *core.Identity, err error) { - return s.getIdentityPred(ctx, id.String(), sq.Eq{"id": id}) +func (s *SQLCommon) GetIdentityByID(ctx context.Context, namespace string, id *fftypes.UUID) (identity *core.Identity, err error) { + return s.getIdentityPred(ctx, id.String(), sq.Eq{"id": id, "namespace": namespace}) } -func (s *SQLCommon) GetIdentities(ctx context.Context, filter database.Filter) (identities []*core.Identity, fr *database.FilterResult, err error) { +func (s *SQLCommon) GetIdentities(ctx context.Context, namespace string, filter database.Filter) (identities []*core.Identity, fr *database.FilterResult, err error) { - query, fop, fi, err := s.filterSelect(ctx, "", sq.Select(identityColumns...).From(identitiesTable), filter, identityFilterFieldMap, []interface{}{"sequence"}) + query, fop, fi, err := s.filterSelect(ctx, "", sq.Select(identityColumns...).From(identitiesTable), filter, identityFilterFieldMap, []interface{}{"sequence"}, sq.Eq{"namespace": namespace}) if err != nil { return nil, nil, err } @@ -230,25 +230,3 @@ func (s *SQLCommon) GetIdentities(ctx context.Context, filter database.Filter) ( return identities, s.queryRes(ctx, identitiesTable, tx, fop, fi), err } - -func (s *SQLCommon) UpdateIdentity(ctx context.Context, id *fftypes.UUID, update database.Update) (err error) { - - ctx, tx, autoCommit, err := s.beginOrUseTx(ctx) - if err != nil { - return err - } - defer s.rollbackTx(ctx, tx, autoCommit) - - query, err := s.buildUpdate(sq.Update(identitiesTable), update, identityFilterFieldMap) - if err != nil { - return err - } - query = query.Where(sq.Eq{"id": id}) - - _, err = s.updateTx(ctx, identitiesTable, tx, query, nil /* no change events for filter based updates */) - if err != nil { - return err - } - - return s.commitTx(ctx, tx, autoCommit) -} diff --git a/internal/database/sqlcommon/identity_sql_test.go b/internal/database/sqlcommon/identity_sql_test.go index 891e53497b..01f84137a8 100644 --- a/internal/database/sqlcommon/identity_sql_test.go +++ b/internal/database/sqlcommon/identity_sql_test.go @@ -57,13 +57,13 @@ func TestIdentitiesE2EWithDB(t *testing.T) { } s.callbacks.On("UUIDCollectionNSEvent", database.CollectionIdentities, core.ChangeEventTypeCreated, "ns1", identityID).Return() - s.callbacks.On("UUIDCollectionNSEvent", database.CollectionIdentities, core.ChangeEventTypeUpdated, "ns2", identityID).Return() + s.callbacks.On("UUIDCollectionNSEvent", database.CollectionIdentities, core.ChangeEventTypeUpdated, "ns1", identityID).Return() err := s.UpsertIdentity(ctx, identity, database.UpsertOptimizationNew) assert.NoError(t, err) // Check we get the exact same identity back - identityRead, err := s.GetIdentityByID(ctx, identity.ID) + identityRead, err := s.GetIdentityByID(ctx, "ns1", identity.ID) assert.NoError(t, err) assert.NotNil(t, identityRead) identityJson, _ := json.Marshal(&identity) @@ -78,7 +78,7 @@ func TestIdentitiesE2EWithDB(t *testing.T) { DID: "did:firefly:/nodes/2", Parent: fftypes.NewUUID(), Type: core.IdentityTypeNode, - Namespace: "ns2", + Namespace: "ns1", Name: "identity2", }, IdentityProfile: core.IdentityProfile{ @@ -108,31 +108,13 @@ func TestIdentitiesE2EWithDB(t *testing.T) { fb.Eq("description", string(identityUpdated.Description)), fb.Eq("did", identityUpdated.DID), ) - identityRes, res, err := s.GetIdentities(ctx, filter.Count(true)) + identityRes, res, err := s.GetIdentities(ctx, "ns1", filter.Count(true)) assert.NoError(t, err) assert.Equal(t, 1, len(identityRes)) assert.Equal(t, int64(1), *res.TotalCount) identityReadJson, _ = json.Marshal(identityRes[0]) assert.Equal(t, string(identityJson), string(identityReadJson)) - // Update - updateTime := fftypes.Now() - up := database.IdentityQueryFactory.NewUpdate(ctx).Set("created", updateTime) - err = s.UpdateIdentity(ctx, identityUpdated.ID, up) - assert.NoError(t, err) - - // Test find updated value - filter = fb.And( - fb.Eq("did", identityUpdated.DID), - fb.Eq("messages.claim", identityUpdated.Messages.Claim), - fb.Eq("messages.verification", identityUpdated.Messages.Verification), - fb.Eq("messages.update", identityUpdated.Messages.Update), - fb.Eq("created", updateTime.String()), - ) - identities, _, err := s.GetIdentities(ctx, filter) - assert.NoError(t, err) - assert.Equal(t, 1, len(identities)) - s.callbacks.AssertExpectations(t) } @@ -207,7 +189,7 @@ func TestUpsertIdentityFailCommit(t *testing.T) { func TestGetIdentityByIDSelectFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) - _, err := s.GetIdentityByID(context.Background(), fftypes.NewUUID()) + _, err := s.GetIdentityByID(context.Background(), "ns1", fftypes.NewUUID()) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -223,7 +205,7 @@ func TestGetIdentityByNameSelectFail(t *testing.T) { func TestGetIdentityByIdentitySelectFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) - _, err := s.GetIdentityByDID(context.Background(), "did:firefly:org/org1") + _, err := s.GetIdentityByDID(context.Background(), "ns1", "did:firefly:org/org1") assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -231,7 +213,7 @@ func TestGetIdentityByIdentitySelectFail(t *testing.T) { func TestGetIdentityByIDNotFound(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"identity", "identity", "identity"})) - msg, err := s.GetIdentityByID(context.Background(), fftypes.NewUUID()) + msg, err := s.GetIdentityByID(context.Background(), "ns1", fftypes.NewUUID()) assert.NoError(t, err) assert.Nil(t, msg) assert.NoError(t, mock.ExpectationsWereMet()) @@ -240,7 +222,7 @@ func TestGetIdentityByIDNotFound(t *testing.T) { func TestGetIdentityByIDScanFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"identity"}).AddRow("only one")) - _, err := s.GetIdentityByID(context.Background(), fftypes.NewUUID()) + _, err := s.GetIdentityByID(context.Background(), "ns1", fftypes.NewUUID()) assert.Regexp(t, "FF10121", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -249,7 +231,7 @@ func TestGetIdentityQueryFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) f := database.IdentityQueryFactory.NewFilter(context.Background()).Eq("did", "") - _, _, err := s.GetIdentities(context.Background(), f) + _, _, err := s.GetIdentities(context.Background(), "ns1", f) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -257,7 +239,7 @@ func TestGetIdentityQueryFail(t *testing.T) { func TestGetIdentityBuildQueryFail(t *testing.T) { s, _ := newMockProvider().init() f := database.IdentityQueryFactory.NewFilter(context.Background()).Eq("did", map[bool]bool{true: false}) - _, _, err := s.GetIdentities(context.Background(), f) + _, _, err := s.GetIdentities(context.Background(), "ns1", f) assert.Regexp(t, "FF00143.*type", err) } @@ -265,33 +247,7 @@ func TestGetIdentityReadMessageFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"did"}).AddRow("only one")) f := database.IdentityQueryFactory.NewFilter(context.Background()).Eq("did", "") - _, _, err := s.GetIdentities(context.Background(), f) + _, _, err := s.GetIdentities(context.Background(), "ns1", f) assert.Regexp(t, "FF10121", err) assert.NoError(t, mock.ExpectationsWereMet()) } - -func TestIdentityUpdateBeginFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin().WillReturnError(fmt.Errorf("pop")) - u := database.IdentityQueryFactory.NewUpdate(context.Background()).Set("did", "anything") - err := s.UpdateIdentity(context.Background(), fftypes.NewUUID(), u) - assert.Regexp(t, "FF10114", err) -} - -func TestIdentityUpdateBuildQueryFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - u := database.IdentityQueryFactory.NewUpdate(context.Background()).Set("did", map[bool]bool{true: false}) - err := s.UpdateIdentity(context.Background(), fftypes.NewUUID(), u) - assert.Regexp(t, "FF00143.*did", err) -} - -func TestIdentityUpdateFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - mock.ExpectExec("UPDATE .*").WillReturnError(fmt.Errorf("pop")) - mock.ExpectRollback() - u := database.IdentityQueryFactory.NewUpdate(context.Background()).Set("did", fftypes.NewUUID()) - err := s.UpdateIdentity(context.Background(), fftypes.NewUUID(), u) - assert.Regexp(t, "FF10117", err) -} diff --git a/internal/database/sqlcommon/verifier_sql.go b/internal/database/sqlcommon/verifier_sql.go index 99c12f5e29..2392d42de8 100644 --- a/internal/database/sqlcommon/verifier_sql.go +++ b/internal/database/sqlcommon/verifier_sql.go @@ -163,13 +163,13 @@ func (s *SQLCommon) GetVerifierByValue(ctx context.Context, vType core.VerifierT return s.getVerifierPred(ctx, value, sq.Eq{"vtype": vType, "namespace": namespace, "value": value}) } -func (s *SQLCommon) GetVerifierByHash(ctx context.Context, hash *fftypes.Bytes32) (verifier *core.Verifier, err error) { - return s.getVerifierPred(ctx, hash.String(), sq.Eq{"hash": hash}) +func (s *SQLCommon) GetVerifierByHash(ctx context.Context, namespace string, hash *fftypes.Bytes32) (verifier *core.Verifier, err error) { + return s.getVerifierPred(ctx, hash.String(), sq.Eq{"hash": hash, "namespace": namespace}) } -func (s *SQLCommon) GetVerifiers(ctx context.Context, filter database.Filter) (verifiers []*core.Verifier, fr *database.FilterResult, err error) { +func (s *SQLCommon) GetVerifiers(ctx context.Context, namespace string, filter database.Filter) (verifiers []*core.Verifier, fr *database.FilterResult, err error) { - query, fop, fi, err := s.filterSelect(ctx, "", sq.Select(verifierColumns...).From(verifiersTable), filter, verifierFilterFieldMap, []interface{}{"sequence"}) + query, fop, fi, err := s.filterSelect(ctx, "", sq.Select(verifierColumns...).From(verifiersTable), filter, verifierFilterFieldMap, []interface{}{"sequence"}, sq.Eq{"namespace": namespace}) if err != nil { return nil, nil, err } @@ -192,25 +192,3 @@ func (s *SQLCommon) GetVerifiers(ctx context.Context, filter database.Filter) (v return verifiers, s.queryRes(ctx, verifiersTable, tx, fop, fi), err } - -func (s *SQLCommon) UpdateVerifier(ctx context.Context, hash *fftypes.Bytes32, update database.Update) (err error) { - - ctx, tx, autoCommit, err := s.beginOrUseTx(ctx) - if err != nil { - return err - } - defer s.rollbackTx(ctx, tx, autoCommit) - - query, err := s.buildUpdate(sq.Update(verifiersTable), update, verifierFilterFieldMap) - if err != nil { - return err - } - query = query.Where(sq.Eq{"hash": hash}) - - _, err = s.updateTx(ctx, verifiersTable, tx, query, nil /* no change events for filter based updates */) - if err != nil { - return err - } - - return s.commitTx(ctx, tx, autoCommit) -} diff --git a/internal/database/sqlcommon/verifier_sql_test.go b/internal/database/sqlcommon/verifier_sql_test.go index 1d885ca7a6..90759fbb99 100644 --- a/internal/database/sqlcommon/verifier_sql_test.go +++ b/internal/database/sqlcommon/verifier_sql_test.go @@ -55,7 +55,7 @@ func TestVerifiersE2EWithDB(t *testing.T) { assert.NoError(t, err) // Check we get the exact same verifier back - verifierRead, err := s.GetVerifierByHash(ctx, verifier.Hash) + verifierRead, err := s.GetVerifierByHash(ctx, "ns1", verifier.Hash) assert.NoError(t, err) assert.NotNil(t, verifierRead) verifierJson, _ := json.Marshal(&verifier) @@ -90,28 +90,13 @@ func TestVerifiersE2EWithDB(t *testing.T) { fb.Eq("value", string(verifierUpdated.Value)), fb.Eq("namespace", verifierUpdated.Namespace), ) - verifierRes, res, err := s.GetVerifiers(ctx, filter.Count(true)) + verifierRes, res, err := s.GetVerifiers(ctx, "ns1", filter.Count(true)) assert.NoError(t, err) assert.Equal(t, 1, len(verifierRes)) assert.Equal(t, int64(1), *res.TotalCount) verifierReadJson, _ = json.Marshal(verifierRes[0]) assert.Equal(t, string(verifierJson), string(verifierReadJson)) - // Update - updateTime := fftypes.Now() - up := database.VerifierQueryFactory.NewUpdate(ctx).Set("created", updateTime) - err = s.UpdateVerifier(ctx, verifierUpdated.Hash, up) - assert.NoError(t, err) - - // Test find updated value - filter = fb.And( - fb.Eq("value", verifierUpdated.Value), - fb.Eq("created", updateTime.String()), - ) - verifiers, _, err := s.GetVerifiers(ctx, filter) - assert.NoError(t, err) - assert.Equal(t, 1, len(verifiers)) - s.callbacks.AssertExpectations(t) } @@ -170,7 +155,7 @@ func TestUpsertVerifierFailCommit(t *testing.T) { func TestGetVerifierByHashSelectFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) - _, err := s.GetVerifierByHash(context.Background(), fftypes.NewRandB32()) + _, err := s.GetVerifierByHash(context.Background(), "ns1", fftypes.NewRandB32()) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -194,7 +179,7 @@ func TestGetVerifierByVerifierSelectFail(t *testing.T) { func TestGetVerifierByHashNotFound(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"verifier", "verifier", "verifier"})) - msg, err := s.GetVerifierByHash(context.Background(), fftypes.NewRandB32()) + msg, err := s.GetVerifierByHash(context.Background(), "ns1", fftypes.NewRandB32()) assert.NoError(t, err) assert.Nil(t, msg) assert.NoError(t, mock.ExpectationsWereMet()) @@ -203,7 +188,7 @@ func TestGetVerifierByHashNotFound(t *testing.T) { func TestGetVerifierByHashScanFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"verifier"}).AddRow("only one")) - _, err := s.GetVerifierByHash(context.Background(), fftypes.NewRandB32()) + _, err := s.GetVerifierByHash(context.Background(), "ns1", fftypes.NewRandB32()) assert.Regexp(t, "FF10121", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -212,7 +197,7 @@ func TestGetVerifierQueryFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnError(fmt.Errorf("pop")) f := database.VerifierQueryFactory.NewFilter(context.Background()).Eq("value", "") - _, _, err := s.GetVerifiers(context.Background(), f) + _, _, err := s.GetVerifiers(context.Background(), "ns1", f) assert.Regexp(t, "FF10115", err) assert.NoError(t, mock.ExpectationsWereMet()) } @@ -220,7 +205,7 @@ func TestGetVerifierQueryFail(t *testing.T) { func TestGetVerifierBuildQueryFail(t *testing.T) { s, _ := newMockProvider().init() f := database.VerifierQueryFactory.NewFilter(context.Background()).Eq("value", map[bool]bool{true: false}) - _, _, err := s.GetVerifiers(context.Background(), f) + _, _, err := s.GetVerifiers(context.Background(), "ns1", f) assert.Regexp(t, "FF00143.*type", err) } @@ -228,33 +213,7 @@ func TestGetVerifierReadMessageFail(t *testing.T) { s, mock := newMockProvider().init() mock.ExpectQuery("SELECT .*").WillReturnRows(sqlmock.NewRows([]string{"value"}).AddRow("only one")) f := database.VerifierQueryFactory.NewFilter(context.Background()).Eq("value", "") - _, _, err := s.GetVerifiers(context.Background(), f) + _, _, err := s.GetVerifiers(context.Background(), "ns1", f) assert.Regexp(t, "FF10121", err) assert.NoError(t, mock.ExpectationsWereMet()) } - -func TestVerifierUpdateBeginFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin().WillReturnError(fmt.Errorf("pop")) - u := database.VerifierQueryFactory.NewUpdate(context.Background()).Set("value", "anything") - err := s.UpdateVerifier(context.Background(), fftypes.NewRandB32(), u) - assert.Regexp(t, "FF10114", err) -} - -func TestVerifierUpdateBuildQueryFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - u := database.VerifierQueryFactory.NewUpdate(context.Background()).Set("value", map[bool]bool{true: false}) - err := s.UpdateVerifier(context.Background(), fftypes.NewRandB32(), u) - assert.Regexp(t, "FF00143.*value", err) -} - -func TestVerifierUpdateFail(t *testing.T) { - s, mock := newMockProvider().init() - mock.ExpectBegin() - mock.ExpectExec("UPDATE .*").WillReturnError(fmt.Errorf("pop")) - mock.ExpectRollback() - u := database.VerifierQueryFactory.NewUpdate(context.Background()).Set("value", fftypes.NewUUID()) - err := s.UpdateVerifier(context.Background(), fftypes.NewRandB32(), u) - assert.Regexp(t, "FF10117", err) -} diff --git a/internal/definitions/definition_handler.go b/internal/definitions/definition_handler.go index 66ae478ee8..f5ff854e2d 100644 --- a/internal/definitions/definition_handler.go +++ b/internal/definitions/definition_handler.go @@ -95,6 +95,7 @@ type DefinitionBatchState interface { } type definitionHandlers struct { + namespace string database database.Plugin blockchain blockchain.Plugin exchange dataexchange.Plugin @@ -104,11 +105,12 @@ type definitionHandlers struct { contracts contracts.Manager } -func NewDefinitionHandler(ctx context.Context, di database.Plugin, bi blockchain.Plugin, dx dataexchange.Plugin, dm data.Manager, im identity.Manager, am assets.Manager, cm contracts.Manager) (DefinitionHandler, error) { +func NewDefinitionHandler(ctx context.Context, ns string, di database.Plugin, bi blockchain.Plugin, dx dataexchange.Plugin, dm data.Manager, im identity.Manager, am assets.Manager, cm contracts.Manager) (DefinitionHandler, error) { if di == nil || bi == nil || dx == nil || dm == nil || im == nil || am == nil || cm == nil { return nil, i18n.NewError(ctx, coremsgs.MsgInitializationNilDepError, "DefinitionHandler") } return &definitionHandlers{ + namespace: ns, database: di, blockchain: bi, exchange: dx, diff --git a/internal/definitions/definition_handler_identity_claim.go b/internal/definitions/definition_handler_identity_claim.go index c4eed54667..22dbb4ae8a 100644 --- a/internal/definitions/definition_handler_identity_claim.go +++ b/internal/definitions/definition_handler_identity_claim.go @@ -149,7 +149,7 @@ func (dh *definitionHandlers) handleIdentityClaim(ctx context.Context, state Def existingIdentity, err := dh.database.GetIdentityByName(ctx, identity.Type, identity.Namespace, identity.Name) if err == nil && existingIdentity == nil { - existingIdentity, err = dh.database.GetIdentityByID(ctx, identity.ID) + existingIdentity, err = dh.database.GetIdentityByID(ctx, dh.namespace, identity.ID) } if err != nil { return HandlerResult{Action: ActionRetry}, err // retry database errors diff --git a/internal/definitions/definition_handler_identity_claim_test.go b/internal/definitions/definition_handler_identity_claim_test.go index b106c1a878..e46f6eca8b 100644 --- a/internal/definitions/definition_handler_identity_claim_test.go +++ b/internal/definitions/definition_handler_identity_claim_test.go @@ -149,7 +149,7 @@ func TestHandleDefinitionIdentityClaimCustomWithExistingParentVerificationOk(t * mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return([]*core.Message{ {Header: core.MessageHeader{ID: fftypes.NewUUID(), Tag: "skipped missing data"}}, @@ -200,7 +200,7 @@ func TestHandleDefinitionIdentityClaimIdempotentReplay(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(custom1, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(custom1, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(&core.Verifier{ Identity: custom1.ID, Namespace: "ns1", @@ -245,7 +245,7 @@ func TestHandleDefinitionIdentityClaimFailInsertIdentity(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return([]*core.Message{}, nil, nil) mdi.On("UpsertVerifier", ctx, mock.Anything, database.UpsertOptimizationNew).Return(nil) @@ -277,7 +277,7 @@ func TestHandleDefinitionIdentityClaimVerificationDataFail(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return([]*core.Message{}, nil, nil) @@ -307,7 +307,7 @@ func TestHandleDefinitionIdentityClaimVerificationMissingData(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return([]*core.Message{}, nil, nil) @@ -337,7 +337,7 @@ func TestHandleDefinitionIdentityClaimFailInsertVerifier(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return([]*core.Message{}, nil, nil) mdi.On("UpsertVerifier", ctx, mock.Anything, database.UpsertOptimizationNew).Return(fmt.Errorf("pop")) @@ -368,7 +368,7 @@ func TestHandleDefinitionIdentityClaimCustomMissingParentVerificationOk(t *testi mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return([]*core.Message{}, nil, nil) @@ -392,7 +392,7 @@ func TestHandleDefinitionIdentityClaimCustomParentVerificationFail(t *testing.T) mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("GetMessages", ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) @@ -416,7 +416,7 @@ func TestHandleDefinitionIdentityClaimVerifierClash(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(&core.Verifier{ Hash: fftypes.NewRandB32(), }, nil) @@ -441,7 +441,7 @@ func TestHandleDefinitionIdentityClaimVerifierError(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, fmt.Errorf("pop")) action, err := dh.HandleDefinitionBroadcast(ctx, bs, claimMsg, core.DataArray{claimData}, fftypes.NewUUID()) @@ -489,7 +489,7 @@ func TestHandleDefinitionIdentityClaimIdentityError(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, fmt.Errorf("pop")) action, err := dh.HandleDefinitionBroadcast(ctx, bs, claimMsg, core.DataArray{claimData}, fftypes.NewUUID()) assert.Equal(t, HandlerResult{Action: ActionRetry}, action) diff --git a/internal/definitions/definition_handler_identity_verification_test.go b/internal/definitions/definition_handler_identity_verification_test.go index 1807dbb448..92b34e6854 100644 --- a/internal/definitions/definition_handler_identity_verification_test.go +++ b/internal/definitions/definition_handler_identity_verification_test.go @@ -45,7 +45,7 @@ func TestHandleDefinitionIdentityVerificationWithExistingClaimOk(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetMessageByID", ctx, claimMsg.Header.ID).Return(nil, nil) // Simulate pending confirm in same pin batch mdi.On("GetIdentityByName", ctx, custom1.Type, custom1.Namespace, custom1.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, custom1.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", custom1.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "0x12345").Return(nil, nil) mdi.On("UpsertIdentity", ctx, mock.MatchedBy(func(identity *core.Identity) bool { assert.Equal(t, *claimMsg.Header.ID, *identity.Messages.Claim) diff --git a/internal/definitions/definition_handler_network_node_test.go b/internal/definitions/definition_handler_network_node_test.go index 0b1ad7719b..bb90053616 100644 --- a/internal/definitions/definition_handler_network_node_test.go +++ b/internal/definitions/definition_handler_network_node_test.go @@ -111,7 +111,7 @@ func TestHandleDeprecatedNodeDefinitionOK(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, core.IdentityTypeNode, core.LegacySystemNamespace, node.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, node.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", node.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeFFDXPeerID, core.LegacySystemNamespace, "member_0").Return(nil, nil) mdi.On("UpsertIdentity", ctx, mock.MatchedBy(func(identity *core.Identity) bool { assert.Equal(t, *msg.Header.ID, *identity.Messages.Claim) diff --git a/internal/definitions/definition_handler_network_org_test.go b/internal/definitions/definition_handler_network_org_test.go index 179f056184..869fd6e0b2 100644 --- a/internal/definitions/definition_handler_network_org_test.go +++ b/internal/definitions/definition_handler_network_org_test.go @@ -94,7 +94,7 @@ func TestHandleDeprecatedOrgDefinitionOK(t *testing.T) { mdi := dh.database.(*databasemocks.Plugin) mdi.On("GetIdentityByName", ctx, core.IdentityTypeOrg, core.LegacySystemNamespace, org.Name).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, org.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", org.ID).Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, core.LegacySystemNamespace, msg.Header.Key).Return(nil, nil) mdi.On("UpsertIdentity", ctx, mock.MatchedBy(func(identity *core.Identity) bool { assert.Equal(t, *msg.Header.ID, *identity.Messages.Claim) diff --git a/internal/definitions/definition_handler_test.go b/internal/definitions/definition_handler_test.go index f32c6d4c7a..8ef28629ca 100644 --- a/internal/definitions/definition_handler_test.go +++ b/internal/definitions/definition_handler_test.go @@ -42,7 +42,7 @@ func newTestDefinitionHandler(t *testing.T) (*definitionHandlers, *testDefinitio mam := &assetmocks.Manager{} mcm := &contractmocks.Manager{} mbi.On("VerifierType").Return(core.VerifierTypeEthAddress).Maybe() - dh, _ := NewDefinitionHandler(context.Background(), mdi, mbi, mdx, mdm, mim, mam, mcm) + dh, _ := NewDefinitionHandler(context.Background(), "ns1", mdi, mbi, mdx, mdm, mim, mam, mcm) return dh.(*definitionHandlers), newTestDefinitionBatchState(t) } @@ -83,7 +83,7 @@ func (bs *testDefinitionBatchState) assertNoFinalizers() { } func TestInitFail(t *testing.T) { - _, err := NewDefinitionHandler(context.Background(), nil, nil, nil, nil, nil, nil, nil) + _, err := NewDefinitionHandler(context.Background(), "", nil, nil, nil, nil, nil, nil, nil) assert.Regexp(t, "FF10128", err) } diff --git a/internal/events/event_dispatcher_test.go b/internal/events/event_dispatcher_test.go index 2ec7319ae8..92dc78c095 100644 --- a/internal/events/event_dispatcher_test.go +++ b/internal/events/event_dispatcher_test.go @@ -48,7 +48,7 @@ func newTestEventDispatcher(sub *subscription) (*eventDispatcher, func()) { mdm := &datamocks.Manager{} mbm := &broadcastmocks.Manager{} mpm := &privatemessagingmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) ctx, cancel := context.WithCancel(context.Background()) return newEventDispatcher(ctx, mei, mdi, mdm, mbm, mpm, fftypes.NewUUID().String(), sub, newEventNotifier(ctx, "ut"), txHelper), func() { cancel() diff --git a/internal/events/event_manager_test.go b/internal/events/event_manager_test.go index 96f5db2a0d..8f396586ac 100644 --- a/internal/events/event_manager_test.go +++ b/internal/events/event_manager_test.go @@ -80,7 +80,7 @@ func newTestEventManagerCommon(t *testing.T, metrics, dbconcurrency bool) (*even mni := &sysmessagingmocks.LocalNodeInfo{} mdd := &shareddownloadmocks.Manager{} mmi := &metricsmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mmi.On("IsMetricsEnabled").Return(metrics) if metrics { mmi.On("TransferConfirmed", mock.Anything) @@ -144,7 +144,7 @@ func TestStartStopBadTransports(t *testing.T) { mam := &assetmocks.Manager{} msd := &shareddownloadmocks.Manager{} mm := &metricsmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mdi.On("Capabilities").Return(&database.Capabilities{Concurrency: false}).Maybe() mbi.On("VerifierType").Return(core.VerifierTypeEthAddress) _, err := NewEventManager(context.Background(), "ns1", mni, mpi, mdi, mbi, mim, msh, mdm, mbm, mpm, mam, msd, mm, txHelper) diff --git a/internal/events/subscription_manager_test.go b/internal/events/subscription_manager_test.go index 8cffc58b84..19b5e5527f 100644 --- a/internal/events/subscription_manager_test.go +++ b/internal/events/subscription_manager_test.go @@ -44,7 +44,7 @@ func newTestSubManager(t *testing.T, mei *eventsmocks.Plugin) (*subscriptionMana mdm := &datamocks.Manager{} mbm := &broadcastmocks.Manager{} mpm := &privatemessagingmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) ctx, cancel := context.WithCancel(context.Background()) mei.On("Name").Return("ut") @@ -172,7 +172,7 @@ func TestSubManagerBadPlugin(t *testing.T) { mdm := &datamocks.Manager{} mbm := &broadcastmocks.Manager{} mpm := &privatemessagingmocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) coreconfig.Reset() config.Set(coreconfig.EventTransportsEnabled, []string{"!unknown!"}) _, err := newSubscriptionManager(context.Background(), mdi, mdm, newEventNotifier(context.Background(), "ut"), mbm, mpm, txHelper) diff --git a/internal/identity/identitymanager.go b/internal/identity/identitymanager.go index 3e919960a8..85a3592f5a 100644 --- a/internal/identity/identitymanager.go +++ b/internal/identity/identitymanager.go @@ -203,7 +203,7 @@ func (im *identityManager) firstVerifierForIdentity(ctx context.Context, vType c fb.Eq("type", vType), fb.Eq("identity", identity.ID), ) - verifiers, _, err := im.database.GetVerifiers(ctx, filter) + verifiers, _, err := im.database.GetVerifiers(ctx, im.namespace, filter) if err != nil { return nil, true /* DB Error */, err } @@ -394,7 +394,7 @@ func (im *identityManager) cachedIdentityLookupByVerifierRef(ctx context.Context } return nil, err } - identity, err := im.database.GetIdentityByID(ctx, verifier.Identity) + identity, err := im.database.GetIdentityByID(ctx, namespace, verifier.Identity) if err != nil { return nil, err } @@ -427,14 +427,14 @@ func (im *identityManager) CachedIdentityLookupNilOK(ctx context.Context, didLoo return nil, false, i18n.NewError(ctx, coremsgs.MsgDIDResolverUnknown, didLookupStr) } // Look up by the full DID - if identity, err = im.database.GetIdentityByDID(ctx, didLookupStr); err != nil { + if identity, err = im.database.GetIdentityByDID(ctx, im.namespace, didLookupStr); err != nil { return nil, true /* DB Error */, err } if identity == nil && strings.HasPrefix(didLookupStr, core.FireFlyOrgDIDPrefix) { // We allow the UUID to be used to resolve DIDs as an alias to the name uuid, err := fftypes.ParseUUID(ctx, strings.TrimPrefix(didLookupStr, core.FireFlyOrgDIDPrefix)) if err == nil { - if identity, err = im.database.GetIdentityByID(ctx, uuid); err != nil { + if identity, err = im.database.GetIdentityByID(ctx, im.namespace, uuid); err != nil { return nil, true /* DB Error */, err } } @@ -472,7 +472,7 @@ func (im *identityManager) CachedIdentityLookupByID(ctx context.Context, id *fft cached.Extend(im.identityCacheTTL) identity = cached.Value().(*core.Identity) } else { - identity, err = im.database.GetIdentityByID(ctx, id) + identity, err = im.database.GetIdentityByID(ctx, im.namespace, id) if err != nil || identity == nil { return identity, err } diff --git a/internal/identity/identitymanager_test.go b/internal/identity/identitymanager_test.go index e689da8f76..ef5d30206f 100644 --- a/internal/identity/identitymanager_test.go +++ b/internal/identity/identitymanager_test.go @@ -83,7 +83,7 @@ func TestResolveInputSigningIdentityOrgFallbackOk(t *testing.T) { Value: "fullkey123", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, orgID). + mdi.On("GetIdentityByID", ctx, "ns1", orgID). Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, @@ -124,7 +124,7 @@ func TestResolveInputSigningIdentityByKeyOk(t *testing.T) { Value: "fullkey123", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, idID). + mdi.On("GetIdentityByID", ctx, "ns1", idID). Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: idID, @@ -162,7 +162,7 @@ func TestResolveInputSigningIdentityAnonymousKeyWithAuthorOk(t *testing.T) { mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "fullkey123").Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "fullkey123").Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, core.LegacySystemNamespace, "fullkey123").Return(nil, nil) - mdi.On("GetIdentityByDID", ctx, "did:firefly:ns/ns1/myid"). + mdi.On("GetIdentityByDID", ctx, "ns1", "did:firefly:ns/ns1/myid"). Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: idID, @@ -230,7 +230,7 @@ func TestResolveInputSigningIdentityByKeyDIDMismatch(t *testing.T) { Value: "fullkey123", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, idID). + mdi.On("GetIdentityByID", ctx, "ns1", idID). Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: idID, @@ -268,7 +268,7 @@ func TestResolveInputSigningIdentityByKeyNotFound(t *testing.T) { Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, core.LegacySystemNamespace, "fullkey123"). Return(nil, nil) - mdi.On("GetIdentityByDID", ctx, "did:firefly:ns/ns1/unknown"). + mdi.On("GetIdentityByDID", ctx, "ns1", "did:firefly:ns/ns1/unknown"). Return(nil, nil) msgIdentity := &core.SignerRef{ @@ -338,7 +338,7 @@ func TestResolveInputSigningIdentityByOrgNameOk(t *testing.T) { Type: core.IdentityTypeOrg, }, }, nil) - mdi.On("GetVerifiers", ctx, mock.Anything). + mdi.On("GetVerifiers", ctx, "ns1", mock.Anything). Return([]*core.Verifier{ (&core.Verifier{ Identity: idID, @@ -415,7 +415,7 @@ func TestResolveInputSigningIdentityByOrgVerifierFail(t *testing.T) { Type: core.IdentityTypeOrg, }, }, nil) - mdi.On("GetVerifiers", ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + mdi.On("GetVerifiers", ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) msgIdentity := &core.SignerRef{ Author: "org1", @@ -528,7 +528,7 @@ func TestFirstVerifierForIdentityNotFound(t *testing.T) { } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetVerifiers", ctx, mock.Anything).Return([]*core.Verifier{}, nil, nil) + mdi.On("GetVerifiers", ctx, "ns1", mock.Anything).Return([]*core.Verifier{}, nil, nil) _, retryable, err := im.firstVerifierForIdentity(ctx, core.VerifierTypeEthAddress, id) assert.Regexp(t, "FF10353", err) @@ -591,7 +591,7 @@ func TestResolveDefaultSigningIdentitySystemFallback(t *testing.T) { mdi := im.database.(*databasemocks.Plugin) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, "ns1", "key12345").Return(nil, nil) mdi.On("GetVerifierByValue", ctx, core.VerifierTypeEthAddress, core.LegacySystemNamespace, "key12345").Return(verifier, nil) - mdi.On("GetIdentityByID", ctx, id.ID).Return(id, nil) + mdi.On("GetIdentityByID", ctx, core.LegacySystemNamespace, id.ID).Return(id, nil) im.orgName = "org1" @@ -690,7 +690,7 @@ func TestGetMultipartyRootOrgMismatch(t *testing.T) { Value: "fullkey123", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, orgID). + mdi.On("GetIdentityByID", ctx, "ns1", orgID). Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: orgID, @@ -729,7 +729,7 @@ func TestCachedIdentityLookupByVerifierRefCaching(t *testing.T) { Value: "peer1", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, id.ID). + mdi.On("GetIdentityByID", ctx, "ns1", id.ID). Return(id, nil) v1, err := im.cachedIdentityLookupByVerifierRef(ctx, "ns1", &core.VerifierRef{ @@ -771,7 +771,7 @@ func TestCachedIdentityLookupByVerifierRefError(t *testing.T) { Value: "peer1", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, id.ID).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", ctx, "ns1", id.ID).Return(nil, fmt.Errorf("pop")) _, err := im.cachedIdentityLookupByVerifierRef(ctx, "ns1", &core.VerifierRef{ Type: core.VerifierTypeEthAddress, @@ -804,7 +804,7 @@ func TestCachedIdentityLookupByVerifierRefNotFound(t *testing.T) { Value: "peer1", }, }).Seal(), nil) - mdi.On("GetIdentityByID", ctx, id.ID).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", id.ID).Return(nil, nil) _, err := im.cachedIdentityLookupByVerifierRef(ctx, "ns1", &core.VerifierRef{ Type: core.VerifierTypeEthAddress, @@ -828,7 +828,7 @@ func TestCachedIdentityLookupMustExistCaching(t *testing.T) { }, } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByDID", ctx, "did:firefly:node/peer1").Return(id, nil).Once() + mdi.On("GetIdentityByDID", ctx, "ns1", "did:firefly:node/peer1").Return(id, nil).Once() v1, _, err := im.CachedIdentityLookupMustExist(ctx, "did:firefly:node/peer1") assert.NoError(t, err) @@ -854,7 +854,7 @@ func TestCachedIdentityLookupMustExistGetIDFail(t *testing.T) { ctx, im := newTestIdentityManager(t) mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByDID", ctx, "did:firefly:node/peer1").Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByDID", ctx, "ns1", "did:firefly:node/peer1").Return(nil, fmt.Errorf("pop")) _, retryable, err := im.CachedIdentityLookupMustExist(ctx, "did:firefly:node/peer1") assert.Regexp(t, "pop", err) @@ -870,8 +870,8 @@ func TestCachedIdentityLookupByVerifierByOldDIDFail(t *testing.T) { did := core.FireFlyOrgDIDPrefix + orgUUID.String() mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByDID", ctx, did).Return(nil, nil) - mdi.On("GetIdentityByID", ctx, mock.MatchedBy(func(uuid *fftypes.UUID) bool { + mdi.On("GetIdentityByDID", ctx, "ns1", did).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", mock.MatchedBy(func(uuid *fftypes.UUID) bool { return uuid.Equals(orgUUID) })).Return(nil, fmt.Errorf("pop")) @@ -895,7 +895,7 @@ func TestCachedIdentityLookupByIDCaching(t *testing.T) { }, } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, id.ID).Return(id, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", id.ID).Return(id, nil).Once() v1, err := im.CachedIdentityLookupByID(ctx, id.ID) assert.NoError(t, err) @@ -961,9 +961,9 @@ func TestVerifyIdentityChainCustomOrgOrgOk(t *testing.T) { }, } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, idIntermediateOrg.ID).Return(idIntermediateOrg, nil).Once() - mdi.On("GetIdentityByID", ctx, idIntermediateCustom.ID).Return(idIntermediateCustom, nil).Once() - mdi.On("GetIdentityByID", ctx, idRoot.ID).Return(idRoot, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", idIntermediateOrg.ID).Return(idIntermediateOrg, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", idIntermediateCustom.ID).Return(idIntermediateCustom, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", idRoot.ID).Return(idRoot, nil).Once() immeidateParent, _, err := im.VerifyIdentityChain(ctx, idLeaf) assert.Equal(t, idIntermediateCustom, immeidateParent) @@ -1020,7 +1020,7 @@ func TestVerifyIdentityChainLoop(t *testing.T) { } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, idID2).Return(id2, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", idID2).Return(id2, nil).Once() _, retryable, err := im.VerifyIdentityChain(ctx, id1) assert.Regexp(t, "FF10364", err) @@ -1056,7 +1056,7 @@ func TestVerifyIdentityChainBadParent(t *testing.T) { } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, idID2).Return(id2, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", idID2).Return(id2, nil).Once() _, retryable, err := im.VerifyIdentityChain(ctx, id1) assert.Regexp(t, "FF10366", err) @@ -1082,7 +1082,7 @@ func TestVerifyIdentityChainErr(t *testing.T) { } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, idID2).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", ctx, "ns1", idID2).Return(nil, fmt.Errorf("pop")) _, retryable, err := im.VerifyIdentityChain(ctx, id1) assert.Regexp(t, "pop", err) @@ -1108,7 +1108,7 @@ func TestVerifyIdentityChainNotFound(t *testing.T) { } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, idID2).Return(nil, nil) + mdi.On("GetIdentityByID", ctx, "ns1", idID2).Return(nil, nil) _, retryable, err := im.VerifyIdentityChain(ctx, id1) assert.Regexp(t, "FF10214", err) @@ -1143,7 +1143,7 @@ func TestVerifyIdentityChainInvalidParent(t *testing.T) { } mdi := im.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", ctx, id1.ID).Return(id1, nil).Once() + mdi.On("GetIdentityByID", ctx, "ns1", id1.ID).Return(id1, nil).Once() _, retryable, err := im.VerifyIdentityChain(ctx, id2) assert.Regexp(t, "FF10365", err) diff --git a/internal/namespace/manager_test.go b/internal/namespace/manager_test.go index d71cdca4fa..cff089673e 100644 --- a/internal/namespace/manager_test.go +++ b/internal/namespace/manager_test.go @@ -228,7 +228,7 @@ func TestInitOrchestratorFail(t *testing.T) { nm.mdi.On("Init", mock.Anything, mock.Anything).Return(nil) nm.mdi.On("RegisterListener", mock.Anything).Return() - nm.mdi.On("GetIdentities", mock.Anything, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + nm.mdi.On("GetIdentities", mock.Anything, "default", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) nm.mbi.On("Init", mock.Anything, mock.Anything, nm.mmi).Return(nil) nm.mbi.On("RegisterListener", mock.Anything).Return() nm.mdx.On("Init", mock.Anything, mock.Anything).Return(nil) diff --git a/internal/networkmap/data_query.go b/internal/networkmap/data_query.go index b49a1ca18e..56549ed020 100644 --- a/internal/networkmap/data_query.go +++ b/internal/networkmap/data_query.go @@ -28,16 +28,16 @@ import ( "github.com/hyperledger/firefly/pkg/database" ) -func (nm *networkMap) GetOrganizationByNameOrID(ctx context.Context, ns, nameOrID string) (org *core.Identity, err error) { +func (nm *networkMap) GetOrganizationByNameOrID(ctx context.Context, nameOrID string) (org *core.Identity, err error) { u, err := fftypes.ParseUUID(ctx, nameOrID) if err != nil { if err := core.ValidateFFNameField(ctx, nameOrID, "name"); err != nil { return nil, err } - if org, err = nm.database.GetIdentityByName(ctx, core.IdentityTypeOrg, ns, nameOrID); err != nil { + if org, err = nm.database.GetIdentityByName(ctx, core.IdentityTypeOrg, nm.namespace, nameOrID); err != nil { return nil, err } - } else if org, err = nm.database.GetIdentityByID(ctx, u); err != nil { + } else if org, err = nm.database.GetIdentityByID(ctx, nm.namespace, u); err != nil { return nil, err } if org == nil { @@ -50,26 +50,26 @@ func (nm *networkMap) GetOrganizationByNameOrID(ctx context.Context, ns, nameOrI return org, nil } -func (nm *networkMap) GetOrganizations(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { +func (nm *networkMap) GetOrganizations(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { filter.Condition(filter.Builder().Eq("type", core.IdentityTypeOrg)) - return nm.GetIdentities(ctx, ns, filter) + return nm.GetIdentities(ctx, filter) } -func (nm *networkMap) GetOrganizationsWithVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { +func (nm *networkMap) GetOrganizationsWithVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { filter.Condition(filter.Builder().Eq("type", core.IdentityTypeOrg)) - return nm.GetIdentitiesWithVerifiers(ctx, ns, filter) + return nm.GetIdentitiesWithVerifiers(ctx, filter) } -func (nm *networkMap) GetNodeByNameOrID(ctx context.Context, ns, nameOrID string) (node *core.Identity, err error) { +func (nm *networkMap) GetNodeByNameOrID(ctx context.Context, nameOrID string) (node *core.Identity, err error) { u, err := fftypes.ParseUUID(ctx, nameOrID) if err != nil { if err := core.ValidateFFNameField(ctx, nameOrID, "name"); err != nil { return nil, err } - if node, err = nm.database.GetIdentityByName(ctx, core.IdentityTypeNode, ns, nameOrID); err != nil { + if node, err = nm.database.GetIdentityByName(ctx, core.IdentityTypeNode, nm.namespace, nameOrID); err != nil { return nil, err } - } else if node, err = nm.database.GetIdentityByID(ctx, u); err != nil { + } else if node, err = nm.database.GetIdentityByID(ctx, nm.namespace, u); err != nil { return nil, err } if node == nil { @@ -82,22 +82,21 @@ func (nm *networkMap) GetNodeByNameOrID(ctx context.Context, ns, nameOrID string return node, nil } -func (nm *networkMap) GetNodes(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { +func (nm *networkMap) GetNodes(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { filter.Condition(filter.Builder().Eq("type", core.IdentityTypeNode)) - filter.Condition(filter.Builder().Eq("namespace", ns)) - return nm.database.GetIdentities(ctx, filter) + return nm.database.GetIdentities(ctx, nm.namespace, filter) } -func (nm *networkMap) GetIdentityByID(ctx context.Context, ns, id string) (*core.Identity, error) { +func (nm *networkMap) GetIdentityByID(ctx context.Context, id string) (*core.Identity, error) { u, err := fftypes.ParseUUID(ctx, id) if err != nil { return nil, err } - identity, err := nm.database.GetIdentityByID(ctx, u) + identity, err := nm.database.GetIdentityByID(ctx, nm.namespace, u) if err != nil { return nil, err } - if identity == nil || identity.Namespace != ns { + if identity == nil { return nil, i18n.NewError(ctx, coremsgs.Msg404NotFound) } return identity, nil @@ -109,7 +108,7 @@ func (nm *networkMap) withVerifiers(ctx context.Context, identity *core.Identity fb.Eq("namespace", identity.Namespace), fb.Eq("identity", identity.ID), ) - verifiers, _, err := nm.database.GetVerifiers(ctx, filter) + verifiers, _, err := nm.database.GetVerifiers(ctx, nm.namespace, filter) if err != nil { return nil, err } @@ -123,15 +122,15 @@ func (nm *networkMap) withVerifiers(ctx context.Context, identity *core.Identity }, nil } -func (nm *networkMap) GetIdentityByIDWithVerifiers(ctx context.Context, ns, id string) (*core.IdentityWithVerifiers, error) { - identity, err := nm.GetIdentityByID(ctx, ns, id) +func (nm *networkMap) GetIdentityByIDWithVerifiers(ctx context.Context, id string) (*core.IdentityWithVerifiers, error) { + identity, err := nm.GetIdentityByID(ctx, id) if err != nil { return nil, err } return nm.withVerifiers(ctx, identity) } -func (nm *networkMap) GetIdentityByDID(ctx context.Context, ns, did string) (*core.Identity, error) { +func (nm *networkMap) GetIdentityByDID(ctx context.Context, did string) (*core.Identity, error) { identity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, did) if err != nil { return nil, err @@ -139,7 +138,7 @@ func (nm *networkMap) GetIdentityByDID(ctx context.Context, ns, did string) (*co return identity, nil } -func (nm *networkMap) GetIdentityByDIDWithVerifiers(ctx context.Context, ns, did string) (*core.IdentityWithVerifiers, error) { +func (nm *networkMap) GetIdentityByDIDWithVerifiers(ctx context.Context, did string) (*core.IdentityWithVerifiers, error) { identity, _, err := nm.identity.CachedIdentityLookupMustExist(ctx, did) if err != nil { return nil, err @@ -147,18 +146,12 @@ func (nm *networkMap) GetIdentityByDIDWithVerifiers(ctx context.Context, ns, did return nm.withVerifiers(ctx, identity) } -func (nm *networkMap) GetIdentities(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { - filter.Condition(filter.Builder().Eq("namespace", ns)) - return nm.database.GetIdentities(ctx, filter) +func (nm *networkMap) GetIdentities(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { + return nm.database.GetIdentities(ctx, nm.namespace, filter) } -func (nm *networkMap) GetIdentitiesWithVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { - filter.Condition(filter.Builder().Eq("namespace", ns)) - return nm.getIdentitiesWithVerifiersGlobal(ctx, filter) -} - -func (nm *networkMap) getIdentitiesWithVerifiersGlobal(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { - identities, res, err := nm.database.GetIdentities(ctx, filter) +func (nm *networkMap) GetIdentitiesWithVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { + identities, res, err := nm.database.GetIdentities(ctx, nm.namespace, filter) if err != nil { return nil, nil, err } @@ -171,7 +164,7 @@ func (nm *networkMap) getIdentitiesWithVerifiersGlobal(ctx context.Context, filt fb.In("identity", iids), ) idsWithVerifiers := make([]*core.IdentityWithVerifiers, len(identities)) - verifiers, _, err := nm.database.GetVerifiers(ctx, verifierFilter) + verifiers, _, err := nm.database.GetVerifiers(ctx, nm.namespace, verifierFilter) if err != nil { return nil, nil, err } @@ -189,47 +182,46 @@ func (nm *networkMap) getIdentitiesWithVerifiersGlobal(ctx context.Context, filt return idsWithVerifiers, res, err } -func (nm *networkMap) GetIdentityVerifiers(ctx context.Context, ns, id string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { - identity, err := nm.GetIdentityByID(ctx, ns, id) +func (nm *networkMap) GetIdentityVerifiers(ctx context.Context, id string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { + identity, err := nm.GetIdentityByID(ctx, id) if err != nil { return nil, nil, err } filter.Condition(filter.Builder().Eq("identity", identity.ID)) - return nm.database.GetVerifiers(ctx, filter) + return nm.database.GetVerifiers(ctx, nm.namespace, filter) } -func (nm *networkMap) GetDIDDocForIndentityByID(ctx context.Context, ns, id string) (*DIDDocument, error) { - identity, err := nm.GetIdentityByID(ctx, ns, id) +func (nm *networkMap) GetDIDDocForIndentityByID(ctx context.Context, id string) (*DIDDocument, error) { + identity, err := nm.GetIdentityByID(ctx, id) if err != nil { return nil, err } return nm.generateDIDDocument(ctx, identity) } -func (nm *networkMap) GetDIDDocForIndentityByDID(ctx context.Context, ns, did string) (*DIDDocument, error) { - identity, err := nm.GetIdentityByDID(ctx, ns, did) +func (nm *networkMap) GetDIDDocForIndentityByDID(ctx context.Context, did string) (*DIDDocument, error) { + identity, err := nm.GetIdentityByDID(ctx, did) if err != nil { return nil, err } return nm.generateDIDDocument(ctx, identity) } -func (nm *networkMap) GetVerifierByHash(ctx context.Context, ns, hash string) (*core.Verifier, error) { +func (nm *networkMap) GetVerifierByHash(ctx context.Context, hash string) (*core.Verifier, error) { b32, err := fftypes.ParseBytes32(ctx, hash) if err != nil { return nil, err } - verifier, err := nm.database.GetVerifierByHash(ctx, b32) + verifier, err := nm.database.GetVerifierByHash(ctx, nm.namespace, b32) if err != nil { return nil, err } - if verifier == nil || verifier.Namespace != ns { + if verifier == nil { return nil, i18n.NewError(ctx, coremsgs.Msg404NotFound) } return verifier, nil } -func (nm *networkMap) GetVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { - filter.Condition(filter.Builder().Eq("namespace", ns)) - return nm.database.GetVerifiers(ctx, filter) +func (nm *networkMap) GetVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { + return nm.database.GetVerifiers(ctx, nm.namespace, filter) } diff --git a/internal/networkmap/data_query_test.go b/internal/networkmap/data_query_test.go index 4a0c503ff6..4c82205444 100644 --- a/internal/networkmap/data_query_test.go +++ b/internal/networkmap/data_query_test.go @@ -33,9 +33,9 @@ func TestGetOrganizationByNameOrIDOk(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg}}, nil) - res, err := nm.GetOrganizationByNameOrID(nm.ctx, "ns", id.String()) + res, err := nm.GetOrganizationByNameOrID(nm.ctx, id.String()) assert.NoError(t, err) assert.Equal(t, *id, *res.ID) } @@ -44,9 +44,9 @@ func TestGetOrganizationByNameOrIDNotOrg(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeNode}}, nil) - res, err := nm.GetOrganizationByNameOrID(nm.ctx, "ns", id.String()) + res, err := nm.GetOrganizationByNameOrID(nm.ctx, id.String()) assert.NoError(t, err) assert.Nil(t, res) } @@ -55,8 +55,8 @@ func TestGetOrganizationByNameOrIDNotFound(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, nil) - _, err := nm.GetOrganizationByNameOrID(nm.ctx, "ns", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, nil) + _, err := nm.GetOrganizationByNameOrID(nm.ctx, id.String()) assert.Regexp(t, "FF10109", err) } @@ -64,23 +64,23 @@ func TestGetOrganizationByNameOrIDError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, fmt.Errorf("pop")) - _, err := nm.GetOrganizationByNameOrID(nm.ctx, "ns", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, fmt.Errorf("pop")) + _, err := nm.GetOrganizationByNameOrID(nm.ctx, id.String()) assert.Regexp(t, "pop", err) } func TestGetOrganizationByNameBadName(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - _, err := nm.GetOrganizationByNameOrID(nm.ctx, "ns", "!bad") + _, err := nm.GetOrganizationByNameOrID(nm.ctx, "!bad") assert.Regexp(t, "FF00140", err) } func TestGetOrganizationByNameError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetIdentityByName", nm.ctx, core.IdentityTypeOrg, "ns", "bad").Return(nil, fmt.Errorf("pop")) - _, err := nm.GetOrganizationByNameOrID(nm.ctx, "ns", "bad") + nm.database.(*databasemocks.Plugin).On("GetIdentityByName", nm.ctx, core.IdentityTypeOrg, "ns1", "bad").Return(nil, fmt.Errorf("pop")) + _, err := nm.GetOrganizationByNameOrID(nm.ctx, "bad") assert.Regexp(t, "pop", err) } @@ -88,9 +88,9 @@ func TestGetNodeByNameOrIDOk(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeNode}}, nil) - res, err := nm.GetNodeByNameOrID(nm.ctx, "ns", id.String()) + res, err := nm.GetNodeByNameOrID(nm.ctx, id.String()) assert.NoError(t, err) assert.Equal(t, *id, *res.ID) } @@ -99,9 +99,9 @@ func TestGetNodeByNameOrIDWrongType(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg}}, nil) - res, err := nm.GetNodeByNameOrID(nm.ctx, "ns", id.String()) + res, err := nm.GetNodeByNameOrID(nm.ctx, id.String()) assert.NoError(t, err) assert.Nil(t, res) } @@ -110,8 +110,8 @@ func TestGetNodeByNameOrIDNotFound(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, nil) - _, err := nm.GetNodeByNameOrID(nm.ctx, "ns", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, nil) + _, err := nm.GetNodeByNameOrID(nm.ctx, id.String()) assert.Regexp(t, "FF10109", err) } @@ -119,31 +119,31 @@ func TestGetNodeByNameOrIDError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, fmt.Errorf("pop")) - _, err := nm.GetNodeByNameOrID(nm.ctx, "ns", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, fmt.Errorf("pop")) + _, err := nm.GetNodeByNameOrID(nm.ctx, id.String()) assert.Regexp(t, "pop", err) } func TestGetNodeByNameBadName(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - _, err := nm.GetNodeByNameOrID(nm.ctx, "ns", "!bad") + _, err := nm.GetNodeByNameOrID(nm.ctx, "!bad") assert.Regexp(t, "FF00140", err) } func TestGetNodeByNameError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetIdentityByName", nm.ctx, core.IdentityTypeNode, "ns", "bad").Return(nil, fmt.Errorf("pop")) - _, err := nm.GetNodeByNameOrID(nm.ctx, "ns", "bad") + nm.database.(*databasemocks.Plugin).On("GetIdentityByName", nm.ctx, core.IdentityTypeNode, "ns1", "bad").Return(nil, fmt.Errorf("pop")) + _, err := nm.GetNodeByNameOrID(nm.ctx, "bad") assert.Regexp(t, "pop", err) } func TestGetOrganizations(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil) - res, _, err := nm.GetOrganizations(nm.ctx, "ns", database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil) + res, _, err := nm.GetOrganizations(nm.ctx, database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.NoError(t, err) assert.Empty(t, res) } @@ -151,8 +151,8 @@ func TestGetOrganizations(t *testing.T) { func TestGetNodes(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil) - res, _, err := nm.GetNodes(nm.ctx, "ns", database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil) + res, _, err := nm.GetNodes(nm.ctx, database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.NoError(t, err) assert.Empty(t, res) } @@ -161,9 +161,9 @@ func TestGetIdentityByIDOk(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg, Namespace: "ns1"}}, nil) - res, err := nm.GetIdentityByID(nm.ctx, "ns1", id.String()) + res, err := nm.GetIdentityByID(nm.ctx, id.String()) assert.NoError(t, err) assert.Equal(t, *id, *res.ID) } @@ -172,8 +172,8 @@ func TestGetIdentityByIDNotFound(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, nil) - _, err := nm.GetIdentityByID(nm.ctx, "ns1", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, nil) + _, err := nm.GetIdentityByID(nm.ctx, id.String()) assert.Regexp(t, "FF10109", err) } @@ -181,8 +181,8 @@ func TestGetIdentityByIDError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, fmt.Errorf("pop")) - _, err := nm.GetIdentityByID(nm.ctx, "ns1", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, fmt.Errorf("pop")) + _, err := nm.GetIdentityByID(nm.ctx, id.String()) assert.Regexp(t, "pop", err) } @@ -190,25 +190,15 @@ func TestGetIdentityByIDWithVerifiersError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, fmt.Errorf("pop")) - _, err := nm.GetIdentityByIDWithVerifiers(nm.ctx, "ns1", id.String()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, fmt.Errorf("pop")) + _, err := nm.GetIdentityByIDWithVerifiers(nm.ctx, id.String()) assert.Regexp(t, "pop", err) } -func TestGetIdentityByIDBadNS(t *testing.T) { - nm, cancel := newTestNetworkmap(t) - defer cancel() - id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). - Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg, Namespace: "ns1"}}, nil) - _, err := nm.GetIdentityByID(nm.ctx, "ns2", id.String()) - assert.Regexp(t, "FF10109", err) -} - func TestGetIdentityByIDBadUUID(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - _, err := nm.GetIdentityByID(nm.ctx, "ns1", "bad") + _, err := nm.GetIdentityByID(nm.ctx, "bad") assert.Regexp(t, "FF00138", err) } @@ -216,15 +206,15 @@ func TestGetIdentityByIDWithVerifiers(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg, Namespace: "ns1"}}, nil) - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{ + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", }, Identity: id}, }, nil, nil) - identity, err := nm.GetIdentityByIDWithVerifiers(nm.ctx, "ns1", id.String()) + identity, err := nm.GetIdentityByIDWithVerifiers(nm.ctx, id.String()) assert.NoError(t, err) assert.Equal(t, "0x12345", identity.Verifiers[0].Value) } @@ -233,18 +223,18 @@ func TestGetIdentityByIDWithVerifiersFail(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg, Namespace: "ns1"}}, nil) - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) - _, err := nm.GetIdentityByIDWithVerifiers(nm.ctx, "ns1", id.String()) + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + _, err := nm.GetIdentityByIDWithVerifiers(nm.ctx, id.String()) assert.Regexp(t, "pop", err) } func TestGetIdentities(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil) - res, _, err := nm.GetIdentities(nm.ctx, "ns1", database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil) + res, _, err := nm.GetIdentities(nm.ctx, database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.NoError(t, err) assert.Empty(t, res) } @@ -253,10 +243,10 @@ func TestGetIdentityVerifiers(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id). + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id). Return(&core.Identity{IdentityBase: core.IdentityBase{ID: id, Type: core.IdentityTypeOrg, Namespace: "ns1"}}, nil) - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{}, nil, nil) - res, _, err := nm.GetIdentityVerifiers(nm.ctx, "ns1", id.String(), database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return([]*core.Verifier{}, nil, nil) + res, _, err := nm.GetIdentityVerifiers(nm.ctx, id.String(), database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.NoError(t, err) assert.Empty(t, res) } @@ -265,8 +255,8 @@ func TestGetIdentityVerifiersIdentityFail(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, id).Return(nil, fmt.Errorf("pop")) - res, _, err := nm.GetIdentityVerifiers(nm.ctx, "ns1", id.String(), database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetIdentityByID", nm.ctx, "ns1", id).Return(nil, fmt.Errorf("pop")) + res, _, err := nm.GetIdentityVerifiers(nm.ctx, id.String(), database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.Regexp(t, "pop", err) assert.Empty(t, res) } @@ -274,8 +264,8 @@ func TestGetIdentityVerifiersIdentityFail(t *testing.T) { func TestGetVerifiers(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{}, nil, nil) - res, _, err := nm.GetVerifiers(nm.ctx, "ns1", database.VerifierQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return([]*core.Verifier{}, nil, nil) + res, _, err := nm.GetVerifiers(nm.ctx, database.VerifierQueryFactory.NewFilter(nm.ctx).And()) assert.NoError(t, err) assert.Empty(t, res) } @@ -284,9 +274,9 @@ func TestGetVerifierByHashOk(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() hash := fftypes.NewRandB32() - nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, hash). + nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, "ns1", hash). Return(&core.Verifier{Hash: hash, Namespace: "ns1"}, nil) - res, err := nm.GetVerifierByHash(nm.ctx, "ns1", hash.String()) + res, err := nm.GetVerifierByHash(nm.ctx, hash.String()) assert.NoError(t, err) assert.Equal(t, *hash, *res.Hash) } @@ -295,8 +285,8 @@ func TestGetVerifierByHashNotFound(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() hash := fftypes.NewRandB32() - nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, hash).Return(nil, nil) - _, err := nm.GetVerifierByHash(nm.ctx, "ns1", hash.String()) + nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, "ns1", hash).Return(nil, nil) + _, err := nm.GetVerifierByHash(nm.ctx, hash.String()) assert.Regexp(t, "FF10109", err) } @@ -304,25 +294,15 @@ func TestGetVerifierByHashError(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() hash := fftypes.NewRandB32() - nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, hash).Return(nil, fmt.Errorf("pop")) - _, err := nm.GetVerifierByHash(nm.ctx, "ns1", hash.String()) + nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, "ns1", hash).Return(nil, fmt.Errorf("pop")) + _, err := nm.GetVerifierByHash(nm.ctx, hash.String()) assert.Regexp(t, "pop", err) } -func TestGetVerifierByHashBadNS(t *testing.T) { - nm, cancel := newTestNetworkmap(t) - defer cancel() - hash := fftypes.NewRandB32() - nm.database.(*databasemocks.Plugin).On("GetVerifierByHash", nm.ctx, hash). - Return(&core.Verifier{Hash: hash, Namespace: "ns1"}, nil) - _, err := nm.GetVerifierByHash(nm.ctx, "ns2", hash.String()) - assert.Regexp(t, "FF10109", err) -} - func TestGetVerifierByHashBadUUID(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - _, err := nm.GetVerifierByHash(nm.ctx, "ns1", "bad") + _, err := nm.GetVerifierByHash(nm.ctx, "bad") assert.Regexp(t, "FF00107", err) } @@ -331,7 +311,7 @@ func TestGetVerifierByDIDOk(t *testing.T) { defer cancel() nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(testOrg("abc"), true, nil) - id, err := nm.GetIdentityByDID(nm.ctx, "ns", "did:firefly:org/abc") + id, err := nm.GetIdentityByDID(nm.ctx, "did:firefly:org/abc") assert.NoError(t, err) assert.Equal(t, "did:firefly:org/abc", id.DID) } @@ -341,13 +321,13 @@ func TestGetVerifierByDIDWithVerifiersOk(t *testing.T) { defer cancel() nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(testOrg("abc"), true, nil) - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{ + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", }}, }, nil, nil) - id, err := nm.GetIdentityByDIDWithVerifiers(nm.ctx, "ns", "did:firefly:org/abc") + id, err := nm.GetIdentityByDIDWithVerifiers(nm.ctx, "did:firefly:org/abc") assert.NoError(t, err) assert.Equal(t, "did:firefly:org/abc", id.DID) assert.Equal(t, "0x12345", id.Verifiers[0].Value) @@ -358,7 +338,7 @@ func TestGetVerifierByDIDWithVerifiersError(t *testing.T) { defer cancel() nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(nil, true, fmt.Errorf("pop")) - _, err := nm.GetIdentityByDIDWithVerifiers(nm.ctx, "ns", "did:firefly:org/abc") + _, err := nm.GetIdentityByDIDWithVerifiers(nm.ctx, "did:firefly:org/abc") assert.Regexp(t, "pop", err) } @@ -367,7 +347,7 @@ func TestGetVerifierByDIDNotErr(t *testing.T) { defer cancel() nm.identity.(*identitymanagermocks.Manager).On("CachedIdentityLookupMustExist", nm.ctx, "did:firefly:org/abc"). Return(nil, true, fmt.Errorf("pop")) - id, err := nm.GetIdentityByDID(nm.ctx, "ns", "did:firefly:org/abc") + id, err := nm.GetIdentityByDID(nm.ctx, "did:firefly:org/abc") assert.Regexp(t, "pop", err) assert.Nil(t, id) } @@ -376,18 +356,18 @@ func TestGetOrganizationsWithVerifiers(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id1 := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, mock.Anything).Return([]*core.Identity{ + nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, "ns1", mock.Anything).Return([]*core.Identity{ {IdentityBase: core.IdentityBase{ ID: id1, }}, }, nil, nil) - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{ + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), Identity: id1, VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", }}, }, nil, nil) - res, _, err := nm.GetOrganizationsWithVerifiers(nm.ctx, "ns", database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + res, _, err := nm.GetOrganizationsWithVerifiers(nm.ctx, database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.NoError(t, err) assert.Len(t, res, 1) assert.Equal(t, "0x12345", res[0].Verifiers[0].Value) @@ -396,8 +376,8 @@ func TestGetOrganizationsWithVerifiers(t *testing.T) { func TestGetOrganizationsWithVerifiersFailLookup(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() - nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) - _, _, err := nm.GetOrganizationsWithVerifiers(nm.ctx, "ns", database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + _, _, err := nm.GetOrganizationsWithVerifiers(nm.ctx, database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.Regexp(t, "pop", err) } @@ -405,12 +385,12 @@ func TestGetIdentitiesWithVerifiersFailEnrich(t *testing.T) { nm, cancel := newTestNetworkmap(t) defer cancel() id1 := fftypes.NewUUID() - nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, mock.Anything).Return([]*core.Identity{ + nm.database.(*databasemocks.Plugin).On("GetIdentities", nm.ctx, "ns1", mock.Anything).Return([]*core.Identity{ {IdentityBase: core.IdentityBase{ ID: id1, }}, }, nil, nil) - nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) - _, _, err := nm.GetOrganizationsWithVerifiers(nm.ctx, "ns", database.IdentityQueryFactory.NewFilter(nm.ctx).And()) + nm.database.(*databasemocks.Plugin).On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + _, _, err := nm.GetOrganizationsWithVerifiers(nm.ctx, database.IdentityQueryFactory.NewFilter(nm.ctx).And()) assert.Regexp(t, "pop", err) } diff --git a/internal/networkmap/did.go b/internal/networkmap/did.go index adc25a9963..6d3f5a3501 100644 --- a/internal/networkmap/did.go +++ b/internal/networkmap/did.go @@ -50,7 +50,7 @@ func (nm *networkMap) generateDIDDocument(ctx context.Context, identity *core.Id fb.Eq("identity", identity.ID), fb.Eq("namespace", identity.Namespace), ) - verifiers, _, err := nm.database.GetVerifiers(ctx, filter) + verifiers, _, err := nm.database.GetVerifiers(ctx, nm.namespace, filter) if err != nil { return nil, err } diff --git a/internal/networkmap/did_test.go b/internal/networkmap/did_test.go index 2922eee60e..ad02423265 100644 --- a/internal/networkmap/did_test.go +++ b/internal/networkmap/did_test.go @@ -72,15 +72,15 @@ func TestDIDGenerationOK(t *testing.T) { }).Seal() mdi := nm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", nm.ctx, mock.Anything).Return(org1, nil) - mdi.On("GetVerifiers", nm.ctx, mock.Anything).Return([]*core.Verifier{ + mdi.On("GetIdentityByID", nm.ctx, "ns1", mock.Anything).Return(org1, nil) + mdi.On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return([]*core.Verifier{ verifierEth, verifierMSP, verifierDX, verifierUnknown, }, nil, nil) - doc, err := nm.GetDIDDocForIndentityByID(nm.ctx, org1.Namespace, org1.ID.String()) + doc, err := nm.GetDIDDocForIndentityByID(nm.ctx, org1.ID.String()) assert.NoError(t, err) assert.Equal(t, &DIDDocument{ Context: []string{ @@ -125,10 +125,10 @@ func TestDIDGenerationGetVerifiersFail(t *testing.T) { org1 := testOrg("org1") mdi := nm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", nm.ctx, mock.Anything).Return(org1, nil) - mdi.On("GetVerifiers", nm.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", nm.ctx, "ns1", mock.Anything).Return(org1, nil) + mdi.On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) - _, err := nm.GetDIDDocForIndentityByID(nm.ctx, org1.Namespace, org1.ID.String()) + _, err := nm.GetDIDDocForIndentityByID(nm.ctx, org1.ID.String()) assert.Regexp(t, "pop", err) } @@ -139,9 +139,9 @@ func TestDIDGenerationGetIdentityFail(t *testing.T) { org1 := testOrg("org1") mdi := nm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", nm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", nm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) - _, err := nm.GetDIDDocForIndentityByID(nm.ctx, org1.Namespace, org1.ID.String()) + _, err := nm.GetDIDDocForIndentityByID(nm.ctx, org1.ID.String()) assert.Regexp(t, "pop", err) } @@ -154,7 +154,7 @@ func TestDIDGenerationGetIdentityByDIDFail(t *testing.T) { mii := nm.identity.(*identitymanagermocks.Manager) mii.On("CachedIdentityLookupMustExist", nm.ctx, mock.Anything).Return(nil, false, fmt.Errorf("pop")) - _, err := nm.GetDIDDocForIndentityByDID(nm.ctx, "ns", org1.DID) + _, err := nm.GetDIDDocForIndentityByDID(nm.ctx, org1.DID) assert.Regexp(t, "pop", err) } @@ -171,8 +171,8 @@ func TestDIDGenerationGetIdentityByDIDFailVerifiers(t *testing.T) { }, }, false, nil) mdi := nm.database.(*databasemocks.Plugin) - mdi.On("GetVerifiers", nm.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + mdi.On("GetVerifiers", nm.ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) - _, err := nm.GetDIDDocForIndentityByDID(nm.ctx, "ns", org1.DID) + _, err := nm.GetDIDDocForIndentityByDID(nm.ctx, org1.DID) assert.Regexp(t, "pop", err) } diff --git a/internal/networkmap/manager.go b/internal/networkmap/manager.go index 196feab0b3..7156043a87 100644 --- a/internal/networkmap/manager.go +++ b/internal/networkmap/manager.go @@ -37,22 +37,22 @@ type Manager interface { RegisterIdentity(ctx context.Context, dto *core.IdentityCreateDTO, waitConfirm bool) (identity *core.Identity, err error) UpdateIdentity(ctx context.Context, id string, dto *core.IdentityUpdateDTO, waitConfirm bool) (identity *core.Identity, err error) - GetOrganizationByNameOrID(ctx context.Context, ns, nameOrID string) (*core.Identity, error) - GetOrganizations(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) - GetOrganizationsWithVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) - GetNodeByNameOrID(ctx context.Context, ns, nameOrID string) (*core.Identity, error) - GetNodes(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) - GetIdentityByID(ctx context.Context, ns string, id string) (*core.Identity, error) - GetIdentityByIDWithVerifiers(ctx context.Context, ns, id string) (*core.IdentityWithVerifiers, error) - GetIdentityByDID(ctx context.Context, ns, did string) (*core.Identity, error) - GetIdentityByDIDWithVerifiers(ctx context.Context, ns, did string) (*core.IdentityWithVerifiers, error) - GetIdentities(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) - GetIdentitiesWithVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) - GetIdentityVerifiers(ctx context.Context, ns, id string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) - GetVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) - GetVerifierByHash(ctx context.Context, ns, hash string) (*core.Verifier, error) - GetDIDDocForIndentityByID(ctx context.Context, ns, id string) (*DIDDocument, error) - GetDIDDocForIndentityByDID(ctx context.Context, ns, did string) (*DIDDocument, error) + GetOrganizationByNameOrID(ctx context.Context, nameOrID string) (*core.Identity, error) + GetOrganizations(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) + GetOrganizationsWithVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) + GetNodeByNameOrID(ctx context.Context, nameOrID string) (*core.Identity, error) + GetNodes(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) + GetIdentityByID(ctx context.Context, id string) (*core.Identity, error) + GetIdentityByIDWithVerifiers(ctx context.Context, id string) (*core.IdentityWithVerifiers, error) + GetIdentityByDID(ctx context.Context, did string) (*core.Identity, error) + GetIdentityByDIDWithVerifiers(ctx context.Context, did string) (*core.IdentityWithVerifiers, error) + GetIdentities(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) + GetIdentitiesWithVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) + GetIdentityVerifiers(ctx context.Context, id string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) + GetVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) + GetVerifierByHash(ctx context.Context, hash string) (*core.Verifier, error) + GetDIDDocForIndentityByID(ctx context.Context, id string) (*DIDDocument, error) + GetDIDDocForIndentityByDID(ctx context.Context, did string) (*DIDDocument, error) } type networkMap struct { diff --git a/internal/operations/manager_test.go b/internal/operations/manager_test.go index 70da40e9a9..b59e9fd791 100644 --- a/internal/operations/manager_test.go +++ b/internal/operations/manager_test.go @@ -67,7 +67,7 @@ func newTestOperations(t *testing.T) (*operationsManager, func()) { Concurrency: true, }) mdm := &datamocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) rag := mdi.On("RunAsGroup", mock.Anything, mock.Anything).Maybe() rag.RunFn = func(a mock.Arguments) { diff --git a/internal/operations/operation_updater_test.go b/internal/operations/operation_updater_test.go index ef51220e09..315dad96d6 100644 --- a/internal/operations/operation_updater_test.go +++ b/internal/operations/operation_updater_test.go @@ -62,7 +62,7 @@ func newTestOperationUpdaterCommon(t *testing.T, dbCapabilities *database.Capabi mdi := &databasemocks.Plugin{} mdi.On("Capabilities").Return(dbCapabilities) mdm := &datamocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) return newOperationUpdater(context.Background(), mom, mdi, txHelper) } diff --git a/internal/orchestrator/orchestrator.go b/internal/orchestrator/orchestrator.go index 7a52bb1e7a..d19ea90fd9 100644 --- a/internal/orchestrator/orchestrator.go +++ b/internal/orchestrator/orchestrator.go @@ -358,7 +358,7 @@ func (or *orchestrator) initPlugins(ctx context.Context) (err error) { or.plugins.Blockchain.Plugin.RegisterListener(&or.bc) fb := database.IdentityQueryFactory.NewFilter(ctx) - nodes, _, err := or.database().GetIdentities(ctx, fb.And( + nodes, _, err := or.database().GetIdentities(ctx, or.namespace, fb.And( fb.Eq("type", core.IdentityTypeNode), )) if err != nil { @@ -390,7 +390,7 @@ func (or *orchestrator) initComponents(ctx context.Context) (err error) { } if or.txHelper == nil { - or.txHelper = txcommon.NewTransactionHelper(or.database(), or.data) + or.txHelper = txcommon.NewTransactionHelper(or.namespace, or.database(), or.data) } if or.identity == nil { @@ -413,7 +413,7 @@ func (or *orchestrator) initComponents(ctx context.Context) (err error) { } } - or.syncasync = syncasync.NewSyncAsyncBridge(ctx, or.database(), or.data) + or.syncasync = syncasync.NewSyncAsyncBridge(ctx, or.namespace, or.database(), or.data) if or.batchpin == nil { if or.batchpin, err = batchpin.NewBatchPinSubmitter(ctx, or.database(), or.identity, or.blockchain(), or.metrics, or.operations); err != nil { @@ -422,7 +422,7 @@ func (or *orchestrator) initComponents(ctx context.Context) (err error) { } if or.messaging == nil { - if or.messaging, err = privatemessaging.NewPrivateMessaging(ctx, or.database(), or.identity, or.dataexchange(), or.blockchain(), or.batch, or.data, or.syncasync, or.batchpin, or.metrics, or.operations); err != nil { + if or.messaging, err = privatemessaging.NewPrivateMessaging(ctx, or.namespace, or.database(), or.identity, or.dataexchange(), or.blockchain(), or.batch, or.data, or.syncasync, or.batchpin, or.metrics, or.operations); err != nil { return err } } @@ -448,7 +448,7 @@ func (or *orchestrator) initComponents(ctx context.Context) (err error) { } if or.definitions == nil { - or.definitions, err = definitions.NewDefinitionHandler(ctx, or.database(), or.blockchain(), or.dataexchange(), or.data, or.identity, or.assets, or.contracts) + or.definitions, err = definitions.NewDefinitionHandler(ctx, or.namespace, or.database(), or.blockchain(), or.dataexchange(), or.data, or.identity, or.assets, or.contracts) if err != nil { return err } diff --git a/internal/orchestrator/orchestrator_test.go b/internal/orchestrator/orchestrator_test.go index 40c5362077..1059aaaed5 100644 --- a/internal/orchestrator/orchestrator_test.go +++ b/internal/orchestrator/orchestrator_test.go @@ -187,7 +187,7 @@ func TestInitOK(t *testing.T) { defer or.cleanup(t) or.mdi.On("RegisterListener", mock.Anything).Return() or.mbi.On("RegisterListener", mock.Anything).Return() - or.mdi.On("GetIdentities", mock.Anything, mock.Anything).Return([]*core.Identity{{}}, nil, nil) + or.mdi.On("GetIdentities", mock.Anything, "ns", mock.Anything).Return([]*core.Identity{{}}, nil, nil) or.mdx.On("RegisterListener", mock.Anything).Return() or.mdx.On("SetNodes", mock.Anything).Return() or.mps.On("RegisterListener", mock.Anything).Return() @@ -211,7 +211,7 @@ func TestInitDataexchangeNodesFail(t *testing.T) { defer or.cleanup(t) or.mdi.On("RegisterListener", mock.Anything).Return() or.mbi.On("RegisterListener", mock.Anything).Return() - or.mdi.On("GetIdentities", mock.Anything, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + or.mdi.On("GetIdentities", mock.Anything, "ns", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) ctx := context.Background() err := or.initPlugins(ctx) assert.EqualError(t, err, "pop") diff --git a/internal/orchestrator/status.go b/internal/orchestrator/status.go index 402c259b43..a556666f98 100644 --- a/internal/orchestrator/status.go +++ b/internal/orchestrator/status.go @@ -112,10 +112,8 @@ func (or *orchestrator) GetStatus(ctx context.Context) (status *core.NodeStatus, status.Org.ID = org.ID status.Org.DID = org.DID - // It's possible namespace will fallback to SystemNamespace (if configured to do so) - ns := org.Namespace - - verifiers, _, err := or.networkmap.GetIdentityVerifiers(ctx, ns, org.ID.String(), database.VerifierQueryFactory.NewFilter(ctx).And()) + fb := database.VerifierQueryFactory.NewFilter(ctx) + verifiers, _, err := or.database().GetVerifiers(ctx, org.Namespace, fb.And(fb.Eq("identity", org.ID))) if err != nil { return nil, err } diff --git a/internal/orchestrator/status_test.go b/internal/orchestrator/status_test.go index 327f9ffbf2..c7ebc80b45 100644 --- a/internal/orchestrator/status_test.go +++ b/internal/orchestrator/status_test.go @@ -25,7 +25,6 @@ import ( "github.com/hyperledger/firefly/internal/coreconfig" "github.com/hyperledger/firefly/mocks/eventmocks" "github.com/hyperledger/firefly/mocks/identitymanagermocks" - "github.com/hyperledger/firefly/mocks/networkmapmocks" "github.com/hyperledger/firefly/pkg/core" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -104,8 +103,7 @@ func TestGetStatusRegistered(t *testing.T) { Parent: orgID, }, }, false, nil) - mnm := or.networkmap.(*networkmapmocks.Manager) - mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return([]*core.Verifier{ + or.mdi.On("GetVerifiers", or.ctx, "ns", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", @@ -171,8 +169,7 @@ func TestGetStatusVerifierLookupFail(t *testing.T) { Parent: fftypes.NewUUID(), }, }, false, nil) - mnm := or.networkmap.(*networkmapmocks.Manager) - mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + or.mdi.On("GetVerifiers", or.ctx, "ns", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) mem := or.events.(*eventmocks.EventManager) mem.On("GetPlugins").Return(mockEventPlugins) @@ -208,8 +205,7 @@ func TestGetStatusWrongNodeOwner(t *testing.T) { Parent: fftypes.NewUUID(), }, }, false, nil) - mnm := or.networkmap.(*networkmapmocks.Manager) - mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return([]*core.Verifier{ + or.mdi.On("GetVerifiers", or.ctx, "ns", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", @@ -286,8 +282,7 @@ func TestGetStatusOrgOnlyRegistered(t *testing.T) { }, }, nil) mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(nil, false, nil) - mnm := or.networkmap.(*networkmapmocks.Manager) - mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return([]*core.Verifier{ + or.mdi.On("GetVerifiers", or.ctx, "ns", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", @@ -342,8 +337,7 @@ func TestGetStatusNodeError(t *testing.T) { }, }, nil) mim.On("CachedIdentityLookupNilOK", or.ctx, "did:firefly:node/node1").Return(nil, false, fmt.Errorf("pop")) - mnm := or.networkmap.(*networkmapmocks.Manager) - mnm.On("GetIdentityVerifiers", or.ctx, "ns", orgID.String(), mock.Anything).Return([]*core.Verifier{ + or.mdi.On("GetVerifiers", or.ctx, "ns", mock.Anything).Return([]*core.Verifier{ {Hash: fftypes.NewRandB32(), VerifierRef: core.VerifierRef{ Type: core.VerifierTypeEthAddress, Value: "0x12345", diff --git a/internal/privatemessaging/groupmanager.go b/internal/privatemessaging/groupmanager.go index db8b248f47..c94f107507 100644 --- a/internal/privatemessaging/groupmanager.go +++ b/internal/privatemessaging/groupmanager.go @@ -26,6 +26,7 @@ import ( "github.com/hyperledger/firefly-common/pkg/log" "github.com/hyperledger/firefly/internal/coremsgs" "github.com/hyperledger/firefly/internal/data" + "github.com/hyperledger/firefly/internal/identity" "github.com/hyperledger/firefly/pkg/core" "github.com/hyperledger/firefly/pkg/database" "github.com/karlseguin/ccache" @@ -33,13 +34,15 @@ import ( type GroupManager interface { GetGroupByID(ctx context.Context, id string) (*core.Group, error) - GetGroupsNS(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Group, *database.FilterResult, error) + GetGroups(ctx context.Context, filter database.AndFilter) ([]*core.Group, *database.FilterResult, error) ResolveInitGroup(ctx context.Context, msg *core.Message) (*core.Group, error) EnsureLocalGroup(ctx context.Context, group *core.Group) (ok bool, err error) } type groupManager struct { + namespace string database database.Plugin + identity identity.Manager data data.Manager groupCacheTTL time.Duration groupCache *ccache.Cache @@ -60,7 +63,7 @@ func (gm *groupManager) EnsureLocalGroup(ctx context.Context, group *core.Group) // the group via the blockchain. // So this method checks if a group exists, and if it doesn't inserts it. // We do assume the other side has sent the batch init of the group (rather than generating a second one) - if g, err := gm.database.GetGroupByHash(ctx, group.Hash); err != nil { + if g, err := gm.database.GetGroupByHash(ctx, gm.namespace, group.Hash); err != nil { return false, err } else if g != nil { // The group already exists @@ -148,15 +151,11 @@ func (gm *groupManager) GetGroupByID(ctx context.Context, hash string) (*core.Gr if err != nil { return nil, err } - return gm.database.GetGroupByHash(ctx, h) -} - -func (gm *groupManager) GetGroupsNS(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Group, *database.FilterResult, error) { - return gm.GetGroups(ctx, filter.Condition(filter.Builder().Eq("namespace", ns))) + return gm.database.GetGroupByHash(ctx, gm.namespace, h) } func (gm *groupManager) GetGroups(ctx context.Context, filter database.AndFilter) ([]*core.Group, *database.FilterResult, error) { - return gm.database.GetGroups(ctx, filter) + return gm.database.GetGroups(ctx, gm.namespace, filter) } func (gm *groupManager) getGroupNodes(ctx context.Context, groupHash *fftypes.Bytes32, allowNil bool) (*core.Group, []*core.Identity, error) { @@ -167,7 +166,7 @@ func (gm *groupManager) getGroupNodes(ctx context.Context, groupHash *fftypes.By return ghe.group, ghe.nodes, nil } - group, err := gm.database.GetGroupByHash(ctx, groupHash) + group, err := gm.database.GetGroupByHash(ctx, gm.namespace, groupHash) if err != nil || (allowNil && group == nil) { return nil, nil, err } @@ -180,7 +179,7 @@ func (gm *groupManager) getGroupNodes(ctx context.Context, groupHash *fftypes.By nodes := make([]*core.Identity, 0, len(group.Members)) knownIDs := make(map[fftypes.UUID]bool) for _, r := range group.Members { - node, err := gm.database.GetIdentityByID(ctx, r.Node) + node, err := gm.identity.CachedIdentityLookupByID(ctx, r.Node) if err != nil { return nil, nil, err } @@ -237,7 +236,7 @@ func (gm *groupManager) ResolveInitGroup(ctx context.Context, msg *core.Message) } // Get the existing group - group, err := gm.database.GetGroupByHash(ctx, msg.Header.Group) + group, err := gm.database.GetGroupByHash(ctx, gm.namespace, msg.Header.Group) if err != nil { return group, err } diff --git a/internal/privatemessaging/groupmanager_test.go b/internal/privatemessaging/groupmanager_test.go index b38871749d..cd26248c26 100644 --- a/internal/privatemessaging/groupmanager_test.go +++ b/internal/privatemessaging/groupmanager_test.go @@ -24,6 +24,7 @@ import ( "github.com/hyperledger/firefly-common/pkg/fftypes" "github.com/hyperledger/firefly/mocks/databasemocks" "github.com/hyperledger/firefly/mocks/datamocks" + "github.com/hyperledger/firefly/mocks/identitymanagermocks" "github.com/hyperledger/firefly/pkg/core" "github.com/hyperledger/firefly/pkg/database" "github.com/stretchr/testify/assert" @@ -280,7 +281,7 @@ func TestResolveInitGroupExistingOK(t *testing.T) { mdi := pm.database.(*databasemocks.Plugin) mdi.On("UpsertGroup", pm.ctx, mock.Anything, database.UpsertOptimizationNew).Return(nil) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(&core.Group{}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(&core.Group{}, nil) _, err := pm.ResolveInitGroup(pm.ctx, &core.Message{ Header: core.MessageHeader{ @@ -302,7 +303,7 @@ func TestResolveInitGroupExistingFail(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) _, err := pm.ResolveInitGroup(pm.ctx, &core.Message{ Header: core.MessageHeader{ @@ -324,7 +325,7 @@ func TestResolveInitGroupExistingNotFound(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, nil) group, err := pm.ResolveInitGroup(pm.ctx, &core.Message{ Header: core.MessageHeader{ @@ -348,7 +349,7 @@ func TestGetGroupByIDOk(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(&core.Group{Hash: groupID}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(&core.Group{Hash: groupID}, nil) group, err := pm.GetGroupByID(pm.ctx, groupID.String()) assert.NoError(t, err) @@ -367,7 +368,7 @@ func TestGetGroupsOk(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroups", pm.ctx, mock.Anything).Return([]*core.Group{}, nil, nil) + mdi.On("GetGroups", pm.ctx, "ns1", mock.Anything).Return([]*core.Group{}, nil, nil) fb := database.GroupQueryFactory.NewFilter(pm.ctx) groups, _, err := pm.GetGroups(pm.ctx, fb.And(fb.Eq("description", "mygroup"))) @@ -380,16 +381,10 @@ func TestGetGroupsNSOk(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroups", pm.ctx, mock.MatchedBy(func(filter database.AndFilter) bool { - f, err := filter.Finalize() - assert.NoError(t, err) - assert.Contains(t, f.String(), "namespace") - assert.Contains(t, f.String(), "ns1") - return true - })).Return([]*core.Group{}, nil, nil) + mdi.On("GetGroups", pm.ctx, "ns1", mock.Anything).Return([]*core.Group{}, nil, nil) fb := database.GroupQueryFactory.NewFilter(pm.ctx) - groups, _, err := pm.GetGroupsNS(pm.ctx, "ns1", fb.And(fb.Eq("description", "mygroup"))) + groups, _, err := pm.GetGroups(pm.ctx, fb.And(fb.Eq("description", "mygroup"))) assert.NoError(t, err) assert.Empty(t, groups) } @@ -409,8 +404,9 @@ func TestGetGroupNodesCache(t *testing.T) { group.Seal() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(group, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, mock.Anything).Return(&core.Identity{ + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(group, nil).Once() + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", pm.ctx, mock.Anything).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: node1, Type: core.IdentityTypeNode, @@ -435,7 +431,7 @@ func TestGetGroupNodesGetGroupFail(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) _, _, err := pm.getGroupNodes(pm.ctx, groupID, false) assert.EqualError(t, err, "pop") @@ -447,7 +443,7 @@ func TestGetGroupNodesGetGroupNotFound(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, nil) _, _, err := pm.getGroupNodes(pm.ctx, groupID, false) assert.Regexp(t, "FF10226", err) @@ -468,8 +464,9 @@ func TestGetGroupNodesNodeLookupFail(t *testing.T) { group.Seal() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(group, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node1).Return(nil, fmt.Errorf("pop")).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(group, nil).Once() + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")).Once() _, _, err := pm.getGroupNodes(pm.ctx, group.Hash, false) assert.EqualError(t, err, "pop") @@ -489,8 +486,9 @@ func TestGetGroupNodesNodeLookupNotFound(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(group, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node1).Return(nil, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(group, nil).Once() + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", pm.ctx, mock.Anything).Return(nil, nil).Once() _, _, err := pm.getGroupNodes(pm.ctx, group.Hash, false) assert.Regexp(t, "FF10224", err) @@ -512,7 +510,7 @@ func TestEnsureLocalGroupNewOk(t *testing.T) { group.Seal() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, nil) mdi.On("UpsertGroup", pm.ctx, group, database.UpsertOptimizationNew).Return(nil) ok, err := pm.EnsureLocalGroup(pm.ctx, group) @@ -545,7 +543,7 @@ func TestEnsureLocalGroupExistingOk(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(group, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(group, nil) ok, err := pm.EnsureLocalGroup(pm.ctx, group) assert.NoError(t, err) @@ -568,7 +566,7 @@ func TestEnsureLocalGroupLookupErr(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) ok, err := pm.EnsureLocalGroup(pm.ctx, group) assert.EqualError(t, err, "pop") @@ -593,7 +591,7 @@ func TestEnsureLocalGroupInsertErr(t *testing.T) { group.Seal() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, nil) mdi.On("UpsertGroup", pm.ctx, mock.Anything, database.UpsertOptimizationNew).Return(fmt.Errorf("pop")) ok, err := pm.EnsureLocalGroup(pm.ctx, group) @@ -610,7 +608,7 @@ func TestEnsureLocalGroupBadGroup(t *testing.T) { group := &core.Group{} mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, nil) ok, err := pm.EnsureLocalGroup(pm.ctx, group) assert.NoError(t, err) diff --git a/internal/privatemessaging/message_test.go b/internal/privatemessaging/message_test.go index fe10557ad4..b2db263551 100644 --- a/internal/privatemessaging/message_test.go +++ b/internal/privatemessaging/message_test.go @@ -91,9 +91,9 @@ func TestSendConfirmMessageE2EOk(t *testing.T) { mdm.On("WriteNewMessage", pm.ctx, mock.Anything).Return(nil).Once() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil).Once() - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() retMsg := &core.Message{ Header: core.MessageHeader{ @@ -145,7 +145,7 @@ func TestSendUnpinnedMessageE2EOk(t *testing.T) { mdm.On("WriteNewMessage", pm.ctx, mock.Anything).Return(nil).Once() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{Hash: groupID}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{Hash: groupID}, nil) msg, err := pm.SendMessage(pm.ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -241,8 +241,8 @@ func TestResolveAndSendBadInlineData(t *testing.T) { mim.On("CachedIdentityLookupMustExist", pm.ctx, "localorg").Return(localOrg, false, nil) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() mdm := pm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) @@ -297,7 +297,7 @@ func TestSendUnpinnedMessageTooLarge(t *testing.T) { }).Return(nil) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{Hash: groupID}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{Hash: groupID}, nil) _, err := pm.SendMessage(pm.ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -360,8 +360,8 @@ func TestMessagePrepare(t *testing.T) { mim.On("CachedIdentityLookupMustExist", pm.ctx, "localorg").Return(localOrg, false, nil) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() mdm := pm.data.(*datamocks.Manager) mdm.On("VerifyNamespaceExists", pm.ctx, "ns1").Return(nil) @@ -424,7 +424,7 @@ func TestSendUnpinnedMessageGroupLookupFail(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(nil, fmt.Errorf("pop")).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(nil, fmt.Errorf("pop")).Once() err := pm.dispatchUnpinnedBatch(pm.ctx, &batch.DispatchState{ Persisted: core.BatchPersisted{ @@ -469,7 +469,7 @@ func TestSendUnpinnedMessageInsertFail(t *testing.T) { mdm.On("WriteNewMessage", pm.ctx, mock.Anything).Return(fmt.Errorf("pop")).Once() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{Hash: groupID}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{Hash: groupID}, nil) _, err := pm.SendMessage(pm.ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -540,7 +540,7 @@ func TestSendUnpinnedMessageResolveGroupFail(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(nil, fmt.Errorf("pop")).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(nil, fmt.Errorf("pop")).Once() mdx := pm.exchange.(*dataexchangemocks.Plugin) mdx.On("SendMessage", pm.ctx, mock.Anything, "peer2-remote", mock.Anything).Return("tracking1", nil).Once() @@ -583,7 +583,7 @@ func TestSendUnpinnedMessageResolveGroupNotFound(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(nil, nil) mdx := pm.exchange.(*dataexchangemocks.Plugin) mdx.On("SendMessage", pm.ctx, mock.Anything, "peer2-remote", mock.Anything).Return(nil).Once() @@ -665,7 +665,7 @@ func TestRequestReplySuccess(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{Hash: groupID}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{Hash: groupID}, nil) _, err := pm.RequestReply(pm.ctx, "ns1", &core.MessageInOut{ Message: core.Message{ @@ -692,10 +692,6 @@ func TestDispatchedUnpinnedMessageOK(t *testing.T) { node2 := newTestNode("node2", newTestOrg("remoteorg")) mim := pm.identity.(*identitymanagermocks.Manager) - mim.On("ResolveInputSigningIdentity", pm.ctx, mock.MatchedBy(func(identity *core.SignerRef) bool { - assert.Equal(t, "localorg", identity.Author) - return true - })).Return(nil) mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdx := pm.exchange.(*dataexchangemocks.Plugin) @@ -703,7 +699,7 @@ func TestDispatchedUnpinnedMessageOK(t *testing.T) { mdi := pm.database.(*databasemocks.Plugin) mom := pm.operations.(*operationmocks.Manager) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{ Hash: groupID, GroupIdentity: core.GroupIdentity{ Members: core.Members{ @@ -712,8 +708,8 @@ func TestDispatchedUnpinnedMessageOK(t *testing.T) { }, }, }, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node2.ID).Return(node2, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node1.ID).Return(node1, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node2.ID).Return(node2, nil).Once() mom.On("AddOrReuseOperation", pm.ctx, mock.Anything).Return(nil) mom.On("RunOperation", pm.ctx, mock.MatchedBy(func(op *core.PreparedOperation) bool { @@ -745,6 +741,7 @@ func TestDispatchedUnpinnedMessageOK(t *testing.T) { mdi.AssertExpectations(t) mom.AssertExpectations(t) + mim.AssertExpectations(t) } diff --git a/internal/privatemessaging/operations.go b/internal/privatemessaging/operations.go index be789fc17b..d1fb177f2c 100644 --- a/internal/privatemessaging/operations.go +++ b/internal/privatemessaging/operations.go @@ -78,7 +78,7 @@ func (pm *privateMessaging) PrepareOperation(ctx context.Context, op *core.Opera if err != nil { return nil, err } - node, err := pm.database.GetIdentityByID(ctx, nodeID) + node, err := pm.identity.CachedIdentityLookupByID(ctx, nodeID) if err != nil { return nil, err } else if node == nil { @@ -97,13 +97,13 @@ func (pm *privateMessaging) PrepareOperation(ctx context.Context, op *core.Opera if err != nil { return nil, err } - node, err := pm.database.GetIdentityByID(ctx, nodeID) + node, err := pm.identity.CachedIdentityLookupByID(ctx, nodeID) if err != nil { return nil, err } else if node == nil { return nil, i18n.NewError(ctx, coremsgs.Msg404NotFound) } - group, err := pm.database.GetGroupByHash(ctx, groupHash) + group, err := pm.database.GetGroupByHash(ctx, pm.namespace, groupHash) if err != nil { return nil, err } else if group == nil { diff --git a/internal/privatemessaging/operations_test.go b/internal/privatemessaging/operations_test.go index 4598347c2a..75ebac06bc 100644 --- a/internal/privatemessaging/operations_test.go +++ b/internal/privatemessaging/operations_test.go @@ -24,6 +24,7 @@ import ( "github.com/hyperledger/firefly/mocks/databasemocks" "github.com/hyperledger/firefly/mocks/dataexchangemocks" "github.com/hyperledger/firefly/mocks/datamocks" + "github.com/hyperledger/firefly/mocks/identitymanagermocks" "github.com/hyperledger/firefly/pkg/core" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -56,7 +57,8 @@ func TestPrepareAndRunTransferBlob(t *testing.T) { mdi := pm.database.(*databasemocks.Plugin) mdx := pm.exchange.(*dataexchangemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), mock.Anything).Return(node, nil) mdi.On("GetBlobMatchingHash", context.Background(), blob.Hash).Return(blob, nil) mdx.On("TransferBlob", context.Background(), "ns1:"+op.ID.String(), "peer1", "payload").Return(nil) @@ -72,6 +74,7 @@ func TestPrepareAndRunTransferBlob(t *testing.T) { mdi.AssertExpectations(t) mdx.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareAndRunBatchSend(t *testing.T) { @@ -110,8 +113,9 @@ func TestPrepareAndRunBatchSend(t *testing.T) { mdx := pm.exchange.(*dataexchangemocks.Plugin) mdm := pm.data.(*datamocks.Manager) mdm.On("HydrateBatch", context.Background(), bp).Return(batch, nil) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) - mdi.On("GetGroupByHash", context.Background(), group.Hash).Return(group, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) + mdi.On("GetGroupByHash", context.Background(), "ns1", group.Hash).Return(group, nil) mdi.On("GetBatchByID", context.Background(), batch.ID).Return(bp, nil) mdx.On("SendMessage", context.Background(), "ns1:"+op.ID.String(), "peer1", mock.Anything).Return(nil) @@ -129,6 +133,7 @@ func TestPrepareAndRunBatchSend(t *testing.T) { mdi.AssertExpectations(t) mdx.AssertExpectations(t) mdm.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareAndRunBatchSendHydrateFail(t *testing.T) { @@ -166,8 +171,9 @@ func TestPrepareAndRunBatchSendHydrateFail(t *testing.T) { mdi := pm.database.(*databasemocks.Plugin) mdm := pm.data.(*datamocks.Manager) mdm.On("HydrateBatch", context.Background(), bp).Return(nil, fmt.Errorf("pop")) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) - mdi.On("GetGroupByHash", context.Background(), group.Hash).Return(group, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) + mdi.On("GetGroupByHash", context.Background(), "ns1", group.Hash).Return(group, nil) mdi.On("GetBatchByID", context.Background(), batch.ID).Return(bp, nil) _, err := pm.PrepareOperation(context.Background(), op) @@ -175,6 +181,7 @@ func TestPrepareAndRunBatchSendHydrateFail(t *testing.T) { mdi.AssertExpectations(t) mdm.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationNotSupported(t *testing.T) { @@ -214,13 +221,13 @@ func TestPrepareOperationBlobSendNodeFail(t *testing.T) { }, } - mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), nodeID).Return(nil, fmt.Errorf("pop")) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), nodeID).Return(nil, fmt.Errorf("pop")) _, err := pm.PrepareOperation(context.Background(), op) assert.EqualError(t, err, "pop") - mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBlobSendNodeNotFound(t *testing.T) { @@ -237,13 +244,13 @@ func TestPrepareOperationBlobSendNodeNotFound(t *testing.T) { }, } - mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), nodeID).Return(nil, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), nodeID).Return(nil, nil) _, err := pm.PrepareOperation(context.Background(), op) assert.Regexp(t, "FF10109", err) - mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBlobSendBlobFail(t *testing.T) { @@ -270,13 +277,15 @@ func TestPrepareOperationBlobSendBlobFail(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) mdi.On("GetBlobMatchingHash", context.Background(), blobHash).Return(nil, fmt.Errorf("pop")) _, err := pm.PrepareOperation(context.Background(), op) assert.EqualError(t, err, "pop") mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBlobSendBlobNotFound(t *testing.T) { @@ -303,13 +312,15 @@ func TestPrepareOperationBlobSendBlobNotFound(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) mdi.On("GetBlobMatchingHash", context.Background(), blobHash).Return(nil, nil) _, err := pm.PrepareOperation(context.Background(), op) assert.Regexp(t, "FF10109", err) mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBatchSendBadInput(t *testing.T) { @@ -341,13 +352,13 @@ func TestPrepareOperationBatchSendNodeFail(t *testing.T) { }, } - mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), nodeID).Return(nil, fmt.Errorf("pop")) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), nodeID).Return(nil, fmt.Errorf("pop")) _, err := pm.PrepareOperation(context.Background(), op) assert.EqualError(t, err, "pop") - mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBatchSendNodeNotFound(t *testing.T) { @@ -366,13 +377,13 @@ func TestPrepareOperationBatchSendNodeNotFound(t *testing.T) { }, } - mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), nodeID).Return(nil, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), nodeID).Return(nil, nil) _, err := pm.PrepareOperation(context.Background(), op) assert.Regexp(t, "FF10109", err) - mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBatchSendGroupFail(t *testing.T) { @@ -396,13 +407,15 @@ func TestPrepareOperationBatchSendGroupFail(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) - mdi.On("GetGroupByHash", context.Background(), groupHash).Return(nil, fmt.Errorf("pop")) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) + mdi.On("GetGroupByHash", context.Background(), "ns1", groupHash).Return(nil, fmt.Errorf("pop")) _, err := pm.PrepareOperation(context.Background(), op) assert.EqualError(t, err, "pop") mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBatchSendGroupNotFound(t *testing.T) { @@ -426,13 +439,15 @@ func TestPrepareOperationBatchSendGroupNotFound(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) - mdi.On("GetGroupByHash", context.Background(), groupHash).Return(nil, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) + mdi.On("GetGroupByHash", context.Background(), "ns1", groupHash).Return(nil, nil) _, err := pm.PrepareOperation(context.Background(), op) assert.Regexp(t, "FF10109", err) mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBatchSendBatchFail(t *testing.T) { @@ -458,14 +473,16 @@ func TestPrepareOperationBatchSendBatchFail(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) - mdi.On("GetGroupByHash", context.Background(), group.Hash).Return(group, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) + mdi.On("GetGroupByHash", context.Background(), "ns1", group.Hash).Return(group, nil) mdi.On("GetBatchByID", context.Background(), batchID).Return(nil, fmt.Errorf("pop")) _, err := pm.PrepareOperation(context.Background(), op) assert.EqualError(t, err, "pop") mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestPrepareOperationBatchSendBatchNotFound(t *testing.T) { @@ -491,14 +508,16 @@ func TestPrepareOperationBatchSendBatchNotFound(t *testing.T) { } mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", context.Background(), node.ID).Return(node, nil) - mdi.On("GetGroupByHash", context.Background(), group.Hash).Return(group, nil) + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", context.Background(), node.ID).Return(node, nil) + mdi.On("GetGroupByHash", context.Background(), "ns1", group.Hash).Return(group, nil) mdi.On("GetBatchByID", context.Background(), batchID).Return(nil, nil) _, err := pm.PrepareOperation(context.Background(), op) assert.Regexp(t, "FF10109", err) mdi.AssertExpectations(t) + mim.AssertExpectations(t) } func TestRunOperationNotSupported(t *testing.T) { diff --git a/internal/privatemessaging/privatemessaging.go b/internal/privatemessaging/privatemessaging.go index 07c9a7b0a8..3cc8acbaa0 100644 --- a/internal/privatemessaging/privatemessaging.go +++ b/internal/privatemessaging/privatemessaging.go @@ -63,6 +63,7 @@ type privateMessaging struct { groupManager ctx context.Context + namespace string database database.Plugin identity identity.Manager exchange dataexchange.Plugin @@ -86,13 +87,14 @@ type blobTransferTracker struct { op *core.PreparedOperation } -func NewPrivateMessaging(ctx context.Context, di database.Plugin, im identity.Manager, dx dataexchange.Plugin, bi blockchain.Plugin, ba batch.Manager, dm data.Manager, sa syncasync.Bridge, bp batchpin.Submitter, mm metrics.Manager, om operations.Manager) (Manager, error) { +func NewPrivateMessaging(ctx context.Context, ns string, di database.Plugin, im identity.Manager, dx dataexchange.Plugin, bi blockchain.Plugin, ba batch.Manager, dm data.Manager, sa syncasync.Bridge, bp batchpin.Submitter, mm metrics.Manager, om operations.Manager) (Manager, error) { if di == nil || im == nil || dx == nil || bi == nil || ba == nil || dm == nil || mm == nil || om == nil { return nil, i18n.NewError(ctx, coremsgs.MsgInitializationNilDepError, "PrivateMessaging") } pm := &privateMessaging{ ctx: ctx, + namespace: ns, database: di, identity: im, exchange: dx, @@ -103,7 +105,9 @@ func NewPrivateMessaging(ctx context.Context, di database.Plugin, im identity.Ma batchpin: bp, localNodeName: config.GetString(coreconfig.NodeName), groupManager: groupManager{ + namespace: ns, database: di, + identity: im, data: dm, groupCacheTTL: config.GetDuration(coreconfig.GroupCacheTTL), }, diff --git a/internal/privatemessaging/privatemessaging_test.go b/internal/privatemessaging/privatemessaging_test.go index f3e89cbea0..825751d103 100644 --- a/internal/privatemessaging/privatemessaging_test.go +++ b/internal/privatemessaging/privatemessaging_test.go @@ -77,7 +77,7 @@ func newTestPrivateMessagingCommon(t *testing.T, metricsEnabled bool) (*privateM mom.On("RegisterHandler", mock.Anything, mock.Anything, mock.Anything) ctx, cancel := context.WithCancel(context.Background()) - pm, err := NewPrivateMessaging(ctx, mdi, mim, mdx, mbi, mba, mdm, msa, mbp, mmi, mom) + pm, err := NewPrivateMessaging(ctx, "ns1", mdi, mim, mdx, mbi, mba, mdm, msa, mbp, mmi, mom) assert.NoError(t, err) // Default mocks to save boilerplate in the tests @@ -136,7 +136,7 @@ func TestDispatchBatchWithBlobs(t *testing.T) { mom := pm.operations.(*operationmocks.Manager) mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{ Hash: fftypes.NewRandB32(), GroupIdentity: core.GroupIdentity{ Name: "group1", @@ -146,8 +146,8 @@ func TestDispatchBatchWithBlobs(t *testing.T) { }, }, }, nil) - mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node2.ID).Return(node2, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node1.ID).Return(node1, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node2.ID).Return(node2, nil).Once() mdi.On("GetBlobMatchingHash", pm.ctx, blob1).Return(&core.Blob{ Hash: blob1, PayloadRef: "/blob/1", @@ -212,7 +212,7 @@ func TestDispatchBatchWithBlobs(t *testing.T) { } func TestNewPrivateMessagingMissingDeps(t *testing.T) { - _, err := NewPrivateMessaging(context.Background(), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil) + _, err := NewPrivateMessaging(context.Background(), "", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil) assert.Regexp(t, "FF10128", err) } @@ -221,7 +221,7 @@ func TestDispatchErrorFindingGroup(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) err := pm.dispatchPinnedBatch(pm.ctx, &batch.DispatchState{}) assert.Regexp(t, "pop", err) @@ -232,7 +232,7 @@ func TestSendAndSubmitBatchBadID(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) mbp := pm.batchpin.(*batchpinmocks.Submitter) mbp.On("SubmitPinnedBatch", pm.ctx, mock.Anything, mock.Anything, "").Return(fmt.Errorf("pop")) @@ -260,9 +260,10 @@ func TestSendAndSubmitBatchUnregisteredNode(t *testing.T) { node2 := newTestNode("node2", newTestOrg("remoteorg")) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node2.ID).Return(node2, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ + mim := pm.identity.(*identitymanagermocks.Manager) + mim.On("CachedIdentityLookupByID", pm.ctx, node1.ID).Return(node1, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node2.ID).Return(node2, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{ Hash: fftypes.NewRandB32(), GroupIdentity: core.GroupIdentity{ Name: "group1", @@ -273,7 +274,6 @@ func TestSendAndSubmitBatchUnregisteredNode(t *testing.T) { }, }, nil) - mim := pm.identity.(*identitymanagermocks.Manager) mim.On("GetMultipartyRootOrg", pm.ctx).Return(nil, fmt.Errorf("pop")) err := pm.dispatchPinnedBatch(pm.ctx, &batch.DispatchState{ @@ -298,7 +298,7 @@ func TestSendImmediateFail(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) err := pm.dispatchPinnedBatch(pm.ctx, &batch.DispatchState{ Persisted: core.BatchPersisted{ @@ -327,9 +327,9 @@ func TestSendSubmitInsertOperationFail(t *testing.T) { mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node2.ID).Return(node2, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ + mim.On("CachedIdentityLookupByID", pm.ctx, node1.ID).Return(node1, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node2.ID).Return(node2, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{ Hash: fftypes.NewRandB32(), GroupIdentity: core.GroupIdentity{ Name: "group1", @@ -373,9 +373,9 @@ func TestSendSubmitBlobTransferFail(t *testing.T) { mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node2.ID).Return(node2, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ + mim.On("CachedIdentityLookupByID", pm.ctx, node1.ID).Return(node1, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node2.ID).Return(node2, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{ Hash: fftypes.NewRandB32(), GroupIdentity: core.GroupIdentity{ Name: "group1", @@ -433,9 +433,9 @@ func TestWriteTransactionSubmitBatchPinFail(t *testing.T) { mim.On("GetMultipartyRootOrg", pm.ctx).Return(localOrg, nil) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", pm.ctx, node1.ID).Return(node1, nil).Once() - mdi.On("GetIdentityByID", pm.ctx, node2.ID).Return(node2, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{ + mim.On("CachedIdentityLookupByID", pm.ctx, node1.ID).Return(node1, nil).Once() + mim.On("CachedIdentityLookupByID", pm.ctx, node2.ID).Return(node2, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{ Hash: fftypes.NewRandB32(), GroupIdentity: core.GroupIdentity{ Name: "group1", diff --git a/internal/privatemessaging/recipients.go b/internal/privatemessaging/recipients.go index 405f2b88e0..66aa914f17 100644 --- a/internal/privatemessaging/recipients.go +++ b/internal/privatemessaging/recipients.go @@ -31,7 +31,7 @@ import ( func (pm *privateMessaging) resolveRecipientList(ctx context.Context, in *core.MessageInOut) error { if in.Header.Group != nil { log.L(ctx).Debugf("Group '%s' specified for message", in.Header.Group) - group, err := pm.database.GetGroupByHash(ctx, in.Header.Group) + group, err := pm.database.GetGroupByHash(ctx, pm.namespace, in.Header.Group) if err != nil { return err } @@ -66,7 +66,7 @@ func (pm *privateMessaging) getFirstNodeForOrg(ctx context.Context, identity *co fb.Eq("parent", identity.ID), fb.Eq("type", core.IdentityTypeNode), ) - nodes, _, err := pm.database.GetIdentities(ctx, filter) + nodes, _, err := pm.database.GetIdentities(ctx, pm.namespace, filter) if err != nil || len(nodes) == 0 { return nil, err } @@ -161,7 +161,7 @@ func (pm *privateMessaging) resolveLocalNode(ctx context.Context, localOrg *core fb.Eq("type", core.IdentityTypeNode), fb.Eq("name", pm.localNodeName), ) - nodes, _, err := pm.database.GetIdentities(ctx, filter) + nodes, _, err := pm.database.GetIdentities(ctx, pm.namespace, filter) if err != nil { return nil, err } diff --git a/internal/privatemessaging/recipients_test.go b/internal/privatemessaging/recipients_test.go index 356c786dcf..0bb457d395 100644 --- a/internal/privatemessaging/recipients_test.go +++ b/internal/privatemessaging/recipients_test.go @@ -42,9 +42,9 @@ func TestResolveMemberListNewGroupE2E(t *testing.T) { var dataID *fftypes.UUID mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{remoteNode}, nil, nil).Once() - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{remoteNode}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil).Once() + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(nil, nil).Once() mdi.On("UpsertGroup", pm.ctx, mock.Anything, database.UpsertOptimizationNew).Return(nil) mim := pm.identity.(*identitymanagermocks.Manager) @@ -112,8 +112,8 @@ func TestResolveMemberListExistingGroup(t *testing.T) { localNode := newTestNode("node1", localOrg) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() mim := pm.identity.(*identitymanagermocks.Manager) mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) @@ -180,8 +180,8 @@ func TestResolveMemberListGetGroupsFail(t *testing.T) { localNode := newTestNode("node1", localOrg) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("pop")) mim := pm.identity.(*identitymanagermocks.Manager) mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) mim.On("GetMultipartyRootOrg", pm.ctx).Return(localNode, nil) @@ -247,8 +247,8 @@ func TestResolveMemberListMissingLocalMemberLookupFailed(t *testing.T) { remoteNode := newTestNode("node2", remoteOrg) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{remoteNode}, nil, nil).Once() - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, fmt.Errorf("pop")).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{remoteNode}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, fmt.Errorf("pop")).Once() mim := pm.identity.(*identitymanagermocks.Manager) mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) @@ -284,7 +284,7 @@ func TestResolveMemberListNodeNotFound(t *testing.T) { localNode := newTestNode("node1", localOrg) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil).Once() mim := pm.identity.(*identitymanagermocks.Manager) mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(localOrg, false, nil) @@ -322,9 +322,9 @@ func TestResolveMemberNodeOwnedParentOrg(t *testing.T) { localNode := newTestNode("node1", parentOrg) mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil).Once() - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{localNode}, nil, nil) - mdi.On("GetGroupByHash", pm.ctx, mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil).Once() + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{localNode}, nil, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", mock.Anything, mock.Anything).Return(&core.Group{Hash: fftypes.NewRandB32()}, nil, nil).Once() mim := pm.identity.(*identitymanagermocks.Manager) mim.On("GetMultipartyRootOrg", pm.ctx).Return(parentOrg, nil) mim.On("CachedIdentityLookupMustExist", pm.ctx, "org1").Return(childOrg, false, nil) @@ -369,7 +369,7 @@ func TestResolveNodeByIDNoResult(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil) + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil) parentOrgID := fftypes.NewUUID() mim := pm.identity.(*identitymanagermocks.Manager) @@ -389,7 +389,7 @@ func TestResolveReceipientListExisting(t *testing.T) { groupID := fftypes.NewRandB32() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetGroupByHash", pm.ctx, groupID).Return(&core.Group{Hash: groupID}, nil) + mdi.On("GetGroupByHash", pm.ctx, "ns1", groupID).Return(&core.Group{Hash: groupID}, nil) err := pm.resolveRecipientList(pm.ctx, &core.MessageInOut{ Message: core.Message{ @@ -425,7 +425,7 @@ func TestResolveLocalNodeNotFound(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return([]*core.Identity{}, nil, nil) + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return([]*core.Identity{}, nil, nil) _, err := pm.resolveLocalNode(pm.ctx, newTestOrg("localorg")) assert.Regexp(t, "FF10225", err) @@ -436,7 +436,7 @@ func TestResolveLocalNodeNotError(t *testing.T) { defer cancel() mdi := pm.database.(*databasemocks.Plugin) - mdi.On("GetIdentities", pm.ctx, mock.Anything).Return(nil, nil, fmt.Errorf("pop")) + mdi.On("GetIdentities", pm.ctx, "ns1", mock.Anything).Return(nil, nil, fmt.Errorf("pop")) _, err := pm.resolveLocalNode(pm.ctx, newTestOrg("localorg")) assert.EqualError(t, err, "pop") diff --git a/internal/shareddownload/download_manager_test.go b/internal/shareddownload/download_manager_test.go index 5e8a1ddcc4..c44dc7edd9 100644 --- a/internal/shareddownload/download_manager_test.go +++ b/internal/shareddownload/download_manager_test.go @@ -50,7 +50,7 @@ func newTestDownloadManager(t *testing.T) (*downloadManager, func()) { mdx := &dataexchangemocks.Plugin{} mci := &shareddownloadmocks.Callbacks{} mdm := &datamocks.Manager{} - txHelper := txcommon.NewTransactionHelper(mdi, mdm) + txHelper := txcommon.NewTransactionHelper("ns1", mdi, mdm) mdi.On("Capabilities").Return(&database.Capabilities{ Concurrency: false, }) diff --git a/internal/syncasync/sync_async_bridge.go b/internal/syncasync/sync_async_bridge.go index 6c3c65fdf2..1c8aeac4f6 100644 --- a/internal/syncasync/sync_async_bridge.go +++ b/internal/syncasync/sync_async_bridge.go @@ -89,6 +89,7 @@ type inflightRequestMap map[string]map[fftypes.UUID]*inflightRequest type syncAsyncBridge struct { ctx context.Context + namespace string database database.Plugin data data.Manager sysevents sysmessaging.SystemEvents @@ -96,12 +97,13 @@ type syncAsyncBridge struct { inflight inflightRequestMap } -func NewSyncAsyncBridge(ctx context.Context, di database.Plugin, dm data.Manager) Bridge { +func NewSyncAsyncBridge(ctx context.Context, ns string, di database.Plugin, dm data.Manager) Bridge { sa := &syncAsyncBridge{ - ctx: log.WithLogField(ctx, "role", "sync-async-bridge"), - database: di, - data: dm, - inflight: make(inflightRequestMap), + ctx: log.WithLogField(ctx, "role", "sync-async-bridge"), + namespace: ns, + database: di, + data: dm, + inflight: make(inflightRequestMap), } return sa } @@ -177,7 +179,7 @@ func (sa *syncAsyncBridge) getMessageFromEvent(event *core.EventDelivery) (msg * } func (sa *syncAsyncBridge) getIdentityFromEvent(event *core.EventDelivery) (identity *core.Identity, err error) { - if identity, err = sa.database.GetIdentityByID(sa.ctx, event.Reference); err != nil { + if identity, err = sa.database.GetIdentityByID(sa.ctx, sa.namespace, event.Reference); err != nil { return nil, err } if identity == nil { diff --git a/internal/syncasync/sync_async_bridge_test.go b/internal/syncasync/sync_async_bridge_test.go index 171020761d..87222397bb 100644 --- a/internal/syncasync/sync_async_bridge_test.go +++ b/internal/syncasync/sync_async_bridge_test.go @@ -36,7 +36,7 @@ func newTestSyncAsyncBridge(t *testing.T) (*syncAsyncBridge, func()) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} mse := &sysmessagingmocks.SystemEvents{} - sa := NewSyncAsyncBridge(ctx, mdi, mdm) + sa := NewSyncAsyncBridge(ctx, "ns1", mdi, mdm) sa.Init(mse) return sa.(*syncAsyncBridge), cancel } @@ -372,7 +372,7 @@ func TestEventCallbackIdentityLookupFail(t *testing.T) { } mdi := sa.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", sa.ctx, mock.Anything).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", sa.ctx, "ns1", mock.Anything).Return(nil, fmt.Errorf("pop")) err := sa.eventCallback(&core.EventDelivery{ EnrichedEvent: core.EnrichedEvent{ @@ -403,7 +403,7 @@ func TestEventCallbackIdentityLookupNotFound(t *testing.T) { } mdi := sa.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", sa.ctx, mock.Anything).Return(nil, nil) + mdi.On("GetIdentityByID", sa.ctx, "ns1", mock.Anything).Return(nil, nil) err := sa.eventCallback(&core.EventDelivery{ EnrichedEvent: core.EnrichedEvent{ @@ -1384,7 +1384,7 @@ func TestAwaitIdentityConfirmed(t *testing.T) { mse.On("AddSystemEventListener", "ns1", mock.Anything).Return(nil) mdi := sa.database.(*databasemocks.Plugin) - mdi.On("GetIdentityByID", sa.ctx, requestID).Return(identity, nil) + mdi.On("GetIdentityByID", sa.ctx, "ns1", requestID).Return(identity, nil) retIdentity, err := sa.WaitForIdentity(sa.ctx, "ns1", requestID, func(ctx context.Context) error { go func() { diff --git a/internal/txcommon/event_enrich.go b/internal/txcommon/event_enrich.go index a4f03eb583..f467c8b429 100644 --- a/internal/txcommon/event_enrich.go +++ b/internal/txcommon/event_enrich.go @@ -65,7 +65,7 @@ func (t *transactionHelper) EnrichEvent(ctx context.Context, event *core.Event) } e.Datatype = dt case core.EventTypeIdentityConfirmed, core.EventTypeIdentityUpdated: - identity, err := t.database.GetIdentityByID(ctx, event.Reference) + identity, err := t.database.GetIdentityByID(ctx, t.namespace, event.Reference) if err != nil { return nil, err } diff --git a/internal/txcommon/event_enrich_test.go b/internal/txcommon/event_enrich_test.go index 1852cc2881..cb2c90cbbe 100644 --- a/internal/txcommon/event_enrich_test.go +++ b/internal/txcommon/event_enrich_test.go @@ -32,7 +32,7 @@ import ( func TestEnrichMessageConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -58,7 +58,7 @@ func TestEnrichMessageConfirmed(t *testing.T) { func TestEnrichMessageFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -81,7 +81,7 @@ func TestEnrichMessageFail(t *testing.T) { func TestEnrichMessageRejected(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -107,7 +107,7 @@ func TestEnrichMessageRejected(t *testing.T) { func TestEnrichTxSubmitted(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -133,7 +133,7 @@ func TestEnrichTxSubmitted(t *testing.T) { func TestEnrichTxFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -156,7 +156,7 @@ func TestEnrichTxFail(t *testing.T) { func TestEnrichBlockchainEventSubmitted(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -182,7 +182,7 @@ func TestEnrichBlockchainEventSubmitted(t *testing.T) { func TestEnrichBlockchainEventFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -205,7 +205,7 @@ func TestEnrichBlockchainEventFail(t *testing.T) { func TestEnrichContractAPISubmitted(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -231,7 +231,7 @@ func TestEnrichContractAPISubmitted(t *testing.T) { func TestEnrichContractAPItFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -254,7 +254,7 @@ func TestEnrichContractAPItFail(t *testing.T) { func TestEnrichContractInterfaceSubmitted(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -280,7 +280,7 @@ func TestEnrichContractInterfaceSubmitted(t *testing.T) { func TestEnrichContractInterfacetFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -303,7 +303,7 @@ func TestEnrichContractInterfacetFail(t *testing.T) { func TestEnrichDatatypeConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -329,7 +329,7 @@ func TestEnrichDatatypeConfirmed(t *testing.T) { func TestEnrichDatatypeConfirmedFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -352,7 +352,7 @@ func TestEnrichDatatypeConfirmedFail(t *testing.T) { func TestEnrichIdentityConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -360,7 +360,7 @@ func TestEnrichIdentityConfirmed(t *testing.T) { ev1 := fftypes.NewUUID() // Setup enrichment - mdi.On("GetIdentityByID", mock.Anything, ref1).Return(&core.Identity{ + mdi.On("GetIdentityByID", mock.Anything, "ns1", ref1).Return(&core.Identity{ IdentityBase: core.IdentityBase{ ID: ref1, }, @@ -380,7 +380,7 @@ func TestEnrichIdentityConfirmed(t *testing.T) { func TestEnrichIdentityConfirmedFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -388,7 +388,7 @@ func TestEnrichIdentityConfirmedFail(t *testing.T) { ev1 := fftypes.NewUUID() // Setup enrichment - mdi.On("GetIdentityByID", mock.Anything, ref1).Return(nil, fmt.Errorf("pop")) + mdi.On("GetIdentityByID", mock.Anything, "ns1", ref1).Return(nil, fmt.Errorf("pop")) event := &core.Event{ ID: ev1, @@ -403,7 +403,7 @@ func TestEnrichIdentityConfirmedFail(t *testing.T) { func TestEnrichNamespaceConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -429,7 +429,7 @@ func TestEnrichNamespaceConfirmed(t *testing.T) { func TestEnrichNamespaceConfirmedFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -452,7 +452,7 @@ func TestEnrichNamespaceConfirmedFail(t *testing.T) { func TestEnrichTokenPoolConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -478,7 +478,7 @@ func TestEnrichTokenPoolConfirmed(t *testing.T) { func TestEnrichTokenPoolConfirmedFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -501,7 +501,7 @@ func TestEnrichTokenPoolConfirmedFail(t *testing.T) { func TestEnrichTokenApprovalConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -527,7 +527,7 @@ func TestEnrichTokenApprovalConfirmed(t *testing.T) { func TestEnrichTokenApprovalFailed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -553,7 +553,7 @@ func TestEnrichTokenApprovalFailed(t *testing.T) { func TestEnrichTokenApprovalConfirmedFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -576,7 +576,7 @@ func TestEnrichTokenApprovalConfirmedFail(t *testing.T) { func TestEnrichTokenTransferConfirmed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -602,7 +602,7 @@ func TestEnrichTokenTransferConfirmed(t *testing.T) { func TestEnrichTokenTransferFailed(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -628,7 +628,7 @@ func TestEnrichTokenTransferFailed(t *testing.T) { func TestEnrichTokenTransferConfirmedFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs @@ -651,7 +651,7 @@ func TestEnrichTokenTransferConfirmedFail(t *testing.T) { func TestEnrichOperationFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() // Setup the IDs diff --git a/internal/txcommon/txcommon.go b/internal/txcommon/txcommon.go index 141e2a1194..b63c9e5dcd 100644 --- a/internal/txcommon/txcommon.go +++ b/internal/txcommon/txcommon.go @@ -42,6 +42,7 @@ type Helper interface { } type transactionHelper struct { + namespace string database database.Plugin data data.Manager transactionCache *ccache.Cache @@ -50,10 +51,11 @@ type transactionHelper struct { blockchainEventTTL time.Duration } -func NewTransactionHelper(di database.Plugin, dm data.Manager) Helper { +func NewTransactionHelper(ns string, di database.Plugin, dm data.Manager) Helper { t := &transactionHelper{ - database: di, - data: dm, + namespace: ns, + database: di, + data: dm, } t.transactionCache = ccache.New( // We use a LRU cache with a size-aware max diff --git a/internal/txcommon/txcommon_test.go b/internal/txcommon/txcommon_test.go index 77fedc5742..03ac2888c6 100644 --- a/internal/txcommon/txcommon_test.go +++ b/internal/txcommon/txcommon_test.go @@ -57,7 +57,7 @@ func TestSubmitNewTransactionOK(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() var txidInserted *fftypes.UUID @@ -85,7 +85,7 @@ func TestSubmitNewTransactionFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() mdi.On("InsertTransaction", ctx, mock.Anything).Return(fmt.Errorf("pop")) @@ -101,7 +101,7 @@ func TestSubmitNewTransactionEventFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() mdi.On("InsertTransaction", ctx, mock.Anything).Return(nil) @@ -118,7 +118,7 @@ func TestPersistTransactionNew(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -143,7 +143,7 @@ func TestPersistTransactionNewInserTFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -162,7 +162,7 @@ func TestPersistTransactionExistingAddBlockchainID(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -187,7 +187,7 @@ func TestPersistTransactionExistingUpdateFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -212,7 +212,7 @@ func TestPersistTransactionExistingNoChange(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -236,7 +236,7 @@ func TestPersistTransactionExistingNoBlockchainID(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -260,7 +260,7 @@ func TestPersistTransactionExistingLookupFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -278,7 +278,7 @@ func TestPersistTransactionExistingMismatchNS(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -302,7 +302,7 @@ func TestPersistTransactionExistingMismatchType(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() txid := fftypes.NewUUID() @@ -326,7 +326,7 @@ func TestAddBlockchainTX(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() tx := &core.Transaction{ @@ -356,7 +356,7 @@ func TestAddBlockchainTXUpdateFail(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() tx := &core.Transaction{ @@ -379,7 +379,7 @@ func TestAddBlockchainTXUnchanged(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() tx := &core.Transaction{ @@ -433,7 +433,7 @@ func TestGetBlockchainEventByIDCached(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() evID := fftypes.NewUUID() @@ -458,7 +458,7 @@ func TestGetBlockchainEventByIDNil(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() evID := fftypes.NewUUID() @@ -476,7 +476,7 @@ func TestGetBlockchainEventByIDErr(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() evID := fftypes.NewUUID() @@ -493,7 +493,7 @@ func TestInsertGetBlockchainEventCached(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() evID := fftypes.NewUUID() @@ -518,7 +518,7 @@ func TestInsertGetBlockchainEventErr(t *testing.T) { mdi := &databasemocks.Plugin{} mdm := &datamocks.Manager{} - txHelper := NewTransactionHelper(mdi, mdm) + txHelper := NewTransactionHelper("ns1", mdi, mdm) ctx := context.Background() evID := fftypes.NewUUID() diff --git a/mocks/databasemocks/plugin.go b/mocks/databasemocks/plugin.go index 37e33d2399..d2ff7d3e3a 100644 --- a/mocks/databasemocks/plugin.go +++ b/mocks/databasemocks/plugin.go @@ -1071,13 +1071,13 @@ func (_m *Plugin) GetFFIs(ctx context.Context, ns string, filter database.Filter return r0, r1, r2 } -// GetGroupByHash provides a mock function with given fields: ctx, hash -func (_m *Plugin) GetGroupByHash(ctx context.Context, hash *fftypes.Bytes32) (*core.Group, error) { - ret := _m.Called(ctx, hash) +// GetGroupByHash provides a mock function with given fields: ctx, namespace, hash +func (_m *Plugin) GetGroupByHash(ctx context.Context, namespace string, hash *fftypes.Bytes32) (*core.Group, error) { + ret := _m.Called(ctx, namespace, hash) var r0 *core.Group - if rf, ok := ret.Get(0).(func(context.Context, *fftypes.Bytes32) *core.Group); ok { - r0 = rf(ctx, hash) + if rf, ok := ret.Get(0).(func(context.Context, string, *fftypes.Bytes32) *core.Group); ok { + r0 = rf(ctx, namespace, hash) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Group) @@ -1085,8 +1085,8 @@ func (_m *Plugin) GetGroupByHash(ctx context.Context, hash *fftypes.Bytes32) (*c } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *fftypes.Bytes32) error); ok { - r1 = rf(ctx, hash) + if rf, ok := ret.Get(1).(func(context.Context, string, *fftypes.Bytes32) error); ok { + r1 = rf(ctx, namespace, hash) } else { r1 = ret.Error(1) } @@ -1094,13 +1094,13 @@ func (_m *Plugin) GetGroupByHash(ctx context.Context, hash *fftypes.Bytes32) (*c return r0, r1 } -// GetGroups provides a mock function with given fields: ctx, filter -func (_m *Plugin) GetGroups(ctx context.Context, filter database.Filter) ([]*core.Group, *database.FilterResult, error) { - ret := _m.Called(ctx, filter) +// GetGroups provides a mock function with given fields: ctx, namespace, filter +func (_m *Plugin) GetGroups(ctx context.Context, namespace string, filter database.Filter) ([]*core.Group, *database.FilterResult, error) { + ret := _m.Called(ctx, namespace, filter) var r0 []*core.Group - if rf, ok := ret.Get(0).(func(context.Context, database.Filter) []*core.Group); ok { - r0 = rf(ctx, filter) + if rf, ok := ret.Get(0).(func(context.Context, string, database.Filter) []*core.Group); ok { + r0 = rf(ctx, namespace, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Group) @@ -1108,8 +1108,8 @@ func (_m *Plugin) GetGroups(ctx context.Context, filter database.Filter) ([]*cor } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, database.Filter) *database.FilterResult); ok { - r1 = rf(ctx, filter) + if rf, ok := ret.Get(1).(func(context.Context, string, database.Filter) *database.FilterResult); ok { + r1 = rf(ctx, namespace, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -1117,8 +1117,8 @@ func (_m *Plugin) GetGroups(ctx context.Context, filter database.Filter) ([]*cor } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, database.Filter) error); ok { - r2 = rf(ctx, filter) + if rf, ok := ret.Get(2).(func(context.Context, string, database.Filter) error); ok { + r2 = rf(ctx, namespace, filter) } else { r2 = ret.Error(2) } @@ -1126,13 +1126,13 @@ func (_m *Plugin) GetGroups(ctx context.Context, filter database.Filter) ([]*cor return r0, r1, r2 } -// GetIdentities provides a mock function with given fields: ctx, filter -func (_m *Plugin) GetIdentities(ctx context.Context, filter database.Filter) ([]*core.Identity, *database.FilterResult, error) { - ret := _m.Called(ctx, filter) +// GetIdentities provides a mock function with given fields: ctx, namespace, filter +func (_m *Plugin) GetIdentities(ctx context.Context, namespace string, filter database.Filter) ([]*core.Identity, *database.FilterResult, error) { + ret := _m.Called(ctx, namespace, filter) var r0 []*core.Identity - if rf, ok := ret.Get(0).(func(context.Context, database.Filter) []*core.Identity); ok { - r0 = rf(ctx, filter) + if rf, ok := ret.Get(0).(func(context.Context, string, database.Filter) []*core.Identity); ok { + r0 = rf(ctx, namespace, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Identity) @@ -1140,8 +1140,8 @@ func (_m *Plugin) GetIdentities(ctx context.Context, filter database.Filter) ([] } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, database.Filter) *database.FilterResult); ok { - r1 = rf(ctx, filter) + if rf, ok := ret.Get(1).(func(context.Context, string, database.Filter) *database.FilterResult); ok { + r1 = rf(ctx, namespace, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -1149,8 +1149,8 @@ func (_m *Plugin) GetIdentities(ctx context.Context, filter database.Filter) ([] } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, database.Filter) error); ok { - r2 = rf(ctx, filter) + if rf, ok := ret.Get(2).(func(context.Context, string, database.Filter) error); ok { + r2 = rf(ctx, namespace, filter) } else { r2 = ret.Error(2) } @@ -1158,13 +1158,13 @@ func (_m *Plugin) GetIdentities(ctx context.Context, filter database.Filter) ([] return r0, r1, r2 } -// GetIdentityByDID provides a mock function with given fields: ctx, did -func (_m *Plugin) GetIdentityByDID(ctx context.Context, did string) (*core.Identity, error) { - ret := _m.Called(ctx, did) +// GetIdentityByDID provides a mock function with given fields: ctx, namespace, did +func (_m *Plugin) GetIdentityByDID(ctx context.Context, namespace string, did string) (*core.Identity, error) { + ret := _m.Called(ctx, namespace, did) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { - r0 = rf(ctx, did) + if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { + r0 = rf(ctx, namespace, did) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -1172,8 +1172,8 @@ func (_m *Plugin) GetIdentityByDID(ctx context.Context, did string) (*core.Ident } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, did) + if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + r1 = rf(ctx, namespace, did) } else { r1 = ret.Error(1) } @@ -1181,13 +1181,13 @@ func (_m *Plugin) GetIdentityByDID(ctx context.Context, did string) (*core.Ident return r0, r1 } -// GetIdentityByID provides a mock function with given fields: ctx, id -func (_m *Plugin) GetIdentityByID(ctx context.Context, id *fftypes.UUID) (*core.Identity, error) { - ret := _m.Called(ctx, id) +// GetIdentityByID provides a mock function with given fields: ctx, namespace, id +func (_m *Plugin) GetIdentityByID(ctx context.Context, namespace string, id *fftypes.UUID) (*core.Identity, error) { + ret := _m.Called(ctx, namespace, id) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, *fftypes.UUID) *core.Identity); ok { - r0 = rf(ctx, id) + if rf, ok := ret.Get(0).(func(context.Context, string, *fftypes.UUID) *core.Identity); ok { + r0 = rf(ctx, namespace, id) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -1195,8 +1195,8 @@ func (_m *Plugin) GetIdentityByID(ctx context.Context, id *fftypes.UUID) (*core. } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *fftypes.UUID) error); ok { - r1 = rf(ctx, id) + if rf, ok := ret.Get(1).(func(context.Context, string, *fftypes.UUID) error); ok { + r1 = rf(ctx, namespace, id) } else { r1 = ret.Error(1) } @@ -2167,13 +2167,13 @@ func (_m *Plugin) GetTransactions(ctx context.Context, filter database.Filter) ( return r0, r1, r2 } -// GetVerifierByHash provides a mock function with given fields: ctx, hash -func (_m *Plugin) GetVerifierByHash(ctx context.Context, hash *fftypes.Bytes32) (*core.Verifier, error) { - ret := _m.Called(ctx, hash) +// GetVerifierByHash provides a mock function with given fields: ctx, namespace, hash +func (_m *Plugin) GetVerifierByHash(ctx context.Context, namespace string, hash *fftypes.Bytes32) (*core.Verifier, error) { + ret := _m.Called(ctx, namespace, hash) var r0 *core.Verifier - if rf, ok := ret.Get(0).(func(context.Context, *fftypes.Bytes32) *core.Verifier); ok { - r0 = rf(ctx, hash) + if rf, ok := ret.Get(0).(func(context.Context, string, *fftypes.Bytes32) *core.Verifier); ok { + r0 = rf(ctx, namespace, hash) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Verifier) @@ -2181,8 +2181,8 @@ func (_m *Plugin) GetVerifierByHash(ctx context.Context, hash *fftypes.Bytes32) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *fftypes.Bytes32) error); ok { - r1 = rf(ctx, hash) + if rf, ok := ret.Get(1).(func(context.Context, string, *fftypes.Bytes32) error); ok { + r1 = rf(ctx, namespace, hash) } else { r1 = ret.Error(1) } @@ -2213,13 +2213,13 @@ func (_m *Plugin) GetVerifierByValue(ctx context.Context, vType fftypes.FFEnum, return r0, r1 } -// GetVerifiers provides a mock function with given fields: ctx, filter -func (_m *Plugin) GetVerifiers(ctx context.Context, filter database.Filter) ([]*core.Verifier, *database.FilterResult, error) { - ret := _m.Called(ctx, filter) +// GetVerifiers provides a mock function with given fields: ctx, namespace, filter +func (_m *Plugin) GetVerifiers(ctx context.Context, namespace string, filter database.Filter) ([]*core.Verifier, *database.FilterResult, error) { + ret := _m.Called(ctx, namespace, filter) var r0 []*core.Verifier - if rf, ok := ret.Get(0).(func(context.Context, database.Filter) []*core.Verifier); ok { - r0 = rf(ctx, filter) + if rf, ok := ret.Get(0).(func(context.Context, string, database.Filter) []*core.Verifier); ok { + r0 = rf(ctx, namespace, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Verifier) @@ -2227,8 +2227,8 @@ func (_m *Plugin) GetVerifiers(ctx context.Context, filter database.Filter) ([]* } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, database.Filter) *database.FilterResult); ok { - r1 = rf(ctx, filter) + if rf, ok := ret.Get(1).(func(context.Context, string, database.Filter) *database.FilterResult); ok { + r1 = rf(ctx, namespace, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -2236,8 +2236,8 @@ func (_m *Plugin) GetVerifiers(ctx context.Context, filter database.Filter) ([]* } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, database.Filter) error); ok { - r2 = rf(ctx, filter) + if rf, ok := ret.Get(2).(func(context.Context, string, database.Filter) error); ok { + r2 = rf(ctx, namespace, filter) } else { r2 = ret.Error(2) } @@ -2563,34 +2563,6 @@ func (_m *Plugin) UpdateEvent(ctx context.Context, id *fftypes.UUID, update data return r0 } -// UpdateGroup provides a mock function with given fields: ctx, hash, update -func (_m *Plugin) UpdateGroup(ctx context.Context, hash *fftypes.Bytes32, update database.Update) error { - ret := _m.Called(ctx, hash, update) - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, *fftypes.Bytes32, database.Update) error); ok { - r0 = rf(ctx, hash, update) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// UpdateIdentity provides a mock function with given fields: ctx, id, update -func (_m *Plugin) UpdateIdentity(ctx context.Context, id *fftypes.UUID, update database.Update) error { - ret := _m.Called(ctx, id, update) - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, *fftypes.UUID, database.Update) error); ok { - r0 = rf(ctx, id, update) - } else { - r0 = ret.Error(0) - } - - return r0 -} - // UpdateMessage provides a mock function with given fields: ctx, id, update func (_m *Plugin) UpdateMessage(ctx context.Context, id *fftypes.UUID, update database.Update) error { ret := _m.Called(ctx, id, update) @@ -2745,20 +2717,6 @@ func (_m *Plugin) UpdateTransaction(ctx context.Context, id *fftypes.UUID, updat return r0 } -// UpdateVerifier provides a mock function with given fields: ctx, hash, update -func (_m *Plugin) UpdateVerifier(ctx context.Context, hash *fftypes.Bytes32, update database.Update) error { - ret := _m.Called(ctx, hash, update) - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, *fftypes.Bytes32, database.Update) error); ok { - r0 = rf(ctx, hash, update) - } else { - r0 = ret.Error(0) - } - - return r0 -} - // UpsertBatch provides a mock function with given fields: ctx, data func (_m *Plugin) UpsertBatch(ctx context.Context, data *core.BatchPersisted) error { ret := _m.Called(ctx, data) diff --git a/mocks/networkmapmocks/manager.go b/mocks/networkmapmocks/manager.go index a9e0b88dc4..a8df308482 100644 --- a/mocks/networkmapmocks/manager.go +++ b/mocks/networkmapmocks/manager.go @@ -18,13 +18,13 @@ type Manager struct { mock.Mock } -// GetDIDDocForIndentityByDID provides a mock function with given fields: ctx, ns, did -func (_m *Manager) GetDIDDocForIndentityByDID(ctx context.Context, ns string, did string) (*networkmap.DIDDocument, error) { - ret := _m.Called(ctx, ns, did) +// GetDIDDocForIndentityByDID provides a mock function with given fields: ctx, did +func (_m *Manager) GetDIDDocForIndentityByDID(ctx context.Context, did string) (*networkmap.DIDDocument, error) { + ret := _m.Called(ctx, did) var r0 *networkmap.DIDDocument - if rf, ok := ret.Get(0).(func(context.Context, string, string) *networkmap.DIDDocument); ok { - r0 = rf(ctx, ns, did) + if rf, ok := ret.Get(0).(func(context.Context, string) *networkmap.DIDDocument); ok { + r0 = rf(ctx, did) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*networkmap.DIDDocument) @@ -32,8 +32,8 @@ func (_m *Manager) GetDIDDocForIndentityByDID(ctx context.Context, ns string, di } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, did) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, did) } else { r1 = ret.Error(1) } @@ -41,13 +41,13 @@ func (_m *Manager) GetDIDDocForIndentityByDID(ctx context.Context, ns string, di return r0, r1 } -// GetDIDDocForIndentityByID provides a mock function with given fields: ctx, ns, id -func (_m *Manager) GetDIDDocForIndentityByID(ctx context.Context, ns string, id string) (*networkmap.DIDDocument, error) { - ret := _m.Called(ctx, ns, id) +// GetDIDDocForIndentityByID provides a mock function with given fields: ctx, id +func (_m *Manager) GetDIDDocForIndentityByID(ctx context.Context, id string) (*networkmap.DIDDocument, error) { + ret := _m.Called(ctx, id) var r0 *networkmap.DIDDocument - if rf, ok := ret.Get(0).(func(context.Context, string, string) *networkmap.DIDDocument); ok { - r0 = rf(ctx, ns, id) + if rf, ok := ret.Get(0).(func(context.Context, string) *networkmap.DIDDocument); ok { + r0 = rf(ctx, id) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*networkmap.DIDDocument) @@ -55,8 +55,8 @@ func (_m *Manager) GetDIDDocForIndentityByID(ctx context.Context, ns string, id } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, id) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, id) } else { r1 = ret.Error(1) } @@ -64,13 +64,13 @@ func (_m *Manager) GetDIDDocForIndentityByID(ctx context.Context, ns string, id return r0, r1 } -// GetIdentities provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetIdentities(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetIdentities provides a mock function with given fields: ctx, filter +func (_m *Manager) GetIdentities(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.Identity); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.Identity); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Identity) @@ -78,8 +78,8 @@ func (_m *Manager) GetIdentities(ctx context.Context, ns string, filter database } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -87,8 +87,8 @@ func (_m *Manager) GetIdentities(ctx context.Context, ns string, filter database } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } @@ -96,13 +96,13 @@ func (_m *Manager) GetIdentities(ctx context.Context, ns string, filter database return r0, r1, r2 } -// GetIdentitiesWithVerifiers provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetIdentitiesWithVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetIdentitiesWithVerifiers provides a mock function with given fields: ctx, filter +func (_m *Manager) GetIdentitiesWithVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.IdentityWithVerifiers - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.IdentityWithVerifiers); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.IdentityWithVerifiers); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.IdentityWithVerifiers) @@ -110,8 +110,8 @@ func (_m *Manager) GetIdentitiesWithVerifiers(ctx context.Context, ns string, fi } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -119,8 +119,8 @@ func (_m *Manager) GetIdentitiesWithVerifiers(ctx context.Context, ns string, fi } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } @@ -128,13 +128,13 @@ func (_m *Manager) GetIdentitiesWithVerifiers(ctx context.Context, ns string, fi return r0, r1, r2 } -// GetIdentityByDID provides a mock function with given fields: ctx, ns, did -func (_m *Manager) GetIdentityByDID(ctx context.Context, ns string, did string) (*core.Identity, error) { - ret := _m.Called(ctx, ns, did) +// GetIdentityByDID provides a mock function with given fields: ctx, did +func (_m *Manager) GetIdentityByDID(ctx context.Context, did string) (*core.Identity, error) { + ret := _m.Called(ctx, did) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { - r0 = rf(ctx, ns, did) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { + r0 = rf(ctx, did) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -142,8 +142,8 @@ func (_m *Manager) GetIdentityByDID(ctx context.Context, ns string, did string) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, did) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, did) } else { r1 = ret.Error(1) } @@ -151,13 +151,13 @@ func (_m *Manager) GetIdentityByDID(ctx context.Context, ns string, did string) return r0, r1 } -// GetIdentityByDIDWithVerifiers provides a mock function with given fields: ctx, ns, did -func (_m *Manager) GetIdentityByDIDWithVerifiers(ctx context.Context, ns string, did string) (*core.IdentityWithVerifiers, error) { - ret := _m.Called(ctx, ns, did) +// GetIdentityByDIDWithVerifiers provides a mock function with given fields: ctx, did +func (_m *Manager) GetIdentityByDIDWithVerifiers(ctx context.Context, did string) (*core.IdentityWithVerifiers, error) { + ret := _m.Called(ctx, did) var r0 *core.IdentityWithVerifiers - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.IdentityWithVerifiers); ok { - r0 = rf(ctx, ns, did) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.IdentityWithVerifiers); ok { + r0 = rf(ctx, did) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.IdentityWithVerifiers) @@ -165,8 +165,8 @@ func (_m *Manager) GetIdentityByDIDWithVerifiers(ctx context.Context, ns string, } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, did) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, did) } else { r1 = ret.Error(1) } @@ -174,13 +174,13 @@ func (_m *Manager) GetIdentityByDIDWithVerifiers(ctx context.Context, ns string, return r0, r1 } -// GetIdentityByID provides a mock function with given fields: ctx, ns, id -func (_m *Manager) GetIdentityByID(ctx context.Context, ns string, id string) (*core.Identity, error) { - ret := _m.Called(ctx, ns, id) +// GetIdentityByID provides a mock function with given fields: ctx, id +func (_m *Manager) GetIdentityByID(ctx context.Context, id string) (*core.Identity, error) { + ret := _m.Called(ctx, id) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { - r0 = rf(ctx, ns, id) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { + r0 = rf(ctx, id) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -188,8 +188,8 @@ func (_m *Manager) GetIdentityByID(ctx context.Context, ns string, id string) (* } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, id) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, id) } else { r1 = ret.Error(1) } @@ -197,13 +197,13 @@ func (_m *Manager) GetIdentityByID(ctx context.Context, ns string, id string) (* return r0, r1 } -// GetIdentityByIDWithVerifiers provides a mock function with given fields: ctx, ns, id -func (_m *Manager) GetIdentityByIDWithVerifiers(ctx context.Context, ns string, id string) (*core.IdentityWithVerifiers, error) { - ret := _m.Called(ctx, ns, id) +// GetIdentityByIDWithVerifiers provides a mock function with given fields: ctx, id +func (_m *Manager) GetIdentityByIDWithVerifiers(ctx context.Context, id string) (*core.IdentityWithVerifiers, error) { + ret := _m.Called(ctx, id) var r0 *core.IdentityWithVerifiers - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.IdentityWithVerifiers); ok { - r0 = rf(ctx, ns, id) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.IdentityWithVerifiers); ok { + r0 = rf(ctx, id) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.IdentityWithVerifiers) @@ -211,8 +211,8 @@ func (_m *Manager) GetIdentityByIDWithVerifiers(ctx context.Context, ns string, } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, id) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, id) } else { r1 = ret.Error(1) } @@ -220,13 +220,13 @@ func (_m *Manager) GetIdentityByIDWithVerifiers(ctx context.Context, ns string, return r0, r1 } -// GetIdentityVerifiers provides a mock function with given fields: ctx, ns, id, filter -func (_m *Manager) GetIdentityVerifiers(ctx context.Context, ns string, id string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, id, filter) +// GetIdentityVerifiers provides a mock function with given fields: ctx, id, filter +func (_m *Manager) GetIdentityVerifiers(ctx context.Context, id string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { + ret := _m.Called(ctx, id, filter) var r0 []*core.Verifier - if rf, ok := ret.Get(0).(func(context.Context, string, string, database.AndFilter) []*core.Verifier); ok { - r0 = rf(ctx, ns, id, filter) + if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.Verifier); ok { + r0 = rf(ctx, id, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Verifier) @@ -234,8 +234,8 @@ func (_m *Manager) GetIdentityVerifiers(ctx context.Context, ns string, id strin } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, id, filter) + if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, id, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -243,8 +243,8 @@ func (_m *Manager) GetIdentityVerifiers(ctx context.Context, ns string, id strin } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, id, filter) + if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { + r2 = rf(ctx, id, filter) } else { r2 = ret.Error(2) } @@ -252,13 +252,13 @@ func (_m *Manager) GetIdentityVerifiers(ctx context.Context, ns string, id strin return r0, r1, r2 } -// GetNodeByNameOrID provides a mock function with given fields: ctx, ns, nameOrID -func (_m *Manager) GetNodeByNameOrID(ctx context.Context, ns string, nameOrID string) (*core.Identity, error) { - ret := _m.Called(ctx, ns, nameOrID) +// GetNodeByNameOrID provides a mock function with given fields: ctx, nameOrID +func (_m *Manager) GetNodeByNameOrID(ctx context.Context, nameOrID string) (*core.Identity, error) { + ret := _m.Called(ctx, nameOrID) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { - r0 = rf(ctx, ns, nameOrID) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { + r0 = rf(ctx, nameOrID) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -266,8 +266,8 @@ func (_m *Manager) GetNodeByNameOrID(ctx context.Context, ns string, nameOrID st } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, nameOrID) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, nameOrID) } else { r1 = ret.Error(1) } @@ -275,13 +275,13 @@ func (_m *Manager) GetNodeByNameOrID(ctx context.Context, ns string, nameOrID st return r0, r1 } -// GetNodes provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetNodes(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetNodes provides a mock function with given fields: ctx, filter +func (_m *Manager) GetNodes(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.Identity); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.Identity); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Identity) @@ -289,8 +289,8 @@ func (_m *Manager) GetNodes(ctx context.Context, ns string, filter database.AndF } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -298,8 +298,8 @@ func (_m *Manager) GetNodes(ctx context.Context, ns string, filter database.AndF } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } @@ -307,13 +307,13 @@ func (_m *Manager) GetNodes(ctx context.Context, ns string, filter database.AndF return r0, r1, r2 } -// GetOrganizationByNameOrID provides a mock function with given fields: ctx, ns, nameOrID -func (_m *Manager) GetOrganizationByNameOrID(ctx context.Context, ns string, nameOrID string) (*core.Identity, error) { - ret := _m.Called(ctx, ns, nameOrID) +// GetOrganizationByNameOrID provides a mock function with given fields: ctx, nameOrID +func (_m *Manager) GetOrganizationByNameOrID(ctx context.Context, nameOrID string) (*core.Identity, error) { + ret := _m.Called(ctx, nameOrID) var r0 *core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Identity); ok { - r0 = rf(ctx, ns, nameOrID) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Identity); ok { + r0 = rf(ctx, nameOrID) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Identity) @@ -321,8 +321,8 @@ func (_m *Manager) GetOrganizationByNameOrID(ctx context.Context, ns string, nam } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, nameOrID) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, nameOrID) } else { r1 = ret.Error(1) } @@ -330,13 +330,13 @@ func (_m *Manager) GetOrganizationByNameOrID(ctx context.Context, ns string, nam return r0, r1 } -// GetOrganizations provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetOrganizations(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetOrganizations provides a mock function with given fields: ctx, filter +func (_m *Manager) GetOrganizations(ctx context.Context, filter database.AndFilter) ([]*core.Identity, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.Identity - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.Identity); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.Identity); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Identity) @@ -344,8 +344,8 @@ func (_m *Manager) GetOrganizations(ctx context.Context, ns string, filter datab } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -353,8 +353,8 @@ func (_m *Manager) GetOrganizations(ctx context.Context, ns string, filter datab } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } @@ -362,13 +362,13 @@ func (_m *Manager) GetOrganizations(ctx context.Context, ns string, filter datab return r0, r1, r2 } -// GetOrganizationsWithVerifiers provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetOrganizationsWithVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetOrganizationsWithVerifiers provides a mock function with given fields: ctx, filter +func (_m *Manager) GetOrganizationsWithVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.IdentityWithVerifiers, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.IdentityWithVerifiers - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.IdentityWithVerifiers); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.IdentityWithVerifiers); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.IdentityWithVerifiers) @@ -376,8 +376,8 @@ func (_m *Manager) GetOrganizationsWithVerifiers(ctx context.Context, ns string, } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -385,8 +385,8 @@ func (_m *Manager) GetOrganizationsWithVerifiers(ctx context.Context, ns string, } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } @@ -394,13 +394,13 @@ func (_m *Manager) GetOrganizationsWithVerifiers(ctx context.Context, ns string, return r0, r1, r2 } -// GetVerifierByHash provides a mock function with given fields: ctx, ns, hash -func (_m *Manager) GetVerifierByHash(ctx context.Context, ns string, hash string) (*core.Verifier, error) { - ret := _m.Called(ctx, ns, hash) +// GetVerifierByHash provides a mock function with given fields: ctx, hash +func (_m *Manager) GetVerifierByHash(ctx context.Context, hash string) (*core.Verifier, error) { + ret := _m.Called(ctx, hash) var r0 *core.Verifier - if rf, ok := ret.Get(0).(func(context.Context, string, string) *core.Verifier); ok { - r0 = rf(ctx, ns, hash) + if rf, ok := ret.Get(0).(func(context.Context, string) *core.Verifier); ok { + r0 = rf(ctx, hash) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*core.Verifier) @@ -408,8 +408,8 @@ func (_m *Manager) GetVerifierByHash(ctx context.Context, ns string, hash string } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { - r1 = rf(ctx, ns, hash) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, hash) } else { r1 = ret.Error(1) } @@ -417,13 +417,13 @@ func (_m *Manager) GetVerifierByHash(ctx context.Context, ns string, hash string return r0, r1 } -// GetVerifiers provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetVerifiers(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetVerifiers provides a mock function with given fields: ctx, filter +func (_m *Manager) GetVerifiers(ctx context.Context, filter database.AndFilter) ([]*core.Verifier, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.Verifier - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.Verifier); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.Verifier); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Verifier) @@ -431,8 +431,8 @@ func (_m *Manager) GetVerifiers(ctx context.Context, ns string, filter database. } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -440,8 +440,8 @@ func (_m *Manager) GetVerifiers(ctx context.Context, ns string, filter database. } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } diff --git a/mocks/orchestratormocks/orchestrator.go b/mocks/orchestratormocks/orchestrator.go index 0855746c8d..97f734fc1d 100644 --- a/mocks/orchestratormocks/orchestrator.go +++ b/mocks/orchestratormocks/orchestrator.go @@ -20,8 +20,6 @@ import ( events "github.com/hyperledger/firefly/internal/events" - metrics "github.com/hyperledger/firefly/internal/metrics" - mock "github.com/stretchr/testify/mock" networkmap "github.com/hyperledger/firefly/internal/networkmap" @@ -1196,22 +1194,6 @@ func (_m *Orchestrator) Init(ctx context.Context, cancelCtx context.CancelFunc) return r0 } -// Metrics provides a mock function with given fields: -func (_m *Orchestrator) Metrics() metrics.Manager { - ret := _m.Called() - - var r0 metrics.Manager - if rf, ok := ret.Get(0).(func() metrics.Manager); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(metrics.Manager) - } - } - - return r0 -} - // NetworkMap provides a mock function with given fields: func (_m *Orchestrator) NetworkMap() networkmap.Manager { ret := _m.Called() diff --git a/mocks/privatemessagingmocks/manager.go b/mocks/privatemessagingmocks/manager.go index a53abe151a..892603c8e3 100644 --- a/mocks/privatemessagingmocks/manager.go +++ b/mocks/privatemessagingmocks/manager.go @@ -64,13 +64,13 @@ func (_m *Manager) GetGroupByID(ctx context.Context, id string) (*core.Group, er return r0, r1 } -// GetGroupsNS provides a mock function with given fields: ctx, ns, filter -func (_m *Manager) GetGroupsNS(ctx context.Context, ns string, filter database.AndFilter) ([]*core.Group, *database.FilterResult, error) { - ret := _m.Called(ctx, ns, filter) +// GetGroups provides a mock function with given fields: ctx, filter +func (_m *Manager) GetGroups(ctx context.Context, filter database.AndFilter) ([]*core.Group, *database.FilterResult, error) { + ret := _m.Called(ctx, filter) var r0 []*core.Group - if rf, ok := ret.Get(0).(func(context.Context, string, database.AndFilter) []*core.Group); ok { - r0 = rf(ctx, ns, filter) + if rf, ok := ret.Get(0).(func(context.Context, database.AndFilter) []*core.Group); ok { + r0 = rf(ctx, filter) } else { if ret.Get(0) != nil { r0 = ret.Get(0).([]*core.Group) @@ -78,8 +78,8 @@ func (_m *Manager) GetGroupsNS(ctx context.Context, ns string, filter database.A } var r1 *database.FilterResult - if rf, ok := ret.Get(1).(func(context.Context, string, database.AndFilter) *database.FilterResult); ok { - r1 = rf(ctx, ns, filter) + if rf, ok := ret.Get(1).(func(context.Context, database.AndFilter) *database.FilterResult); ok { + r1 = rf(ctx, filter) } else { if ret.Get(1) != nil { r1 = ret.Get(1).(*database.FilterResult) @@ -87,8 +87,8 @@ func (_m *Manager) GetGroupsNS(ctx context.Context, ns string, filter database.A } var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string, database.AndFilter) error); ok { - r2 = rf(ctx, ns, filter) + if rf, ok := ret.Get(2).(func(context.Context, database.AndFilter) error); ok { + r2 = rf(ctx, filter) } else { r2 = ret.Error(2) } diff --git a/pkg/database/plugin.go b/pkg/database/plugin.go index 07cb114965..7cecec2aaa 100644 --- a/pkg/database/plugin.go +++ b/pkg/database/plugin.go @@ -270,51 +270,42 @@ type iIdentitiesCollection interface { // UpsertIdentity - Upsert an identity UpsertIdentity(ctx context.Context, data *core.Identity, optimization UpsertOptimization) (err error) - // UpdateIdentity - Update identity - UpdateIdentity(ctx context.Context, id *fftypes.UUID, update Update) (err error) - // GetIdentityByDID - Get a identity by DID - GetIdentityByDID(ctx context.Context, did string) (org *core.Identity, err error) + GetIdentityByDID(ctx context.Context, namespace, did string) (org *core.Identity, err error) // GetIdentityByName - Get a identity by name GetIdentityByName(ctx context.Context, iType core.IdentityType, namespace, name string) (org *core.Identity, err error) // GetIdentityByID - Get a identity by ID - GetIdentityByID(ctx context.Context, id *fftypes.UUID) (org *core.Identity, err error) + GetIdentityByID(ctx context.Context, namespace string, id *fftypes.UUID) (org *core.Identity, err error) // GetIdentities - Get identities - GetIdentities(ctx context.Context, filter Filter) (org []*core.Identity, res *FilterResult, err error) + GetIdentities(ctx context.Context, namespace string, filter Filter) (org []*core.Identity, res *FilterResult, err error) } type iVerifiersCollection interface { // UpsertVerifier - Upsert an verifier UpsertVerifier(ctx context.Context, data *core.Verifier, optimization UpsertOptimization) (err error) - // UpdateVerifier - Update verifier - UpdateVerifier(ctx context.Context, hash *fftypes.Bytes32, update Update) (err error) - // GetVerifierByValue - Get a verifier by name GetVerifierByValue(ctx context.Context, vType core.VerifierType, namespace, value string) (org *core.Verifier, err error) // GetVerifierByHash - Get a verifier by its hash - GetVerifierByHash(ctx context.Context, hash *fftypes.Bytes32) (org *core.Verifier, err error) + GetVerifierByHash(ctx context.Context, namespace string, hash *fftypes.Bytes32) (org *core.Verifier, err error) // GetVerifiers - Get verifiers - GetVerifiers(ctx context.Context, filter Filter) (org []*core.Verifier, res *FilterResult, err error) + GetVerifiers(ctx context.Context, namespace string, filter Filter) (org []*core.Verifier, res *FilterResult, err error) } type iGroupCollection interface { // UpsertGroup - Upsert a group, with a hint to whether to optmize for existing or new UpsertGroup(ctx context.Context, data *core.Group, optimization UpsertOptimization) (err error) - // UpdateGroup - Update group - UpdateGroup(ctx context.Context, hash *fftypes.Bytes32, update Update) (err error) - // GetGroupByHash - Get a group by ID - GetGroupByHash(ctx context.Context, hash *fftypes.Bytes32) (node *core.Group, err error) + GetGroupByHash(ctx context.Context, namespace string, hash *fftypes.Bytes32) (node *core.Group, err error) // GetGroups - Get groups - GetGroups(ctx context.Context, filter Filter) (node []*core.Group, res *FilterResult, err error) + GetGroups(ctx context.Context, namespace string, filter Filter) (node []*core.Group, res *FilterResult, err error) } type iNonceCollection interface {