From 0ea883984bd7aee89c31485cf4bb4511c00b861a Mon Sep 17 00:00:00 2001 From: Silvestre Zabala Date: Tue, 11 Jul 2023 10:15:40 +0200 Subject: [PATCH] Replace `gorilla/mux` with `go-chi/chi` in broker server --- .../api/brokerserver/broker_handler_test.go | 10 +++++----- .../api/brokerserver/broker_server.go | 11 ++--------- src/autoscaler/go.sum | 1 + src/autoscaler/testhelpers/chi.go | 18 ++++++++++++++++++ 4 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 src/autoscaler/testhelpers/chi.go diff --git a/src/autoscaler/api/brokerserver/broker_handler_test.go b/src/autoscaler/api/brokerserver/broker_handler_test.go index 894530e493..3dd5a14a06 100644 --- a/src/autoscaler/api/brokerserver/broker_handler_test.go +++ b/src/autoscaler/api/brokerserver/broker_handler_test.go @@ -12,8 +12,8 @@ import ( "net/url" "code.cloudfoundry.org/app-autoscaler/src/autoscaler/api/broker" + "code.cloudfoundry.org/app-autoscaler/src/autoscaler/testhelpers" - "github.com/gorilla/mux" "github.com/pivotal-cf/brokerapi/v10/handlers" "code.cloudfoundry.org/app-autoscaler/src/autoscaler/db" @@ -76,7 +76,7 @@ var _ = Describe("BrokerHandler", func() { var body []byte JustBeforeEach(func() { req, err = http.NewRequest(http.MethodPut, "", bytes.NewReader(body)) - req = mux.SetURLVars(req, map[string]string{"instance_id": testInstanceId}) + req = testhelpers.SetURLParams(req, "instance_id", testInstanceId) handler.Provision(resp, req) }) BeforeEach(func() { @@ -300,7 +300,7 @@ var _ = Describe("BrokerHandler", func() { callUpdateServiceInstance := func() { req, err = http.NewRequest(http.MethodPut, "", bytes.NewReader(body)) Expect(err).NotTo(HaveOccurred()) - req = mux.SetURLVars(req, map[string]string{"instance_id": testInstanceId}) + req = testhelpers.SetURLParams(req, "instance_id", testInstanceId) handler.Update(resp, req) } updatePlanAndDefaultPolicy := func(fromPlan string, targetPlan string, defaultPolicy json.RawMessage) { @@ -693,7 +693,7 @@ var _ = Describe("BrokerHandler", func() { Describe("DeleteServiceInstance", func() { JustBeforeEach(func() { req, _ = http.NewRequest(http.MethodDelete, "", nil) - req = mux.SetURLVars(req, map[string]string{"instance_id": testInstanceId}) + req = testhelpers.SetURLParams(req, "instance_id", testInstanceId) values := url.Values{} values.Set("service_id", "autoscaler-guid") values.Set("plan_id", "autoscaler-free-plan-id") @@ -1100,7 +1100,7 @@ var _ = Describe("BrokerHandler", func() { Describe("UnBindServiceInstance", func() { BeforeEach(func() { req, _ = http.NewRequest(http.MethodDelete, "", nil) - req = mux.SetURLVars(req, map[string]string{"instance_id": testInstanceId, "binding_id": testBindingId}) + req = testhelpers.SetURLParams(req, "instance_id", testInstanceId, "binding_id", testBindingId) values := url.Values{} values.Set("service_id", "autoscaler-guid") values.Set("plan_id", "autoscaler-free-plan-id") diff --git a/src/autoscaler/api/brokerserver/broker_server.go b/src/autoscaler/api/brokerserver/broker_server.go index 9775605d2c..148e98d595 100644 --- a/src/autoscaler/api/brokerserver/broker_server.go +++ b/src/autoscaler/api/brokerserver/broker_server.go @@ -21,19 +21,12 @@ import ( "github.com/pivotal-cf/brokerapi/v10/domain" "code.cloudfoundry.org/lager/v3" - "github.com/gorilla/mux" + "github.com/go-chi/chi/v5" "github.com/tedsuo/ifrit" "github.com/tedsuo/ifrit/http_server" "golang.org/x/crypto/bcrypt" ) -type VarsFunc func(w http.ResponseWriter, r *http.Request, vars map[string]string) - -func (vh VarsFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - vh(w, r, vars) -} - type MiddleWareBrokerCredentials struct { BrokerUsername string BrokerUsernameHash []byte @@ -123,7 +116,7 @@ func NewBrokerServer(logger lager.Logger, conf *config.Config, bindingdb db.Bind httpStatusCollectMiddleware := healthendpoint.NewHTTPStatusCollectMiddleware(httpStatusCollector) autoscalerBroker := broker.New(logger.Session("broker"), conf, bindingdb, policydb, catalog.Services, credentials) - r := mux.NewRouter() + r := chi.NewRouter() r.Use(basicAuthentication.Middleware) r.Use(httpStatusCollectMiddleware.Collect) diff --git a/src/autoscaler/go.sum b/src/autoscaler/go.sum index f8ae9ed0d9..da481f3231 100644 --- a/src/autoscaler/go.sum +++ b/src/autoscaler/go.sum @@ -797,6 +797,7 @@ github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpx github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= diff --git a/src/autoscaler/testhelpers/chi.go b/src/autoscaler/testhelpers/chi.go new file mode 100644 index 0000000000..ebfd44b367 --- /dev/null +++ b/src/autoscaler/testhelpers/chi.go @@ -0,0 +1,18 @@ +package testhelpers + +import ( + "context" + "net/http" + + "github.com/go-chi/chi/v5" +) + +func SetURLParams(req *http.Request, params ...string) *http.Request { + rc := chi.NewRouteContext() + for i := 0; i+1 < len(params); i += 2 { + rc.URLParams.Add(params[i], params[i+1]) + } + ctx := context.WithValue(req.Context(), chi.RouteCtxKey, rc) + req = req.WithContext(ctx) + return req +}