Indicate whether templates are provisioned (#49025)
This commit is contained in:
@@ -232,6 +232,15 @@ func TestAlertmanagerConfig(t *testing.T) {
|
||||
body := asGettableUserConfig(t, response)
|
||||
require.Equal(t, ngmodels.ProvenanceNone, body.AlertmanagerConfig.Receivers[0].GrafanaManagedReceivers[0].Provenance)
|
||||
})
|
||||
t.Run("templates from GET config have no provenance", func(t *testing.T) {
|
||||
sut := createSut(t, nil)
|
||||
rc := createRequestCtxInOrg(1)
|
||||
|
||||
response := sut.RouteGetAlertingConfig(rc)
|
||||
|
||||
body := asGettableUserConfig(t, response)
|
||||
require.Nil(t, body.TemplateFileProvenances)
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("when objects are provisioned", func(t *testing.T) {
|
||||
@@ -265,6 +274,18 @@ func TestAlertmanagerConfig(t *testing.T) {
|
||||
|
||||
require.Equal(t, ngmodels.ProvenanceAPI, body.AlertmanagerConfig.Receivers[0].GrafanaManagedReceivers[0].Provenance)
|
||||
})
|
||||
t.Run("templates from GET config have expected provenance", func(t *testing.T) {
|
||||
sut := createSut(t, nil)
|
||||
rc := createRequestCtxInOrg(1)
|
||||
setTemplateProvenance(t, 1, "a", sut.mam.ProvStore)
|
||||
|
||||
response := sut.RouteGetAlertingConfig(rc)
|
||||
|
||||
body := asGettableUserConfig(t, response)
|
||||
require.NotNil(t, body.TemplateFileProvenances)
|
||||
require.Len(t, body.TemplateFileProvenances, 1)
|
||||
require.Equal(t, ngmodels.ProvenanceAPI, body.TemplateFileProvenances["a"])
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -522,7 +543,29 @@ func createMultiOrgAlertmanager(t *testing.T) *notifier.MultiOrgAlertmanager {
|
||||
return mam
|
||||
}
|
||||
|
||||
var validConfig = setting.GetAlertmanagerDefaultConfiguration()
|
||||
var validConfig = `{
|
||||
"template_files": {
|
||||
"a": "template"
|
||||
},
|
||||
"alertmanager_config": {
|
||||
"route": {
|
||||
"receiver": "grafana-default-email"
|
||||
},
|
||||
"receivers": [{
|
||||
"name": "grafana-default-email",
|
||||
"grafana_managed_receiver_configs": [{
|
||||
"uid": "",
|
||||
"name": "email receiver",
|
||||
"type": "email",
|
||||
"isDefault": true,
|
||||
"settings": {
|
||||
"addresses": "<example@email.com>"
|
||||
}
|
||||
}]
|
||||
}]
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
var brokenConfig = `
|
||||
"alertmanager_config": {
|
||||
@@ -605,6 +648,13 @@ func setContactPointProvenance(t *testing.T, orgID int64, UID string, ps provisi
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
// setTemplateProvenance marks a template as provisioned.
|
||||
func setTemplateProvenance(t *testing.T, orgID int64, name string, ps provisioning.ProvisioningStore) {
|
||||
t.Helper()
|
||||
err := ps.SetProvenance(context.Background(), &apimodels.MessageTemplate{Name: name}, orgID, ngmodels.ProvenanceAPI)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func asGettableUserConfig(t *testing.T, r response.Response) *apimodels.GettableUserConfig {
|
||||
t.Helper()
|
||||
body := &apimodels.GettableUserConfig{}
|
||||
|
||||
@@ -561,8 +561,9 @@ func (c *PostableUserConfig) UnmarshalYAML(value *yaml.Node) error {
|
||||
|
||||
// swagger:model
|
||||
type GettableUserConfig struct {
|
||||
TemplateFiles map[string]string `yaml:"template_files" json:"template_files"`
|
||||
AlertmanagerConfig GettableApiAlertingConfig `yaml:"alertmanager_config" json:"alertmanager_config"`
|
||||
TemplateFiles map[string]string `yaml:"template_files" json:"template_files"`
|
||||
TemplateFileProvenances map[string]models.Provenance `yaml:"template_file_provenances,omitempty" json:"template_file_provenances,omitempty"`
|
||||
AlertmanagerConfig GettableApiAlertingConfig `yaml:"alertmanager_config" json:"alertmanager_config"`
|
||||
|
||||
// amSimple stores a map[string]interface of the decoded alertmanager config.
|
||||
// This enables circumventing the underlying alertmanager secret type
|
||||
|
||||
Reference in New Issue
Block a user