From 3d14dcc45ce0f09b8c8d2843492064f5395263e0 Mon Sep 17 00:00:00 2001 From: Rasmus Dahlberg Date: Mon, 11 Oct 2021 22:48:14 +0200 Subject: fixed bug in handler path construction A path is expected to always start with the '/' character. --- pkg/instance/instance.go | 5 ++++- pkg/instance/instance_test.go | 41 +++++++++++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index fbfe4df..dc7f5c5 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -64,7 +64,10 @@ func (i *Instance) Handlers() []Handler { // Path returns a path that should be configured for this handler func (h Handler) Path() string { - return h.Endpoint.Path(h.Instance.Prefix, "sigsum", "v0") + if len(h.Instance.Prefix) == 0 { + return h.Endpoint.Path("", "sigsum", "v0") + } + return h.Endpoint.Path("", h.Instance.Prefix, "sigsum", "v0") } // ServeHTTP is part of the http.Handler interface diff --git a/pkg/instance/instance_test.go b/pkg/instance/instance_test.go index 1706e86..9eeee5b 100644 --- a/pkg/instance/instance_test.go +++ b/pkg/instance/instance_test.go @@ -62,19 +62,36 @@ func TestServeHTTP(t *testing.T) { } } +// TestPath checks that Path works for an endpoint (add-leaf) func TestPath(t *testing.T) { - instance := &Instance{ - Config: Config{ - Prefix: "testonly", + for _, table := range []struct { + description string + prefix string + want string + }{ + { + description: "no prefix", + want: "/sigsum/v0/add-leaf", }, - } - handler := Handler{ - Instance: instance, - Handler: addLeaf, - Endpoint: types.EndpointAddLeaf, - Method: http.MethodPost, - } - if got, want := handler.Path(), "testonly/sigsum/v0/add-leaf"; got != want { - t.Errorf("got path %v but wanted %v", got, want) + { + description: "a prefix", + prefix: "test-prefix", + want: "/test-prefix/sigsum/v0/add-leaf", + }, + } { + instance := &Instance{ + Config: Config{ + Prefix: table.prefix, + }, + } + handler := Handler{ + Instance: instance, + Handler: addLeaf, + Endpoint: types.EndpointAddLeaf, + Method: http.MethodPost, + } + if got, want := handler.Path(), table.want; got != want { + t.Errorf("got path %v but wanted %v", got, want) + } } } -- cgit v1.2.3