From 4935ae867d21ce5f59f235c0c7c0bf9b4b3b6e98 Mon Sep 17 00:00:00 2001 From: Steve Munene <61874077+nyagamunene@users.noreply.github.com> Date: Mon, 15 Apr 2024 17:29:39 +0300 Subject: [PATCH] MG-2170 - Generate mocks with mockery for HTTP service (#2171) Signed-off-by: nyagamunene --- http/api/endpoint_test.go | 12 +++++++----- http/mocks/doc.go | 5 ----- http/mocks/publisher.go | 25 ------------------------- pkg/sdk/go/message_test.go | 16 +++++++++------- 4 files changed, 16 insertions(+), 42 deletions(-) delete mode 100644 http/mocks/doc.go delete mode 100644 http/mocks/publisher.go diff --git a/http/api/endpoint_test.go b/http/api/endpoint_test.go index 325e4ba100..87d3fac5ea 100644 --- a/http/api/endpoint_test.go +++ b/http/api/endpoint_test.go @@ -15,9 +15,9 @@ import ( authmocks "github.com/absmach/magistrala/auth/mocks" server "github.com/absmach/magistrala/http" "github.com/absmach/magistrala/http/api" - "github.com/absmach/magistrala/http/mocks" "github.com/absmach/magistrala/internal/apiutil" mglog "github.com/absmach/magistrala/logger" + pubsub "github.com/absmach/magistrala/pkg/messaging/mocks" mproxy "github.com/absmach/mproxy/pkg/http" "github.com/absmach/mproxy/pkg/session" "github.com/stretchr/testify/assert" @@ -26,9 +26,9 @@ import ( const instanceID = "5de9b29a-feb9-11ed-be56-0242ac120002" -func newService(auth magistrala.AuthzServiceClient) session.Handler { - pub := mocks.NewPublisher() - return server.NewHandler(pub, mglog.NewMock(), auth) +func newService(auth magistrala.AuthzServiceClient) (session.Handler, *pubsub.PubSub) { + pub := new(pubsub.PubSub) + return server.NewHandler(pub, mglog.NewMock(), auth), pub } func newTargetHTTPServer() *httptest.Server { @@ -83,7 +83,7 @@ func TestPublish(t *testing.T) { msg := `[{"n":"current","t":-1,"v":1.6}]` msgJSON := `{"field1":"val1","field2":"val2"}` msgCBOR := `81A3616E6763757272656E746174206176FB3FF999999999999A` - svc := newService(auth) + svc, pub := newService(auth) target := newTargetHTTPServer() defer target.Close() ts, err := newProxyHTPPServer(svc, target) @@ -171,6 +171,7 @@ func TestPublish(t *testing.T) { for desc, tc := range cases { t.Run(desc, func(t *testing.T) { + svcCall := pub.On("Publish", mock.Anything, tc.chanID, mock.Anything).Return(nil) req := testRequest{ client: ts.Client(), method: http.MethodPost, @@ -183,6 +184,7 @@ func TestPublish(t *testing.T) { res, err := req.make() assert.Nil(t, err, fmt.Sprintf("%s: unexpected error %s", desc, err)) assert.Equal(t, tc.status, res.StatusCode, fmt.Sprintf("%s: expected status code %d got %d", desc, tc.status, res.StatusCode)) + svcCall.Unset() }) } } diff --git a/http/mocks/doc.go b/http/mocks/doc.go deleted file mode 100644 index 16ed198afd..0000000000 --- a/http/mocks/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Abstract Machines -// SPDX-License-Identifier: Apache-2.0 - -// Package mocks contains mocks for testing purposes. -package mocks diff --git a/http/mocks/publisher.go b/http/mocks/publisher.go deleted file mode 100644 index 90ad6d757e..0000000000 --- a/http/mocks/publisher.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Abstract Machines -// SPDX-License-Identifier: Apache-2.0 - -package mocks - -import ( - "context" - - "github.com/absmach/magistrala/pkg/messaging" -) - -type mockPublisher struct{} - -// NewPublisher returns mock message publisher. -func NewPublisher() messaging.Publisher { - return mockPublisher{} -} - -func (pub mockPublisher) Publish(ctx context.Context, topic string, msg *messaging.Message) error { - return nil -} - -func (pub mockPublisher) Close() error { - return nil -} diff --git a/pkg/sdk/go/message_test.go b/pkg/sdk/go/message_test.go index e670c76869..8fca7ce809 100644 --- a/pkg/sdk/go/message_test.go +++ b/pkg/sdk/go/message_test.go @@ -13,20 +13,20 @@ import ( authmocks "github.com/absmach/magistrala/auth/mocks" adapter "github.com/absmach/magistrala/http" "github.com/absmach/magistrala/http/api" - "github.com/absmach/magistrala/http/mocks" "github.com/absmach/magistrala/internal/apiutil" mglog "github.com/absmach/magistrala/logger" "github.com/absmach/magistrala/pkg/errors" svcerr "github.com/absmach/magistrala/pkg/errors/service" + pubsub "github.com/absmach/magistrala/pkg/messaging/mocks" sdk "github.com/absmach/magistrala/pkg/sdk/go" mproxy "github.com/absmach/mproxy/pkg/http" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) -func setupMessages() (*httptest.Server, *authmocks.AuthClient) { +func setupMessages() (*httptest.Server, *authmocks.AuthClient, *pubsub.PubSub) { auth := new(authmocks.AuthClient) - pub := mocks.NewPublisher() + pub := new(pubsub.PubSub) handler := adapter.NewHandler(pub, mglog.NewMock(), auth) mux := api.MakeHandler("") @@ -34,10 +34,10 @@ func setupMessages() (*httptest.Server, *authmocks.AuthClient) { mp, err := mproxy.NewProxy("", target.URL, handler, mglog.NewMock()) if err != nil { - return nil, nil + return nil, nil, nil } - return httptest.NewServer(http.HandlerFunc(mp.Handler)), auth + return httptest.NewServer(http.HandlerFunc(mp.Handler)), auth, pub } func TestSendMessage(t *testing.T) { @@ -46,7 +46,7 @@ func TestSendMessage(t *testing.T) { invalidToken := "invalid_token" msg := `[{"n":"current","t":-1,"v":1.6}]` - ts, auth := setupMessages() + ts, auth, pub := setupMessages() defer ts.Close() sdkConf := sdk.Config{ HTTPAdapterURL: ts.URL, @@ -104,6 +104,7 @@ func TestSendMessage(t *testing.T) { }, } for desc, tc := range cases { + svcCall := pub.On("Publish", mock.Anything, tc.chanID, mock.Anything).Return(tc.err) err := mgsdk.SendMessage(tc.chanID, tc.msg, tc.auth) switch tc.err { case nil: @@ -111,11 +112,12 @@ func TestSendMessage(t *testing.T) { default: assert.Equal(t, tc.err.Error(), err.Error(), fmt.Sprintf("%s: expected error %s, got %s", desc, tc.err, err)) } + svcCall.Unset() } } func TestSetContentType(t *testing.T) { - ts, _ := setupMessages() + ts, _, _ := setupMessages() defer ts.Close() sdkConf := sdk.Config{