forked from hyperledger/fabric-sdk-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mocktransactor.go
58 lines (47 loc) · 1.95 KB
/
mocktransactor.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
/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package mocks
import (
"time"
"github.com/akorosmezey/fabric-sdk-go/pkg/common/providers/context"
"github.com/akorosmezey/fabric-sdk-go/pkg/common/providers/fab"
contextImpl "github.com/akorosmezey/fabric-sdk-go/pkg/context"
"github.com/akorosmezey/fabric-sdk-go/pkg/fab/txn"
"github.com/pkg/errors"
)
// MockTransactor provides an implementation of Transactor that exposes all its context.
type MockTransactor struct {
Ctx context.Client
ChannelID string
Orderers []fab.Orderer
Err error
}
// CreateTransactionHeader creates a Transaction Header based on the current context.
func (t *MockTransactor) CreateTransactionHeader(opts ...fab.TxnHeaderOpt) (fab.TransactionHeader, error) {
txh, err := txn.NewHeader(t.Ctx, t.ChannelID)
if err != nil {
return nil, errors.WithMessage(err, "new transaction ID failed")
}
return txh, nil
}
// SendTransactionProposal sends a TransactionProposal to the target peers.
func (t *MockTransactor) SendTransactionProposal(proposal *fab.TransactionProposal, targets []fab.ProposalProcessor) ([]*fab.TransactionProposalResponse, error) {
if t.Err != nil {
return nil, t.Err
}
rqtx, cancel := contextImpl.NewRequest(t.Ctx, contextImpl.WithTimeout(10*time.Second))
defer cancel()
return txn.SendProposal(rqtx, proposal, targets)
}
// CreateTransaction create a transaction with proposal response.
func (t *MockTransactor) CreateTransaction(request fab.TransactionRequest) (*fab.Transaction, error) {
return txn.New(request)
}
// SendTransaction send a transaction to the chain’s orderer service (one or more orderer endpoints) for consensus and committing to the ledger.
func (t *MockTransactor) SendTransaction(tx *fab.Transaction) (*fab.TransactionResponse, error) {
rqtx, cancel := contextImpl.NewRequest(t.Ctx, contextImpl.WithTimeout(10*time.Second))
defer cancel()
return txn.Send(rqtx, tx, t.Orderers)
}