Skip to content

Commit ed88dfc

Browse files
committed
Refactor _lifecycle CLI install + tests
Initial refactoring of code and rewrite of unit tests in ginkgo. FAB-14197 #done Change-Id: I4b0705fba33fb1f7d9de29cca0288d70cde20d8e Signed-off-by: Will Lahti <wtlahti@us.ibm.com>
1 parent 15bf213 commit ed88dfc

11 files changed

+676
-319
lines changed

Diff for: internal/peer/lifecycle/chaincode/approveformyorg_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ func TestApproverForMyOrg(t *testing.T) {
229229

230230
func TestApproveForMyOrgCmd(t *testing.T) {
231231
t.Run("success", func(t *testing.T) {
232-
resetFlags()
232+
ResetFlags()
233233
a := newApproverForMyOrgForTest(t, nil, nil)
234234
cmd := approveForMyOrgCmd(nil, a)
235235
a.Command = cmd
@@ -248,7 +248,7 @@ func TestApproveForMyOrgCmd(t *testing.T) {
248248
})
249249

250250
t.Run("failure - invalid signature policy", func(t *testing.T) {
251-
resetFlags()
251+
ResetFlags()
252252
a := newApproverForMyOrgForTest(t, nil, nil)
253253
cmd := approveForMyOrgCmd(nil, a)
254254
a.Command = cmd
@@ -267,7 +267,7 @@ func TestApproveForMyOrgCmd(t *testing.T) {
267267
})
268268

269269
t.Run("failure - invalid collection config file", func(t *testing.T) {
270-
resetFlags()
270+
ResetFlags()
271271
a := newApproverForMyOrgForTest(t, nil, nil)
272272
cmd := approveForMyOrgCmd(nil, a)
273273
a.Command = cmd
@@ -287,7 +287,7 @@ func TestApproveForMyOrgCmd(t *testing.T) {
287287
}
288288

289289
func TestValidateApproveForMyOrgInput(t *testing.T) {
290-
defer resetFlags()
290+
defer ResetFlags()
291291
assert := assert.New(t)
292292

293293
t.Run("success - all required parameters provided", func(t *testing.T) {

Diff for: internal/peer/lifecycle/chaincode/chaincode.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func Cmd(cf *CmdFactory) *cobra.Command {
3838
addFlags(chaincodeCmd)
3939

4040
chaincodeCmd.AddCommand(packageCmd(cf, nil))
41-
chaincodeCmd.AddCommand(installCmd(cf, nil))
41+
chaincodeCmd.AddCommand(InstallCmd(nil))
4242
chaincodeCmd.AddCommand(queryInstalledCmd(cf))
4343
chaincodeCmd.AddCommand(approveForMyOrgCmd(cf, nil))
4444
chaincodeCmd.AddCommand(commitCmd(cf, nil))
@@ -84,11 +84,11 @@ var chaincodeCmd = &cobra.Command{
8484
var flags *pflag.FlagSet
8585

8686
func init() {
87-
resetFlags()
87+
ResetFlags()
8888
}
8989

90-
// Explicitly define a method to facilitate tests
91-
func resetFlags() {
90+
// ResetFlags resets the values of these flags to facilitate tests
91+
func ResetFlags() {
9292
flags = &pflag.FlagSet{}
9393

9494
flags.StringVarP(&chaincodeLang, "lang", "l", "golang", "Language the chaincode is written in")
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
Copyright IBM Corp. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package chaincode_test
8+
9+
import (
10+
"testing"
11+
12+
"github.com/hyperledger/fabric/internal/peer/lifecycle/chaincode"
13+
. "github.com/onsi/ginkgo"
14+
. "github.com/onsi/gomega"
15+
)
16+
17+
//go:generate counterfeiter -o mock/reader.go -fake-name Reader . reader
18+
type reader interface {
19+
chaincode.Reader
20+
}
21+
22+
//go:generate counterfeiter -o mock/endorser_client.go -fake-name EndorserClient . endorserClient
23+
type endorserClient interface {
24+
chaincode.EndorserClient
25+
}
26+
27+
//go:generate counterfeiter -o mock/signer.go -fake-name Signer . signer
28+
type signer interface {
29+
chaincode.Signer
30+
}
31+
32+
func TestChaincode(t *testing.T) {
33+
RegisterFailHandler(Fail)
34+
RunSpecs(t, "Chaincode Suite")
35+
}

Diff for: internal/peer/lifecycle/chaincode/commit_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func TestCommitter(t *testing.T) {
211211

212212
func TestCommitCmd(t *testing.T) {
213213
t.Run("success", func(t *testing.T) {
214-
resetFlags()
214+
ResetFlags()
215215
c := newCommitterForTest(t, nil, nil)
216216
cmd := commitCmd(nil, c)
217217
c.Command = cmd
@@ -229,7 +229,7 @@ func TestCommitCmd(t *testing.T) {
229229
})
230230

231231
t.Run("failure - invalid signature policy", func(t *testing.T) {
232-
resetFlags()
232+
ResetFlags()
233233
c := newCommitterForTest(t, nil, nil)
234234
cmd := commitCmd(nil, c)
235235
c.Command = cmd
@@ -247,7 +247,7 @@ func TestCommitCmd(t *testing.T) {
247247
})
248248

249249
t.Run("failure - invalid collection config file", func(t *testing.T) {
250-
resetFlags()
250+
ResetFlags()
251251
c := newCommitterForTest(t, nil, nil)
252252
cmd := commitCmd(nil, c)
253253
c.Command = cmd
@@ -266,7 +266,7 @@ func TestCommitCmd(t *testing.T) {
266266
}
267267

268268
func TestValidateCommitInput(t *testing.T) {
269-
defer resetFlags()
269+
defer ResetFlags()
270270
assert := assert.New(t)
271271

272272
t.Run("success - all required parameters provided", func(t *testing.T) {

Diff for: internal/peer/lifecycle/chaincode/common.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ func validatePeerConnectionParameters(cmdName string) error {
138138
logger.Warningf("received more TLS root cert files (%d) than peer addresses (%d)", len(tlsRootCertFiles), len(peerAddresses))
139139
}
140140

141-
if viper.GetBool("peer.tls.enabled") {
142-
if len(tlsRootCertFiles) != len(peerAddresses) {
143-
return errors.Errorf("number of peer addresses (%d) does not match the number of TLS root cert files (%d)", len(peerAddresses), len(tlsRootCertFiles))
144-
}
145-
} else {
141+
if !viper.GetBool("peer.tls.enabled") {
146142
tlsRootCertFiles = nil
143+
return nil
144+
}
145+
if len(tlsRootCertFiles) != len(peerAddresses) {
146+
return errors.Errorf("number of peer addresses (%d) does not match the number of TLS root cert files (%d)", len(peerAddresses), len(tlsRootCertFiles))
147147
}
148148

149149
return nil

Diff for: internal/peer/lifecycle/chaincode/common_test.go

+16-19
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func TestGetOrdererEndpointFail(t *testing.T) {
7272
}
7373

7474
func TestValidatePeerConnectionParams(t *testing.T) {
75-
defer resetFlags()
75+
defer ResetFlags()
7676
defer viper.Reset()
7777
assert := assert.New(t)
7878
cleanup := configtest.SetDevFabricConfigPath(t)
@@ -82,7 +82,7 @@ func TestValidatePeerConnectionParams(t *testing.T) {
8282
viper.Set("peer.tls.enabled", false)
8383

8484
// failure - more than one peer and TLS root cert for package
85-
resetFlags()
85+
ResetFlags()
8686
peerAddresses = []string{"peer0", "peer1"}
8787
tlsRootCertFiles = []string{"cert0", "cert1"}
8888
err := validatePeerConnectionParameters("package")
@@ -91,35 +91,32 @@ func TestValidatePeerConnectionParams(t *testing.T) {
9191

9292
// success - peer provided and no TLS root certs
9393
// TLS disabled
94-
resetFlags()
94+
ResetFlags()
9595
peerAddresses = []string{"peer0"}
9696
err = validatePeerConnectionParameters("package")
9797
assert.NoError(err)
98-
assert.Nil(tlsRootCertFiles)
9998

10099
// success - more TLS root certs than peers - approveformyorg
101100
// TLS disabled
102-
resetFlags()
101+
ResetFlags()
103102
peerAddresses = []string{"peer0"}
104103
tlsRootCertFiles = []string{"cert0", "cert1"}
105104
err = validatePeerConnectionParameters("approveformyorg")
106105
assert.NoError(err)
107-
assert.Nil(tlsRootCertFiles)
108106

109107
// success - multiple peers and no TLS root certs - approveformyorg
110108
// TLS disabled
111-
resetFlags()
109+
ResetFlags()
112110
peerAddresses = []string{"peer0", "peer1"}
113111
err = validatePeerConnectionParameters("approveformyorg")
114112
assert.NoError(err)
115-
assert.Nil(tlsRootCertFiles)
116113

117114
// TLS enabled
118115
viper.Set("peer.tls.enabled", true)
119116

120117
// failure - uneven number of peers and TLS root certs - commit
121118
// TLS enabled
122-
resetFlags()
119+
ResetFlags()
123120
peerAddresses = []string{"peer0", "peer1"}
124121
tlsRootCertFiles = []string{"cert0"}
125122
err = validatePeerConnectionParameters("commit")
@@ -128,42 +125,42 @@ func TestValidatePeerConnectionParams(t *testing.T) {
128125

129126
// success - more than one peer and TLS root certs - commit
130127
// TLS enabled
131-
resetFlags()
128+
ResetFlags()
132129
peerAddresses = []string{"peer0", "peer1"}
133130
tlsRootCertFiles = []string{"cert0", "cert1"}
134131
err = validatePeerConnectionParameters("commit")
135132
assert.NoError(err)
136133

137134
// failure - connection profile doesn't exist
138-
resetFlags()
135+
ResetFlags()
139136
connectionProfilePath = "blah"
140137
err = validatePeerConnectionParameters("approveformyorg")
141138
assert.Error(err)
142139
assert.Contains(err.Error(), "error reading connection profile")
143140

144141
// failure - connection profile has peer defined in channel config but
145142
// not in peer config
146-
resetFlags()
143+
ResetFlags()
147144
channelID = "mychannel"
148145
connectionProfilePath = "../../common/testdata/connectionprofile-uneven.yaml"
149146
err = validatePeerConnectionParameters("approveformyorg")
150147
assert.Error(err)
151148
assert.Contains(err.Error(), "defined in the channel config but doesn't have associated peer config")
152149

153150
// success - connection profile exists
154-
resetFlags()
151+
ResetFlags()
155152
channelID = "mychannel"
156153
connectionProfilePath = "../../common/testdata/connectionprofile.yaml"
157154
err = validatePeerConnectionParameters("commit")
158155
assert.NoError(err)
159156
}
160157

161158
func TestInitCmdFactoryFailures(t *testing.T) {
162-
defer resetFlags()
159+
defer ResetFlags()
163160
assert := assert.New(t)
164161

165162
// failure validating peer connection parameters
166-
resetFlags()
163+
ResetFlags()
167164
peerAddresses = []string{"peer0", "peer1"}
168165
tlsRootCertFiles = []string{"cert0", "cert1"}
169166
cf, err := InitCmdFactory("package", true, false)
@@ -172,7 +169,7 @@ func TestInitCmdFactoryFailures(t *testing.T) {
172169
assert.Nil(cf)
173170

174171
// failure - no peers supplied and endorser client is needed
175-
resetFlags()
172+
ResetFlags()
176173
peerAddresses = []string{}
177174
cf, err = InitCmdFactory("package", true, false)
178175
assert.Error(err)
@@ -181,7 +178,7 @@ func TestInitCmdFactoryFailures(t *testing.T) {
181178

182179
// failure - orderer client is needed, ordering endpoint is empty and no
183180
// endorser client supplied
184-
resetFlags()
181+
ResetFlags()
185182
peerAddresses = nil
186183
cf, err = InitCmdFactory("acceptformyorg", false, true)
187184
assert.Error(err)
@@ -190,7 +187,7 @@ func TestInitCmdFactoryFailures(t *testing.T) {
190187
}
191188

192189
func TestDeliverGroupConnect(t *testing.T) {
193-
defer resetFlags()
190+
defer ResetFlags()
194191
g := NewGomegaWithT(t)
195192

196193
// success
@@ -283,7 +280,7 @@ func TestDeliverGroupConnect(t *testing.T) {
283280
}
284281

285282
func TestDeliverGroupWait(t *testing.T) {
286-
defer resetFlags()
283+
defer ResetFlags()
287284
g := NewGomegaWithT(t)
288285

289286
// success

0 commit comments

Comments
 (0)