mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 18:02:15 +08:00
fixes bug with invalid handler name for metrics (#29529)
closes https://github.com/grafana/grafana/issues/29487 Signed-off-by: bergquist <carl.bergquist@gmail.com>
This commit is contained in:
@ -118,22 +118,24 @@ func (rr *routeRegister) Register(router Router) {
|
||||
|
||||
func (rr *routeRegister) route(pattern, method string, handlers ...macaron.Handler) {
|
||||
h := make([]macaron.Handler, 0)
|
||||
fullPattern := rr.prefix + pattern
|
||||
|
||||
for _, fn := range rr.namedMiddleware {
|
||||
h = append(h, fn(pattern))
|
||||
h = append(h, fn(fullPattern))
|
||||
}
|
||||
|
||||
h = append(h, rr.subfixHandlers...)
|
||||
h = append(h, handlers...)
|
||||
|
||||
for _, r := range rr.routes {
|
||||
if r.pattern == rr.prefix+pattern && r.method == method {
|
||||
if r.pattern == fullPattern && r.method == method {
|
||||
panic("cannot add duplicate route")
|
||||
}
|
||||
}
|
||||
|
||||
rr.routes = append(rr.routes, route{
|
||||
method: method,
|
||||
pattern: rr.prefix + pattern,
|
||||
pattern: fullPattern,
|
||||
handlers: h,
|
||||
})
|
||||
}
|
||||
|
@ -214,8 +214,13 @@ func TestNamedMiddlewareRouteRegister(t *testing.T) {
|
||||
{method: "GET", pattern: "/user/admin/all", handlers: emptyHandlers(5)},
|
||||
}
|
||||
|
||||
namedMiddlewares := map[string]bool{}
|
||||
// Setup
|
||||
rr := NewRouteRegister(emptyHandler)
|
||||
rr := NewRouteRegister(func(name string) macaron.Handler {
|
||||
namedMiddlewares[name] = true
|
||||
|
||||
return struct{ name string }{name: name}
|
||||
})
|
||||
|
||||
rr.Delete("/admin", emptyHandler("1"))
|
||||
rr.Get("/down", emptyHandler("1"), emptyHandler("2"))
|
||||
@ -247,6 +252,10 @@ func TestNamedMiddlewareRouteRegister(t *testing.T) {
|
||||
t.Errorf("want %s got %v", testTable[i].pattern, fr.route[i].pattern)
|
||||
}
|
||||
|
||||
if _, exist := namedMiddlewares[testTable[i].pattern]; !exist {
|
||||
t.Errorf("could not find named route named %s", testTable[i].pattern)
|
||||
}
|
||||
|
||||
if len(testTable[i].handlers) != len(fr.route[i].handlers) {
|
||||
t.Errorf("want %d handlers got %d handlers \ntestcase: %v\nroute: %v\n",
|
||||
len(testTable[i].handlers),
|
||||
|
Reference in New Issue
Block a user