Skip to content

Commit 92c1c36

Browse files
committed
more tests
Signed-off-by: Angelo De Caro <adc@zurich.ibm.com>
1 parent bd84eb4 commit 92c1c36

File tree

8 files changed

+107
-38
lines changed

8 files changed

+107
-38
lines changed

token/services/network/network.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ type Envelope struct {
9898
e driver.Envelope
9999
}
100100

101+
func NewEnvelope(e driver.Envelope) *Envelope {
102+
return &Envelope{e: e}
103+
}
104+
101105
func (e *Envelope) Bytes() ([]byte, error) {
102106
return e.e.Bytes()
103107
}

token/services/ttx/dep/mock/network.go

Lines changed: 75 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/services/ttx/dep/providers.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type Network interface {
3434
AnonymousIdentity() (view.Identity, error)
3535
LocalMembership() *network.LocalMembership
3636
ComputeTxID(n *network.TxID) string
37+
Broadcast(ctx context.Context, blob interface{}) error
3738
}
3839

3940
// NetworkProvider given access to instances of the Network interface.

token/services/ttx/endorse.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (s *EndorseView) Call(context view.Context) (interface{}, error) {
7272
// cache the token request into the tokens db, should we use the received token request?
7373
sp, err := GetStorageProvider(context)
7474
if err != nil {
75-
return nil, errors.Wrapf(err, "failed to storage provider")
75+
return nil, errors.Wrapf(errors.Join(err, ErrDepNotAvailableInContext), "storage provider")
7676
}
7777
if err := sp.CacheRequest(context.Context(), s.tx.TMSID(), s.tx.TokenRequest); err != nil {
7878
logger.Warnf("failed to cache token request [%s], this might cause delay, investigate when possible: [%s]", s.tx.TokenRequest.Anchor, err)
@@ -180,7 +180,7 @@ func (s *EndorseView) ack(context view.Context, msg []byte) error {
180180
// Send back an acknowledgement
181181
idProvider, err := dep.GetNetworkIdentityProvider(context)
182182
if err != nil {
183-
return errors.Wrapf(err, "failed getting identity provider")
183+
return errors.Wrapf(errors.Join(err, ErrDepNotAvailableInContext), "network identity provider")
184184
}
185185
defaultIdentity := idProvider.DefaultIdentity()
186186
logger.DebugfContext(context.Context(), "signing ack response [%s] with identity [%s]", utils.Hashable(msg), defaultIdentity)

token/services/ttx/endorse_test.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,8 @@ func TestEndorseView(t *testing.T) {
412412
return c
413413
},
414414
expectError: true,
415-
errorContains: "failed to storage provider",
415+
expectErr: ttx.ErrDepNotAvailableInContext,
416+
errorContains: "storage provider",
416417
verify: func(ctx *TestEndorseViewContext, _ any) {
417418
assert.Equal(t, 2, ctx.session.SendWithContextCallCount())
418419
},
@@ -425,7 +426,8 @@ func TestEndorseView(t *testing.T) {
425426
return c
426427
},
427428
expectError: true,
428-
errorContains: "failed getting identity provider",
429+
expectErr: ttx.ErrDepNotAvailableInContext,
430+
errorContains: "identity provider",
429431
verify: func(ctx *TestEndorseViewContext, _ any) {
430432
assert.Equal(t, 1, ctx.session.SendWithContextCallCount())
431433
},
@@ -489,19 +491,6 @@ func TestEndorseView(t *testing.T) {
489491
assert.Equal(t, 1, ctx.session.SendWithContextCallCount())
490492
},
491493
},
492-
{
493-
name: "failed reading signature request (closed channel)",
494-
prepare: func() *TestEndorseViewContext {
495-
c := newTestEndorseViewContext(t, nil)
496-
close(c.ch)
497-
return c
498-
},
499-
expectError: true,
500-
errorContains: "failed reading signature request",
501-
verify: func(ctx *TestEndorseViewContext, _ any) {
502-
assert.Equal(t, 0, ctx.session.SendWithContextCallCount())
503-
},
504-
},
505494
{
506495
name: "multiple signers",
507496
prepare: func() *TestEndorseViewContext {

token/services/ttx/ordering.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import (
1111

1212
"github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
1313
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
14-
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network"
15-
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
14+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep"
1615
)
1716

1817
type orderingView struct {
@@ -23,11 +22,7 @@ type orderingView struct {
2322
// The view does the following:
2423
// 1. It broadcasts the token transaction to the proper backend.
2524
func NewOrderingView(tx *Transaction, opts ...TxOption) *orderingView {
26-
return NewOrderingViewWithOpts(append([]TxOption{WithTransactions(tx)}, opts...)...)
27-
}
28-
29-
func NewOrderingViewWithOpts(opts ...TxOption) *orderingView {
30-
return &orderingView{opts: opts}
25+
return &orderingView{opts: append([]TxOption{WithTransactions(tx)}, opts...)}
3126
}
3227

3328
// Call execute the view.
@@ -44,12 +39,12 @@ func (o *orderingView) Call(context view.Context) (interface{}, error) {
4439
}
4540

4641
// cache the token request into the tokens db
47-
t, err := tokens.GetService(context, options.Transaction.TMSID())
42+
storageProvider, err := GetStorageProvider(context)
4843
if err != nil {
49-
return nil, errors.Wrapf(err, "failed to get tokens db for [%s]", options.Transaction.TMSID())
44+
return nil, errors.Wrapf(err, "failed to get storage provider")
5045
}
5146
if !options.NoCachingRequest {
52-
if err := t.CacheRequest(context.Context(), options.Transaction.TMSID(), options.Transaction.TokenRequest); err != nil {
47+
if err := storageProvider.CacheRequest(context.Context(), options.Transaction.TMSID(), options.Transaction.TokenRequest); err != nil {
5348
logger.WarnfContext(context.Context(), "failed to cache token request [%s], this might cause delay, investigate when possible: [%s]", options.Transaction.TokenRequest.Anchor, err)
5449
}
5550
}
@@ -60,11 +55,15 @@ func (o *orderingView) broadcast(context view.Context, transaction *Transaction)
6055
if transaction == nil {
6156
return errors.Errorf("transaction is nil")
6257
}
63-
nw := network.GetInstance(context, transaction.Network(), transaction.Channel())
64-
if nw == nil {
65-
return errors.Errorf("network [%s] not found", transaction.Network())
58+
np, err := dep.GetNetworkProvider(context)
59+
if err != nil {
60+
return errors.Join(err, ErrDepNotAvailableInContext)
61+
}
62+
network, err := np.GetNetwork(transaction.Network(), transaction.Channel())
63+
if err != nil {
64+
return errors.WithMessagef(err, "failed to get network [%s]", transaction.Network())
6665
}
67-
if err := nw.Broadcast(context.Context(), transaction.Envelope); err != nil {
66+
if err := network.Broadcast(context.Context(), transaction.Envelope); err != nil {
6867
return errors.WithMessagef(err, "failed to broadcast token transaction [%s]", transaction.ID())
6968
}
7069
return nil

token/services/ttx/storage.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ func GetStorageProvider(sp token.ServiceProvider) (StorageProvider, error) {
4040
if err != nil {
4141
return nil, err
4242
}
43-
return s.(StorageProvider), nil
43+
provider, ok := s.(StorageProvider)
44+
if !ok {
45+
panic("implementation error, type must be StorageProvider")
46+
}
47+
return provider, nil
4448
}
4549

4650
// StoreTransactionRecords stores the transaction records extracted from the passed transaction to the

token/services/ttx/transaction.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,9 @@ func NewTransaction(context view.Context, signer view.Identity, opts ...TxOption
8585
return nil, errors.WithMessagef(err, "failed compiling tx options")
8686
}
8787

88-
tms, err := dep.GetManagementService(
89-
context,
90-
token.WithTMSID(txOpts.TMSID),
91-
)
88+
tms, err := dep.GetManagementService(context, token.WithTMSID(txOpts.TMSID))
9289
if err != nil {
93-
return nil, errors.Wrap(err, "failed to get token management service")
90+
return nil, errors.Join(err, ErrDepNotAvailableInContext)
9491
}
9592

9693
networkProvider, err := dep.GetNetworkProvider(context)
@@ -166,7 +163,7 @@ func NewTransactionFromBytes(context view.Context, raw []byte) (*Transaction, er
166163
// check there exists a tms for this payload
167164
tms, err := dep.GetManagementService(context, token.WithTMSID(payload.tmsID))
168165
if err != nil {
169-
return nil, errors.Wrap(err, "failed to get token management service")
166+
return nil, errors.Join(err, ErrDepNotAvailableInContext)
170167
}
171168
if !tms.ID().Equal(payload.tmsID) {
172169
return nil, errors.Errorf("failed to find tms for tmsID [%s], got [%s]", payload.tmsID, tms.ID())

0 commit comments

Comments
 (0)