From c694b83eeb2d17540e1a6de953f357782bae7889 Mon Sep 17 00:00:00 2001 From: Angelo De Caro Date: Tue, 17 Dec 2024 13:10:37 +0100 Subject: [PATCH] enable golangci Signed-off-by: Angelo De Caro --- .github/workflows/golangci-lint.yml | 58 +++++++++++++++++ integration/nwo/fsc/fsc.go | 6 +- integration/nwo/fsc/fsc_test.go | 6 +- platform/common/core/generic/vault/helpers.go | 12 ++-- .../vault/txidstore/simpletxidstore_test.go | 2 +- .../core/generic/msp/idemix/provider_test.go | 4 +- .../services/client/view/cmd/config_test.go | 2 +- platform/view/services/comm/test_utils.go | 4 +- platform/view/services/db/dbtest/bench.go | 6 +- .../services/db/driver/badger/badger_test.go | 27 -------- .../db/driver/unversioned/unversioned_test.go | 6 -- .../services/events/simple/eventbus_test.go | 8 --- .../view/services/flogging/logging_test.go | 0 platform/view/services/flogging/zap_test.go | 0 .../view/services/grpc/connection_test.go | 63 ------------------- platform/view/services/grpc/server_test.go | 46 +++++--------- .../services/grpc/serverstatshandler_test.go | 7 ++- .../operations/operations_suite_test.go | 61 ------------------ .../server/web/middleware/chain_test.go | 4 +- .../web/middleware/middleware_suite_test.go | 8 --- 20 files changed, 100 insertions(+), 230 deletions(-) create mode 100644 .github/workflows/golangci-lint.yml create mode 100644 platform/view/services/flogging/logging_test.go create mode 100644 platform/view/services/flogging/zap_test.go diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml new file mode 100644 index 000000000..3572128e5 --- /dev/null +++ b/.github/workflows/golangci-lint.yml @@ -0,0 +1,58 @@ +name: golangci-lint + +on: + push: + branches: + - master + - main + pull_request: + # The branches below must be a subset of the branches above + branches: [ main ] + +permissions: + contents: read + # Optional: allow read access to pull request. Use with `only-new-issues` option. + # pull-requests: read + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: "go.mod" + cache: false + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + # Require: The version of golangci-lint to use. + # When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version. + # When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit. + version: v1.60.1 + + # Optional: working directory, useful for monorepos + # working-directory: somedir + + # Optional: golangci-lint command line arguments. + # + # Note: By default, the `.golangci.yml` file should be at the root of the repository. + # The location of the configuration file can be changed by using `--config=` + args: --timeout=30m + + # Optional: show only new issues if it's a pull request. The default value is `false`. + # only-new-issues: true + + # Optional: if set to true, then all caching functionality will be completely disabled, + # takes precedence over all other caching options. + # skip-cache: true + + # Optional: if set to true, then the action won't cache or restore ~/go/pkg. + # skip-pkg-cache: true + + # Optional: if set to true, then the action won't cache or restore ~/.cache/go-build. + # skip-build-cache: true + + # Optional: The mode to install golangci-lint. It can be 'binary' or 'goinstall'. + # install-mode: "goinstall" \ No newline at end of file diff --git a/integration/nwo/fsc/fsc.go b/integration/nwo/fsc/fsc.go index 84cc39571..3bfab7e41 100755 --- a/integration/nwo/fsc/fsc.go +++ b/integration/nwo/fsc/fsc.go @@ -558,7 +558,7 @@ func (p *Platform) fscNodeCommand(node *node2.Replica, command common.Command, t if p.Context.IgnoreSigHUP() { cmd.Env = append(cmd.Env, "FSCNODE_SIGHUP_IGNORE=true") } - //cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} + // cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if p.Topology.GRPCLogging { cmd.Env = append(cmd.Env, "GRPC_GO_LOG_VERBOSITY_LEVEL=2") @@ -812,7 +812,7 @@ func (p *Platform) GetAdminSigningIdentity(peer *node2.Peer) (view.SigningIdenti func (p *Platform) listTLSCACertificates() []string { fileName2Path := make(map[string]string) - filepath.Walk(filepath.Join(p.Context.RootDir(), "fsc", "crypto"), func(path string, info os.FileInfo, err error) error { + Expect(filepath.Walk(filepath.Join(p.Context.RootDir(), "fsc", "crypto"), func(path string, info os.FileInfo, err error) error { if err != nil { return err } @@ -822,7 +822,7 @@ func (p *Platform) listTLSCACertificates() []string { fileName2Path[info.Name()] = path } return nil - }) + })).ToNot(HaveOccurred()) var tlsCACertificates []string for _, path := range fileName2Path { diff --git a/integration/nwo/fsc/fsc_test.go b/integration/nwo/fsc/fsc_test.go index f0ffc9282..fc3255749 100644 --- a/integration/nwo/fsc/fsc_test.go +++ b/integration/nwo/fsc/fsc_test.go @@ -61,7 +61,7 @@ var _ = Describe("EndToEnd", func() { ExpectedMainOne, err := os.ReadFile("./testdata/main/main.go.output") Expect(err).ToNot(HaveOccurred()) - Expect(string(buf.Bytes())).To(BeEquivalentTo(string(ExpectedMainOne))) + Expect(buf.String()).To(BeEquivalentTo(string(ExpectedMainOne))) // Expect(os.WriteFile("./testdata/main/main.go.output", buf.Bytes(), 0777)).ToNot(HaveOccurred()) }) @@ -89,8 +89,8 @@ var _ = Describe("EndToEnd", func() { ExpectedMainOne, err := os.ReadFile("./testdata/main/main.go.output") Expect(err).ToNot(HaveOccurred()) - Expect(string(buf.Bytes())).To(BeEquivalentTo(string(ExpectedMainOne))) - //Expect(os.WriteFile("./testdata/main/main.go.output", buf.Bytes(), 0777)).ToNot(HaveOccurred()) + Expect(buf.String()).To(BeEquivalentTo(string(ExpectedMainOne))) + // Expect(os.WriteFile("./testdata/main/main.go.output", buf.Bytes(), 0777)).ToNot(HaveOccurred()) }) }) diff --git a/platform/common/core/generic/vault/helpers.go b/platform/common/core/generic/vault/helpers.go index 038dd0a82..3ceaeb21b 100644 --- a/platform/common/core/generic/vault/helpers.go +++ b/platform/common/core/generic/vault/helpers.go @@ -377,8 +377,8 @@ func TTestShardLikeCommit(t *testing.T, ddb VersionedPersistence, vp artifactsPr } rwsb.ReadSet.Add(ns, k1, versionBlockTxNumToBytes(35, 1)) rwsb.ReadSet.Add(ns, k2, versionBlockTxNumToBytes(37, 2)) - rwsb.WriteSet.Add(ns, k1, []byte("k1FromTxidInvalid")) - rwsb.WriteSet.Add(ns, k2, []byte("k2FromTxidInvalid")) + assert.NoError(t, rwsb.WriteSet.Add(ns, k1, []byte("k1FromTxidInvalid"))) + assert.NoError(t, rwsb.WriteSet.Add(ns, k2, []byte("k2FromTxidInvalid"))) marshaller := vp.NewMarshaller() rwsBytes, err := marshaller.Marshal("pineapple", rwsb) assert.NoError(t, err) @@ -423,8 +423,8 @@ func TTestShardLikeCommit(t *testing.T, ddb VersionedPersistence, vp artifactsPr } rwsb.ReadSet.Add(ns, k1, versionBlockTxNumToBytes(35, 1)) rwsb.ReadSet.Add(ns, k2, versionBlockTxNumToBytes(37, 3)) - rwsb.WriteSet.Add(ns, k1, []byte("k1FromTxidValid")) - rwsb.WriteSet.Add(ns, k2, []byte("k2FromTxidValid")) + assert.NoError(t, rwsb.WriteSet.Add(ns, k1, []byte("k1FromTxidValid"))) + assert.NoError(t, rwsb.WriteSet.Add(ns, k2, []byte("k2FromTxidValid"))) rwsBytes, err = marshaller.Marshal("pineapple", rwsb) assert.NoError(t, err) @@ -561,7 +561,7 @@ func TTestMerge(t *testing.T, ddb VersionedPersistence, vp artifactsProvider) { rwsb.ReadSet.Add(ns, k1, versionBlockTxNumToBytes(35, 1)) rwsb.ReadSet.Add(ns, ne2Key, nil) rwsb.WriteSet.Add(ns, k1, []byte("newv1")) - rwsb.MetaWriteSet.Add(ns, k1, map[string][]byte{"k1": []byte("v1")}) + assert.NoError(t, rwsb.MetaWriteSet.Add(ns, k1, map[string][]byte{"k1": []byte("v1")})) m := vp.NewMarshaller() rwsBytes, err := m.Marshal("pineapple", rwsb) assert.NoError(t, err) @@ -631,7 +631,7 @@ func TTestMerge(t *testing.T, ddb VersionedPersistence, vp artifactsProvider) { MetaWrites: map[string]KeyedMetaWrites{}, }, } - rwsb.MetaWriteSet.Add(ns, k3, map[string][]byte{"k": []byte("v")}) + assert.NoError(t, rwsb.MetaWriteSet.Add(ns, k3, map[string][]byte{"k": []byte("v")})) rwsBytes, err = m.Marshal("pineapple", rwsb) assert.NoError(t, err) diff --git a/platform/common/core/generic/vault/txidstore/simpletxidstore_test.go b/platform/common/core/generic/vault/txidstore/simpletxidstore_test.go index 227de9e9a..ceca9682e 100644 --- a/platform/common/core/generic/vault/txidstore/simpletxidstore_test.go +++ b/platform/common/core/generic/vault/txidstore/simpletxidstore_test.go @@ -284,7 +284,7 @@ func testTXIDStore(t *testing.T, store *SimpleTXIDStore[vc]) { } assert.Equal(t, []string{"txid1", "txid2", "txid10", "txid12", "txid21", "txid100", "txid200", "txid1025"}, txids) - it, err = store.Iterator(&driver.SeekPos{Txid: "boh"}) + _, err = store.Iterator(&driver.SeekPos{Txid: "boh"}) assert.EqualError(t, err, "txid boh was not found") it, err = store.Iterator(&driver.SeekPos{Txid: "txid12"}) diff --git a/platform/fabric/core/generic/msp/idemix/provider_test.go b/platform/fabric/core/generic/msp/idemix/provider_test.go index ed6f81e18..967917c31 100644 --- a/platform/fabric/core/generic/msp/idemix/provider_test.go +++ b/platform/fabric/core/generic/msp/idemix/provider_test.go @@ -260,9 +260,9 @@ func TestProvider_DeserializeSigner(t *testing.T) { assert.NoError(t, verifier.Verify(msg, sigma)) // Try to deserialize id2 with provider for id, must fail - signer, err = p.DeserializeSigner(id2) + _, err = p.DeserializeSigner(id2) assert.Error(t, err) - verifier, err = p.DeserializeVerifier(id2) + _, err = p.DeserializeVerifier(id2) assert.NoError(t, err) // this must work diff --git a/platform/view/services/client/view/cmd/config_test.go b/platform/view/services/client/view/cmd/config_test.go index 4f36b313c..104a953ad 100644 --- a/platform/view/services/client/view/cmd/config_test.go +++ b/platform/view/services/client/view/cmd/config_test.go @@ -18,7 +18,7 @@ import ( ) func TestConfig(t *testing.T) { - rand.Seed(time.Now().UnixNano()) + rand.New(rand.NewSource(time.Now().UnixNano())) configFilePath := filepath.Join(os.TempDir(), fmt.Sprintf("config-%d.yaml", rand.Int())) fmt.Println(configFilePath) t.Run("save and load a config", func(t *testing.T) { diff --git a/platform/view/services/comm/test_utils.go b/platform/view/services/comm/test_utils.go index 652082253..6f7798e31 100644 --- a/platform/view/services/comm/test_utils.go +++ b/platform/view/services/comm/test_utils.go @@ -109,7 +109,7 @@ func SessionsTestRound(t *testing.T, bootstrapNode *HostNode, node *HostNode) { assert.NoError(t, err) assert.NotNil(t, session) - session.Send([]byte("ciaoback")) + assert.NoError(t, session.Send([]byte("ciaoback"))) sessionMsgs := session.Receive() msg = <-sessionMsgs @@ -156,7 +156,7 @@ func SessionsForMPCTestRound(t *testing.T, bootstrapNode *HostNode, node *HostNo msg := <-sessionMsgs assert.Equal(t, []byte("ciao"), msg.Payload) - session.Send([]byte("ciaoback")) + assert.NoError(t, session.Send([]byte("ciaoback"))) session.Close() diff --git a/platform/view/services/db/dbtest/bench.go b/platform/view/services/db/dbtest/bench.go index 149b98e46..ab7c06dd2 100644 --- a/platform/view/services/db/dbtest/bench.go +++ b/platform/view/services/db/dbtest/bench.go @@ -22,9 +22,9 @@ var ( ) func ReadExisting(b *testing.B, db driver.TransactionalVersionedPersistence) { - db.BeginUpdate() - db.SetState(namespace, key, driver.VersionedValue{Raw: payload}) - db.Commit() + assert.NoError(b, db.BeginUpdate()) + assert.NoError(b, db.SetState(namespace, key, driver.VersionedValue{Raw: payload})) + assert.NoError(b, db.Commit()) var v []byte b.ResetTimer() diff --git a/platform/view/services/db/driver/badger/badger_test.go b/platform/view/services/db/driver/badger/badger_test.go index 4757fe27c..ec79e6fa1 100644 --- a/platform/view/services/db/driver/badger/badger_test.go +++ b/platform/view/services/db/driver/badger/badger_test.go @@ -142,33 +142,6 @@ const ( compositeKeyNamespace = "\x00" ) -func validateCompositeKeyAttribute(str string) error { - if !utf8.ValidString(str) { - return errors.Errorf("not a valid utf8 string: [%x]", str) - } - for index, runeValue := range str { - if runeValue == minUnicodeRuneValue || runeValue == maxUnicodeRuneValue { - return errors.Errorf(`input contain unicode %#U starting at position [%d]. %#U and %#U are not allowed in the input attribute of a composite key`, - runeValue, index, minUnicodeRuneValue, maxUnicodeRuneValue) - } - } - return nil -} - -func createCompositeKey(objectType string, attributes []string) (string, error) { - if err := validateCompositeKeyAttribute(objectType); err != nil { - return "", err - } - ck := compositeKeyNamespace + objectType + fmt.Sprint(minUnicodeRuneValue) - for _, att := range attributes { - if err := validateCompositeKeyAttribute(att); err != nil { - return "", err - } - ck += att + fmt.Sprint(minUnicodeRuneValue) - } - return ck, nil -} - func TestAutoCleaner(t *testing.T) { dbpath := filepath.Join(tempDir, "DB-autocleaner") diff --git a/platform/view/services/db/driver/unversioned/unversioned_test.go b/platform/view/services/db/driver/unversioned/unversioned_test.go index cce623c25..61175ee08 100644 --- a/platform/view/services/db/driver/unversioned/unversioned_test.go +++ b/platform/view/services/db/driver/unversioned/unversioned_test.go @@ -22,12 +22,6 @@ import ( "github.com/stretchr/testify/assert" ) -//go:generate counterfeiter -o mocks/config.go -fake-name Config . config - -type config interface { - db.Config -} - var tempDir string func TestRangeQueriesBadger(t *testing.T) { diff --git a/platform/view/services/events/simple/eventbus_test.go b/platform/view/services/events/simple/eventbus_test.go index 88e3131cb..95ad5fe5b 100644 --- a/platform/view/services/events/simple/eventbus_test.go +++ b/platform/view/services/events/simple/eventbus_test.go @@ -115,13 +115,9 @@ var _ = Describe("Event system", func() { event := &fakes.Event{} event.TopicReturns("topicAAA") event.MessageReturns("HelloWorld") - - var listeners []*fakes.Listener - for i := 0; i < 10000; i++ { l := &fakes.Listener{} alice.Subscribe(fmt.Sprintf("topic_%d", i), l) - listeners = append(listeners, l) Expect(len(notifier.handlers)).To(Equal(i + 1)) } }) @@ -130,13 +126,9 @@ var _ = Describe("Event system", func() { event := &fakes.Event{} event.TopicReturns("topicAAA") event.MessageReturns("HelloWorld") - - var listeners []*fakes.Listener - for i := 0; i < 10000; i++ { l := &fakes.Listener{} alice.Subscribe("topic", l) - listeners = append(listeners, l) Expect(len(notifier.handlers)).To(Equal(1)) Expect(len(notifier.handlers["topic"])).To(Equal(i + 1)) } diff --git a/platform/view/services/flogging/logging_test.go b/platform/view/services/flogging/logging_test.go new file mode 100644 index 000000000..e69de29bb diff --git a/platform/view/services/flogging/zap_test.go b/platform/view/services/flogging/zap_test.go new file mode 100644 index 000000000..e69de29bb diff --git a/platform/view/services/grpc/connection_test.go b/platform/view/services/grpc/connection_test.go index 26c208a33..bef0f4b25 100644 --- a/platform/view/services/grpc/connection_test.go +++ b/platform/view/services/grpc/connection_test.go @@ -7,20 +7,13 @@ SPDX-License-Identifier: Apache-2.0 package grpc import ( - "context" "crypto/tls" "fmt" - "net" "os" "path/filepath" - "sync/atomic" "testing" - "time" - "github.com/pkg/errors" "github.com/stretchr/testify/assert" - - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/grpc/testpb" ) const ( @@ -111,59 +104,3 @@ func TestCredentialSupport(t *testing.T) { assert.Equal(t, "1.2", creds.Info().SecurityVersion, "Expected Security version to be 1.2") } - -type srv struct { - address string - *GRPCServer - caCert []byte - serviced uint32 -} - -func (s *srv) assertServiced(t *testing.T) { - assert.Equal(t, uint32(1), atomic.LoadUint32(&s.serviced)) - atomic.StoreUint32(&s.serviced, 0) -} - -func (s *srv) EmptyCall(context.Context, *testpb.Empty) (*testpb.Empty, error) { - atomic.StoreUint32(&s.serviced, 1) - return &testpb.Empty{}, nil -} - -func newServer(org string) *srv { - certs := map[string][]byte{ - "ca.crt": nil, - "server.crt": nil, - "server.key": nil, - } - for suffix := range certs { - fName := filepath.Join("testdata", "impersonation", org, suffix) - cert, err := os.ReadFile(fName) - if err != nil { - panic(errors.Errorf("Failed reading %s: %v", fName, err)) - } - certs[suffix] = cert - } - l, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - panic(errors.Errorf("Failed to create listener: %v", err)) - } - gSrv, err := NewGRPCServerFromListener(l, ServerConfig{ - ConnectionTimeout: 250 * time.Millisecond, - SecOpts: SecureOptions{ - Certificate: certs["server.crt"], - Key: certs["server.key"], - UseTLS: true, - }, - }) - if err != nil { - panic(errors.Errorf("Failed starting gRPC server: %v", err)) - } - s := &srv{ - address: l.Addr().String(), - caCert: certs["ca.crt"], - GRPCServer: gSrv, - } - testpb.RegisterTestServiceServer(gSrv.Server(), s) - go s.Start() - return s -} diff --git a/platform/view/services/grpc/server_test.go b/platform/view/services/grpc/server_test.go index bf86780b8..d5dd99fa9 100644 --- a/platform/view/services/grpc/server_test.go +++ b/platform/view/services/grpc/server_test.go @@ -22,6 +22,7 @@ import ( "time" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/grpc/tlsgen" + "google.golang.org/grpc/credentials/insecure" "github.com/pkg/errors" "github.com/stretchr/testify/assert" @@ -65,27 +66,10 @@ VQQLDAtIeXBlcmxlZGdlcjESMBAGA1UEAwwJbG9jYWxob3N0MFkwEwYHKoZIzj0C -----END CERTIFICATE----- ` -var pemNoCertificateHeader = `-----BEGIN NOCERT----- -MIICRDCCAemgAwIBAgIJALwW//dz2ZBvMAoGCCqGSM49BAMCMH4xCzAJBgNVBAYT -AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2Nv -MRgwFgYDVQQKDA9MaW51eEZvdW5kYXRpb24xFDASBgNVBAsMC0h5cGVybGVkZ2Vy -MRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMTYxMjA0MjIzMDE4WhcNMjYxMjAyMjIz -MDE4WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UE -BwwNU2FuIEZyYW5jaXNjbzEYMBYGA1UECgwPTGludXhGb3VuZGF0aW9uMRQwEgYD -VQQLDAtIeXBlcmxlZGdlcjESMBAGA1UEAwwJbG9jYWxob3N0MFkwEwYHKoZIzj0C -AQYIKoZIzj0DAQcDQgAEu2FEZVSr30Afey6dwcypeg5P+BuYx5JSYdG0/KJIBjWK -nzYo7FEmgMir7GbNh4pqA8KFrJZkPuxMgnEJBZTv+6NQME4wHQYDVR0OBBYEFAWO -4bfTEr2R6VYzQYrGk/2VWmtYMB8GA1UdIwQYMBaAFAWO4bfTEr2R6VYzQYrGk/2V -WmtYMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAIelqGdxPMHmQqRF -zA85vv7JhfMkvZYGPELC7I2K8V7ZAiEA9KcthV3HtDXKNDsA6ULT+qUkyoHRzCzr -A4QaL2VU6i4= ------END NOCERT----- -` - var testOrgs = []testOrg{} func init() { - //load up crypto material for test orgs + // load up crypto material for test orgs for i := 1; i <= numOrgs; i++ { testOrg, err := loadOrg(i) if err != nil { @@ -122,17 +106,17 @@ func (esss *emptyServiceServer) EmptyStream(stream testpb.EmptyService_EmptyStre func invokeEmptyCall(address string, dialOptions ...grpc.DialOption) (*testpb.Empty, error) { ctx, cancel := context.WithTimeout(context.Background(), testTimeout) defer cancel() - //create GRPC client conn + // create GRPC client conn clientConn, err := grpc.DialContext(ctx, address, dialOptions...) if err != nil { return nil, err } defer clientConn.Close() - //create GRPC client + // create GRPC client client := testpb.NewEmptyServiceClient(clientConn) - //invoke service + // invoke service empty, err := client.EmptyCall(context.Background(), new(testpb.Empty)) if err != nil { return nil, err @@ -145,7 +129,7 @@ func invokeEmptyCall(address string, dialOptions ...grpc.DialOption) (*testpb.Em func invokeEmptyStream(address string, dialOptions ...grpc.DialOption) (*testpb.Empty, error) { ctx, cancel := context.WithTimeout(context.Background(), testTimeout) defer cancel() - //create GRPC client conn + // create GRPC client conn clientConn, err := grpc.DialContext(ctx, address, dialOptions...) if err != nil { return nil, err @@ -417,7 +401,7 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { "127.0.0.1:1BBB", grpc3.ServerConfig{SecOpts: grpc3.SecureOptions{UseTLS: false}}, ) - //check for possible errors based on platform and Go release + // check for possible errors based on platform and Go release msgs := []string{ "listen tcp: lookup tcp/1BBB: nodename nor servname provided, or not known", "listen tcp: unknown port tcp/1BBB", @@ -549,7 +533,7 @@ func TestNewGRPCServer(t *testing.T) { time.Sleep(10 * time.Millisecond) // invoke the EmptyCall service - _, err = invokeEmptyCall(testAddress, grpc.WithInsecure()) + _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(insecure.NewCredentials())) assert.NoError(t, err, "failed to invoke the EmptyCall service") } @@ -583,7 +567,7 @@ func TestNewGRPCServerFromListener(t *testing.T) { time.Sleep(10 * time.Millisecond) // invoke the EmptyCall service - _, err = invokeEmptyCall(testAddress, grpc.WithInsecure()) + _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(insecure.NewCredentials())) assert.NoError(t, err, "client failed to invoke the EmptyCall service") } @@ -619,7 +603,7 @@ func TestNewSecureGRPCServer(t *testing.T) { // register the GRPC test server testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) - //start the server + // start the server go srv.Start() defer srv.Stop() @@ -751,7 +735,7 @@ func TestWithSignedRootCertificates(t *testing.T) { // register the GRPC test server testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) - //start the server + // start the server go srv.Start() defer srv.Stop() @@ -853,7 +837,7 @@ func TestWithSignedIntermediateCertificates(t *testing.T) { func runMutualAuth(t *testing.T, servers []testServer, trustedClients, unTrustedClients []*tls.Config) error { // loop through all the test servers for i := 0; i < len(servers); i++ { - //create listener + // create listener lis, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { return err @@ -869,7 +853,7 @@ func runMutualAuth(t *testing.T, servers []testServer, trustedClients, unTrusted // MutualTLSRequired should be true assert.Equal(t, srv.MutualTLSRequired(), true) - //register the GRPC test server and start the GRPCServer + // register the GRPC test server and start the GRPCServer testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) go srv.Start() defer srv.Stop() @@ -1251,7 +1235,7 @@ func TestServerInterceptors(t *testing.T) { _, err = invokeEmptyCall( lis.Addr().String(), grpc.WithBlock(), - grpc.WithInsecure(), + grpc.WithTransportCredentials(insecure.NewCredentials()), ) assert.Error(t, err) assert.Equal(t, status.Convert(err).Message(), msg, "Expected error from second usi") @@ -1260,7 +1244,7 @@ func TestServerInterceptors(t *testing.T) { _, err = invokeEmptyStream( lis.Addr().String(), grpc.WithBlock(), - grpc.WithInsecure(), + grpc.WithTransportCredentials(insecure.NewCredentials()), ) assert.Error(t, err) assert.Equal(t, status.Convert(err).Message(), msg, "Expected error from second ssi") diff --git a/platform/view/services/grpc/serverstatshandler_test.go b/platform/view/services/grpc/serverstatshandler_test.go index 44fd11f19..93b7c44bb 100644 --- a/platform/view/services/grpc/serverstatshandler_test.go +++ b/platform/view/services/grpc/serverstatshandler_test.go @@ -18,6 +18,7 @@ import ( "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/metrics" . "github.com/onsi/gomega" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/stats" ) @@ -86,14 +87,14 @@ func TestConnMetricsGRPCServer(t *testing.T) { gt.Expect(openConn.AddCallCount()).To(Equal(0)) gt.Expect(closedConn.AddCallCount()).To(Equal(0)) - //create GRPC client conn + // create GRPC client conn var clientConns []*grpc.ClientConn for i := 1; i <= 3; i++ { - clientConn, err := grpc.DialContext(ctx, listener.Addr().String(), grpc.WithInsecure()) + clientConn, err := grpc.DialContext(ctx, listener.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials())) gt.Expect(err).NotTo(HaveOccurred()) clientConns = append(clientConns, clientConn) - //invoke service + // invoke service client := testpb.NewEmptyServiceClient(clientConn) _, err = client.EmptyCall(context.Background(), &testpb.Empty{}) gt.Expect(err).NotTo(HaveOccurred()) diff --git a/platform/view/services/metrics/operations/operations_suite_test.go b/platform/view/services/metrics/operations/operations_suite_test.go index 7e06f8ddf..e81208840 100644 --- a/platform/view/services/metrics/operations/operations_suite_test.go +++ b/platform/view/services/metrics/operations/operations_suite_test.go @@ -7,15 +7,8 @@ SPDX-License-Identifier: Apache-2.0 package operations_test import ( - "crypto/tls" - "crypto/x509" - "net/http" - "os" - "path/filepath" "testing" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/grpc/tlsgen" - "github.com/hyperledger/fabric-lib-go/healthz" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) @@ -24,57 +17,3 @@ func TestOperations(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Operations Suite") } - -func generateCertificates(tempDir string) { - serverCA, err := tlsgen.NewCA() - Expect(err).NotTo(HaveOccurred()) - err = os.WriteFile(filepath.Join(tempDir, "server-ca.pem"), serverCA.CertBytes(), 0o640) - Expect(err).NotTo(HaveOccurred()) - serverKeyPair, err := serverCA.NewServerCertKeyPair("127.0.0.1") - Expect(err).NotTo(HaveOccurred()) - err = os.WriteFile(filepath.Join(tempDir, "server-cert.pem"), serverKeyPair.Cert, 0o640) - Expect(err).NotTo(HaveOccurred()) - err = os.WriteFile(filepath.Join(tempDir, "server-key.pem"), serverKeyPair.Key, 0o640) - Expect(err).NotTo(HaveOccurred()) - - clientCA, err := tlsgen.NewCA() - Expect(err).NotTo(HaveOccurred()) - err = os.WriteFile(filepath.Join(tempDir, "client-ca.pem"), clientCA.CertBytes(), 0o640) - Expect(err).NotTo(HaveOccurred()) - clientKeyPair, err := clientCA.NewClientCertKeyPair() - Expect(err).NotTo(HaveOccurred()) - err = os.WriteFile(filepath.Join(tempDir, "client-cert.pem"), clientKeyPair.Cert, 0o640) - Expect(err).NotTo(HaveOccurred()) - err = os.WriteFile(filepath.Join(tempDir, "client-key.pem"), clientKeyPair.Key, 0o640) - Expect(err).NotTo(HaveOccurred()) -} - -func newHTTPClient(tlsDir string, withClientCert bool) *http.Client { - clientCertPool := x509.NewCertPool() - caCert, err := os.ReadFile(filepath.Join(tlsDir, "server-ca.pem")) - Expect(err).NotTo(HaveOccurred()) - clientCertPool.AppendCertsFromPEM(caCert) - - tlsClientConfig := &tls.Config{ - RootCAs: clientCertPool, - } - if withClientCert { - clientCert, err := tls.LoadX509KeyPair( - filepath.Join(tlsDir, "client-cert.pem"), - filepath.Join(tlsDir, "client-key.pem"), - ) - Expect(err).NotTo(HaveOccurred()) - tlsClientConfig.Certificates = []tls.Certificate{clientCert} - } - - return &http.Client{ - Transport: &http.Transport{ - TLSClientConfig: tlsClientConfig, - }, - } -} - -//go:generate counterfeiter -o fakes/healthchecker.go -fake-name HealthChecker . healthChecker -type healthChecker interface { - healthz.HealthChecker -} diff --git a/platform/view/services/server/web/middleware/chain_test.go b/platform/view/services/server/web/middleware/chain_test.go index b3573c4ff..f67f96f05 100644 --- a/platform/view/services/server/web/middleware/chain_test.go +++ b/platform/view/services/server/web/middleware/chain_test.go @@ -29,9 +29,9 @@ var _ = Describe("Chain", func() { BeforeEach(func() { one = func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("1:before,")) + Expect(w.Write([]byte("1:before,"))).To(Succeed()) next.ServeHTTP(w, r) - w.Write([]byte("1:after")) + Expect(w.Write([]byte("1:after"))).To(Succeed()) }) } two = func(next http.Handler) http.Handler { diff --git a/platform/view/services/server/web/middleware/middleware_suite_test.go b/platform/view/services/server/web/middleware/middleware_suite_test.go index dbe1659f4..9f9fc0872 100644 --- a/platform/view/services/server/web/middleware/middleware_suite_test.go +++ b/platform/view/services/server/web/middleware/middleware_suite_test.go @@ -7,8 +7,6 @@ SPDX-License-Identifier: Apache-2.0 package middleware_test import ( - "net/http" - . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -19,9 +17,3 @@ func TestMiddleware(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Middleware Suite") } - -//go:generate counterfeiter -o fakes/http_handler.go --fake-name HTTPHandler . httpHandler - -type httpHandler interface { - http.Handler -}