Sanitize POST URL for AM integration
This commit is contained in:
parent
9ea3897ea7
commit
0b02315517
|
@ -18,6 +18,7 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
|
@ -239,7 +240,7 @@ func (n *Handler) setMore() {
|
|||
}
|
||||
|
||||
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 {
|
||||
|
|
|
@ -25,6 +25,43 @@ import (
|
|||
"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) {
|
||||
h := New(&HandlerOptions{})
|
||||
|
||||
|
|
Loading…
Reference in New Issue