From 0c1abb81141b0a3c368996a98e1d111c25ed5ced Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 16 Feb 2023 16:18:15 -0400 Subject: [PATCH] fix: rest tests --- go.mod | 1 + go.sum | 1 + waku/v2/rest/relay.go | 11 ++++------- waku/v2/rest/relay_test.go | 39 ++++++++++++++++++++++---------------- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index f2d79aae..2dad78c6 100644 --- a/go.mod +++ b/go.mod @@ -35,6 +35,7 @@ require ( ) require ( + github.com/go-chi/chi/v5 v5.0.0 github.com/lib/pq v1.10.4 github.com/waku-org/go-noise v0.0.4 ) diff --git a/go.sum b/go.sum index 52467afd..85864809 100644 --- a/go.sum +++ b/go.sum @@ -548,6 +548,7 @@ github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwv github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0 h1:DBPx88FjZJH3FsICfDAfIfnb7XxKIYVGG6lOPlhENAg= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= diff --git a/waku/v2/rest/relay.go b/waku/v2/rest/relay.go index 998ccc12..6273621e 100644 --- a/waku/v2/rest/relay.go +++ b/waku/v2/rest/relay.go @@ -8,7 +8,6 @@ import ( "sync" "github.com/go-chi/chi/v5" - "github.com/gorilla/mux" "github.com/waku-org/go-waku/waku/v2/node" "github.com/waku-org/go-waku/waku/v2/protocol" "github.com/waku-org/go-waku/waku/v2/protocol/pb" @@ -147,9 +146,8 @@ func (d *RelayService) postV1Subscriptions(w http.ResponseWriter, r *http.Reques } func (d *RelayService) getV1Messages(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - topic, ok := vars["topic"] - if !ok { + topic := chi.URLParam(r, "topic") + if topic == "" { w.WriteHeader(http.StatusBadRequest) return } @@ -175,9 +173,8 @@ func (d *RelayService) getV1Messages(w http.ResponseWriter, r *http.Request) { } func (d *RelayService) postV1Message(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - topic, ok := vars["topic"] - if !ok { + topic := chi.URLParam(r, "topic") + if topic == "" { w.WriteHeader(http.StatusBadRequest) return } diff --git a/waku/v2/rest/relay_test.go b/waku/v2/rest/relay_test.go index cb71fe93..cf1ab711 100644 --- a/waku/v2/rest/relay_test.go +++ b/waku/v2/rest/relay_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/gorilla/mux" + "github.com/go-chi/chi/v5" "github.com/multiformats/go-multiaddr" "github.com/stretchr/testify/require" "github.com/waku-org/go-waku/tests" @@ -20,20 +20,20 @@ import ( "github.com/waku-org/go-waku/waku/v2/utils" ) -func makeRelayService(t *testing.T) *RelayService { +func makeRelayService(t *testing.T, mux *chi.Mux) *RelayService { options := node.WithWakuRelayAndMinPeers(0) n, err := node.New(options) require.NoError(t, err) err = n.Start(context.Background()) require.NoError(t, err) - mux := mux.NewRouter() - return NewRelayService(n, mux, 3, utils.Logger()) } func TestPostV1Message(t *testing.T) { - d := makeRelayService(t) + router := chi.NewRouter() + + _ = makeRelayService(t, router) msg := &pb.WakuMessage{ Payload: []byte{1, 2, 3}, @@ -46,13 +46,15 @@ func TestPostV1Message(t *testing.T) { rr := httptest.NewRecorder() req, _ := http.NewRequest(http.MethodPost, "/relay/v1/messages/test", bytes.NewReader(msgJsonBytes)) - d.mux.ServeHTTP(rr, req) + router.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) require.Equal(t, "true", rr.Body.String()) } func TestRelaySubscription(t *testing.T) { - d := makeRelayService(t) + router := chi.NewRouter() + + d := makeRelayService(t, router) go d.Start(context.Background()) defer d.Stop() @@ -63,7 +65,7 @@ func TestRelaySubscription(t *testing.T) { rr := httptest.NewRecorder() req, _ := http.NewRequest(http.MethodPost, "/relay/v1/subscriptions", bytes.NewReader(topicsJSONBytes)) - d.mux.ServeHTTP(rr, req) + router.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) require.Equal(t, "true", rr.Body.String()) @@ -87,7 +89,7 @@ func TestRelaySubscription(t *testing.T) { // Test deletion rr = httptest.NewRecorder() req, _ = http.NewRequest(http.MethodDelete, "/relay/v1/subscriptions", bytes.NewReader(topicsJSONBytes)) - d.mux.ServeHTTP(rr, req) + router.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) require.Equal(t, "true", rr.Body.String()) require.Len(t, d.messages["test"], 0) @@ -95,10 +97,12 @@ func TestRelaySubscription(t *testing.T) { } func TestRelayGetV1Messages(t *testing.T) { - serviceA := makeRelayService(t) + router := chi.NewRouter() + + serviceA := makeRelayService(t, router) go serviceA.Start(context.Background()) defer serviceA.Stop() - serviceB := makeRelayService(t) + serviceB := makeRelayService(t, router) go serviceB.Start(context.Background()) defer serviceB.Stop() @@ -122,7 +126,7 @@ func TestRelayGetV1Messages(t *testing.T) { rr := httptest.NewRecorder() req, _ := http.NewRequest(http.MethodPost, "/relay/v1/subscriptions", bytes.NewReader(topicsJSONBytes)) - serviceB.mux.ServeHTTP(rr, req) + router.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) // Wait for the subscription to be started @@ -139,7 +143,7 @@ func TestRelayGetV1Messages(t *testing.T) { rr = httptest.NewRecorder() req, _ = http.NewRequest(http.MethodPost, "/relay/v1/messages/test", bytes.NewReader(msgJsonBytes)) - serviceA.mux.ServeHTTP(rr, req) + router.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) // Wait for the message to be received @@ -147,7 +151,7 @@ func TestRelayGetV1Messages(t *testing.T) { rr = httptest.NewRecorder() req, _ = http.NewRequest(http.MethodGet, "/relay/v1/messages/test", bytes.NewReader([]byte{})) - serviceB.mux.ServeHTTP(rr, req) + router.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) var messages []*pb.WakuMessage @@ -157,6 +161,9 @@ func TestRelayGetV1Messages(t *testing.T) { rr = httptest.NewRecorder() req, _ = http.NewRequest(http.MethodGet, "/relay/v1/messages/test", bytes.NewReader([]byte{})) - serviceA.mux.ServeHTTP(rr, req) - require.Equal(t, http.StatusNotFound, rr.Code) + router.ServeHTTP(rr, req) + + err = json.Unmarshal(rr.Body.Bytes(), &messages) + require.NoError(t, err) + require.Len(t, messages, 0) }