From 15481c1a6b89b0ad606ef952ce00be9b674566de 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 --- packages/golangapiserver/spec | 15 ++++++++------- .../api/brokerserver/broker_handler_test.go | 10 +++++----- .../api/brokerserver/broker_server.go | 11 ++--------- src/autoscaler/go.mod | 2 +- src/autoscaler/testhelpers/chi.go | 18 ++++++++++++++++++ 5 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 src/autoscaler/testhelpers/chi.go diff --git a/packages/golangapiserver/spec b/packages/golangapiserver/spec index b49d8c192f..123daa30c2 100644 --- a/packages/golangapiserver/spec +++ b/packages/golangapiserver/spec @@ -37,6 +37,7 @@ files: - autoscaler/vendor/code.cloudfoundry.org/tlsconfig/* # gosub - autoscaler/vendor/github.com/beorn7/perks/quantile/* # gosub - autoscaler/vendor/github.com/cespare/xxhash/v2/* # gosub +- autoscaler/vendor/github.com/go-chi/chi/v5/* # gosub - autoscaler/vendor/github.com/go-sql-driver/mysql/* # gosub - autoscaler/vendor/github.com/golang/protobuf/proto/* # gosub - autoscaler/vendor/github.com/golang/protobuf/ptypes/timestamp/* # gosub @@ -69,13 +70,13 @@ files: - autoscaler/vendor/github.com/openzipkin/zipkin-go/model/* # gosub - autoscaler/vendor/github.com/patrickmn/go-cache/* # gosub - autoscaler/vendor/github.com/pborman/uuid/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/auth/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/domain/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/domain/apiresponses/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/handlers/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/middlewares/* # gosub -- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v9/utils/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/auth/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/domain/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/domain/apiresponses/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/handlers/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/middlewares/* # gosub +- autoscaler/vendor/github.com/pivotal-cf/brokerapi/v10/utils/* # gosub - autoscaler/vendor/github.com/pkg/errors/* # gosub - autoscaler/vendor/github.com/prometheus/client_golang/prometheus/* # gosub - autoscaler/vendor/github.com/prometheus/client_golang/prometheus/collectors/* # gosub 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.mod b/src/autoscaler/go.mod index 3cd28404fe..2a8d485a68 100644 --- a/src/autoscaler/go.mod +++ b/src/autoscaler/go.mod @@ -11,6 +11,7 @@ require ( code.cloudfoundry.org/tlsconfig v0.0.0-20220621140725-0e6fbd869921 dario.cat/mergo v1.0.0 github.com/cenkalti/backoff/v4 v4.2.1 + github.com/go-chi/chi/v5 v5.0.8 github.com/go-sql-driver/mysql v1.7.1 github.com/golang/protobuf v1.5.3 github.com/golangci/golangci-lint v1.53.3 @@ -86,7 +87,6 @@ require ( github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/go-chi/chi/v5 v5.0.8 // indirect github.com/go-critic/go-critic v0.8.1 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect 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 +}