mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-12 14:27:27 -08:00
Merge pull request #1370 from prometheus/pathjoin
Sanitize POST URL for AM integration
This commit is contained in:
commit
1756c0811c
|
@ -18,6 +18,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -239,7 +240,7 @@ func (n *Handler) setMore() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Handler) postURL() string {
|
func (n *Handler) postURL() string {
|
||||||
return n.opts.AlertmanagerURL + alertPushEndpoint
|
return strings.TrimRight(n.opts.AlertmanagerURL, "/") + alertPushEndpoint
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Handler) send(alerts ...*model.Alert) error {
|
func (n *Handler) send(alerts ...*model.Alert) error {
|
||||||
|
|
|
@ -25,6 +25,43 @@ import (
|
||||||
"github.com/prometheus/common/model"
|
"github.com/prometheus/common/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestHandlerPostURL(t *testing.T) {
|
||||||
|
var cases = []struct {
|
||||||
|
in, out string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
in: "http://localhost:9093",
|
||||||
|
out: "http://localhost:9093/api/v1/alerts",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "http://localhost:9093/",
|
||||||
|
out: "http://localhost:9093/api/v1/alerts",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "http://localhost:9093/prefix",
|
||||||
|
out: "http://localhost:9093/prefix/api/v1/alerts",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "http://localhost:9093/prefix//",
|
||||||
|
out: "http://localhost:9093/prefix/api/v1/alerts",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "http://localhost:9093/prefix//",
|
||||||
|
out: "http://localhost:9093/prefix/api/v1/alerts",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
h := &Handler{
|
||||||
|
opts: &HandlerOptions{},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
h.opts.AlertmanagerURL = c.in
|
||||||
|
if res := h.postURL(); res != c.out {
|
||||||
|
t.Errorf("Expected post URL %q for %q but got %q", c.out, c.in, res)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestHandlerNextBatch(t *testing.T) {
|
func TestHandlerNextBatch(t *testing.T) {
|
||||||
h := New(&HandlerOptions{})
|
h := New(&HandlerOptions{})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue