/
mockprovider.go
59 lines (48 loc) · 1.97 KB
/
mockprovider.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package mockprovider
import (
"github.com/hyperledger/fabric-sdk-go/pkg/client/common/selection/staticselection"
"github.com/hyperledger/fabric-sdk-go/pkg/common/options"
contextApi "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/context"
fabApi "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab"
fcmocks "github.com/hyperledger/fabric-sdk-go/pkg/fab/mocks"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk/factory/defsvc"
discoveryService "github.com/securekey/fabric-snaps/membershipsnap/pkg/discovery/local/service"
"github.com/securekey/fabric-snaps/membershipsnap/pkg/membership"
)
// Factory mocks out the channel provider
type Factory struct {
defsvc.ProviderFactory
}
// CreateChannelProvider returns a new default implementation of channel provider
func (f *Factory) CreateChannelProvider(config fabApi.EndpointConfig, opts ...options.Opt) (fabApi.ChannelProvider, error) {
return &mockChannelProvider{
ChannelProvider: &mockChannelProvider{},
}, nil
}
type mockChannelProvider struct {
fabApi.ChannelProvider
}
func (cp *mockChannelProvider) Initialize(providers contextApi.Providers) error {
chProvider, err := fcmocks.NewMockChannelProvider(providers)
if err != nil {
return err
}
cp.ChannelProvider = chProvider
return nil
}
func (cp *mockChannelProvider) ChannelService(ctx fabApi.ClientContext, channelID string) (fabApi.ChannelService, error) {
memService := membership.NewServiceWithMocks([]byte(ctx.Identifier().MSPID), membership.NewLocalNetworkChannelMember("internalhost1:1000", 1000))
discovery := discoveryService.New(channelID, ctx.EndpointConfig(), memService)
selection, err := staticselection.NewService(discovery)
if err != nil {
return nil, err
}
mockChannelService := &fcmocks.MockChannelService{}
mockChannelService.SetDiscovery(discovery)
mockChannelService.SetSelection(selection)
return mockChannelService, nil
}