Alerting: Validate extra configuration with PostableApiAlertingConfig (#108706)

This commit is contained in:
Alexander Akhmetov
2025-07-28 10:09:26 +02:00
committed by GitHub
parent f4b4d8ec95
commit 4ad80cec1a
3 changed files with 127 additions and 4 deletions
@@ -1567,7 +1567,18 @@ func TestRouteConvertPrometheusPostAlertmanagerConfig(t *testing.T) {
ft := featuremgmt.WithFeatures(featuremgmt.FlagAlertingImportAlertmanagerAPI)
srv, _, _ := createConvertPrometheusSrv(t, withAlertmanager(mockAM), withFeatureToggles(ft))
amCfg := apimodels.AlertmanagerUserConfig{}
amCfg := apimodels.AlertmanagerUserConfig{
AlertmanagerConfig: `{
"route": {
"receiver": "default"
},
"receivers": [
{
"name": "default"
}
]
}`,
}
response := srv.RouteConvertPrometheusPostAlertmanagerConfig(rc, amCfg)
require.Equal(t, http.StatusAccepted, response.Status())
@@ -1585,6 +1596,26 @@ func TestRouteConvertPrometheusPostAlertmanagerConfig(t *testing.T) {
require.Equal(t, http.StatusBadRequest, response.Status())
require.Contains(t, string(response.Body()), "format should be 'key=value,key2=value2'")
})
t.Run("should return error when alertmanager config has empty route", func(t *testing.T) {
rc := createRequestCtx()
rc.Req.Header.Set(configIdentifierHeader, identifier)
rc.Req.Header.Set(mergeMatchersHeader, "env=prod")
amCfg := apimodels.AlertmanagerUserConfig{
AlertmanagerConfig: `{
"receivers": [
{
"name": "default"
}
]
}`,
}
response := srv.RouteConvertPrometheusPostAlertmanagerConfig(rc, amCfg)
require.Equal(t, http.StatusBadRequest, response.Status())
require.Contains(t, string(response.Body()), "failed to parse alertmanager config")
})
}
func TestRouteConvertPrometheusGetAlertmanagerConfig(t *testing.T) {