Alerting: validate that the receiver exist when updating routing tree (#51561)

* Alerting: validate that the receiver exist when updating routing tree

* rename interface

* add missing file

* change constructor

* fix e2e tests

* only import package once

* add unit test for bug

* wording

* close response body

* Update pkg/services/ngalert/api/tooling/definitions/alertmanager_validation.go

* refactor to remove database roundtrip
This commit is contained in:
Jean-Philippe Quéméner
2022-07-05 18:09:57 +02:00
committed by GitHub
parent 578ab71ba9
commit e64cde8727
4 changed files with 103 additions and 3 deletions
@@ -44,13 +44,32 @@ func TestProvisioning(t *testing.T) {
url := fmt.Sprintf("http://%s/api/v1/provisioning/policies", grafanaListedAddr)
body := `
{
"receiver": "grafana-default-email",
"receiver": "test-receiver",
"group_by": [
"..."
],
"routes": []
}`
// As we check if the receiver exists that is referenced in the policy,
// we first need to create it, so the tests passes correctly.
urlReceiver := fmt.Sprintf("http://%s/api/v1/provisioning/contact-points", grafanaListedAddr)
bodyReceiver := `
{
"name": "test-receiver",
"type": "slack",
"settings": {
"recipient": "value_recipient",
"token": "value_token"
}
}`
req := createTestRequest("POST", urlReceiver, "admin", bodyReceiver)
resp, err := http.DefaultClient.Do(req)
require.NoError(t, err)
require.NoError(t, resp.Body.Close())
require.Equal(t, 202, resp.StatusCode)
t.Run("un-authenticated GET should 401", func(t *testing.T) {
req := createTestRequest("GET", url, "", "")
@@ -127,7 +146,6 @@ func TestProvisioning(t *testing.T) {
resp, err := http.DefaultClient.Do(req)
require.NoError(t, err)
require.NoError(t, resp.Body.Close())
require.Equal(t, 202, resp.StatusCode)
})
})