Skip to content

Commit a135aa7

Browse files
authored
Merge branch 'main' into fix/auditor-check-inputs-and-recipients
2 parents 1031d33 + e1ebca5 commit a135aa7

50 files changed

Lines changed: 4499 additions & 272 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

token/services/auditor/mock/audit_transaction_store.go

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

token/services/config/configuration.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ func (m *Configuration) Validate() error {
5656
return nil
5757
}
5858

59+
// SetValidators sets the validators for this configuration.
60+
func (m *Configuration) SetValidators(validators []Validator) {
61+
m.validators = validators
62+
}
63+
5964
func (m *Configuration) ID() driver.TMSID {
6065
return m.tmsID
6166
}
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
/*
2+
Copyright IBM Corp. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package config_test
8+
9+
import (
10+
"testing"
11+
12+
"github.com/hyperledger-labs/fabric-token-sdk/token"
13+
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
14+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/config"
15+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/config/mocks"
16+
"github.com/stretchr/testify/assert"
17+
"github.com/stretchr/testify/require"
18+
)
19+
20+
func TestConfiguration_Validate(t *testing.T) {
21+
cp := &mocks.Provider{}
22+
tmsID := driver.TMSID{Network: "net", Channel: "ch", Namespace: "ns"}
23+
c := config.NewConfiguration(cp, "id", tmsID)
24+
25+
// Valid
26+
err := c.Validate()
27+
require.NoError(t, err)
28+
29+
// Missing Network
30+
tmsID.Network = ""
31+
c = config.NewConfiguration(cp, "id", tmsID)
32+
err = c.Validate()
33+
require.Error(t, err)
34+
assert.Contains(t, err.Error(), "missing required field 'network'")
35+
36+
// Missing Namespace
37+
tmsID.Network = "net"
38+
tmsID.Namespace = ""
39+
c = config.NewConfiguration(cp, "id", tmsID)
40+
err = c.Validate()
41+
require.Error(t, err)
42+
assert.Contains(t, err.Error(), "missing required field 'namespace'")
43+
44+
// Custom Validator
45+
tmsID.Namespace = "ns"
46+
c = config.NewConfiguration(cp, "id", tmsID)
47+
validator := &mocks.Validator{}
48+
c.SetValidators([]config.Validator{validator})
49+
50+
validator.ValidateReturns(nil)
51+
err = c.Validate()
52+
require.NoError(t, err)
53+
assert.Equal(t, 1, validator.ValidateCallCount())
54+
55+
validator.ValidateReturns(assert.AnError)
56+
err = c.Validate()
57+
require.Error(t, err)
58+
assert.Equal(t, 2, validator.ValidateCallCount())
59+
}
60+
61+
func TestConfiguration_Serialize(t *testing.T) {
62+
cp := &mocks.Provider{}
63+
tmsID := driver.TMSID{Network: "net", Channel: "ch", Namespace: "ns"}
64+
c := config.NewConfiguration(cp, "old_id", tmsID)
65+
66+
// Test Unmarshal Error
67+
cp.UnmarshalKeyReturns(assert.AnError)
68+
_, err := c.Serialize(token.TMSID{Network: "new"})
69+
require.Error(t, err)
70+
assert.Contains(t, err.Error(), "failed unmarshalling key")
71+
72+
// Test Success
73+
cp.UnmarshalKeyStub = func(key string, rawVal interface{}) error {
74+
*rawVal.(*map[string]any) = map[string]any{"key": "value"}
75+
76+
return nil
77+
}
78+
raw, err := c.Serialize(token.TMSID{Network: "new_net", Channel: "new_ch", Namespace: "new_ns"})
79+
require.NoError(t, err)
80+
assert.NotEmpty(t, raw)
81+
assert.Contains(t, string(raw), "new_net")
82+
assert.Contains(t, string(raw), "new_ch")
83+
assert.Contains(t, string(raw), "new_ns")
84+
}
85+
86+
func TestConfiguration_Wrappers(t *testing.T) {
87+
cp := &mocks.Provider{}
88+
tmsID := driver.TMSID{Network: "net", Channel: "ch", Namespace: "ns"}
89+
c := config.NewConfiguration(cp, "id", tmsID)
90+
91+
// ID
92+
assert.Equal(t, tmsID, c.ID())
93+
94+
// TranslatePath
95+
cp.TranslatePathReturns("translated")
96+
assert.Equal(t, "translated", c.TranslatePath("path"))
97+
98+
// UnmarshalKey
99+
cp.UnmarshalKeyReturns(nil)
100+
err := c.UnmarshalKey("key", nil)
101+
require.NoError(t, err)
102+
assert.Equal(t, 1, cp.UnmarshalKeyCallCount())
103+
104+
// GetString
105+
cp.GetStringReturns("string")
106+
assert.Equal(t, "string", c.GetString("key"))
107+
108+
// GetBool
109+
cp.GetBoolReturns(true)
110+
assert.True(t, c.GetBool("key"))
111+
112+
// IsSet
113+
cp.IsSetReturns(true)
114+
assert.True(t, c.IsSet("key"))
115+
}

token/services/config/generate.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
Copyright IBM Corp. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package config
8+
9+
//go:generate counterfeiter -o mocks/provider.go -fake-name Provider . Provider
10+
//go:generate counterfeiter -o mocks/validate_configuration.go -fake-name ValidateConfiguration . ValidateConfiguration
11+
//go:generate counterfeiter -o mocks/validator.go -fake-name Validator . Validator

0 commit comments

Comments
 (0)