Alerting: Fix contact point export 500 error and notifications/receivers missing settings (#90342)

* Regression test

* Fix 500 error when exporting redacted receivers

* Fix tests to check permissions
This commit is contained in:
Matthew Jacobson
2024-07-12 11:42:22 -04:00
committed by GitHub
parent 5d8ca38b9b
commit b7767c79e7
7 changed files with 130 additions and 61 deletions

View File

@@ -1473,9 +1473,26 @@ func TestProvisioningApi(t *testing.T) {
}
func TestProvisioningApiContactPointExport(t *testing.T) {
createTestEnv := func(t *testing.T, testConfig string) testEnvironment {
env := createTestEnv(t, testConfig)
env.ac = &recordingAccessControlFake{
Callback: func(user *user.SignedInUser, evaluator accesscontrol.Evaluator) (bool, error) {
if strings.Contains(evaluator.String(), accesscontrol.ActionAlertingNotificationsRead) {
return true, nil
}
if strings.Contains(evaluator.String(), accesscontrol.ActionAlertingReceiversList) {
return true, nil
}
return false, nil
},
}
return env
}
t.Run("contact point export", func(t *testing.T) {
t.Run("are present, GET returns 200", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
response := sut.RouteGetContactPointsExport(&rc)
@@ -1484,7 +1501,8 @@ func TestProvisioningApiContactPointExport(t *testing.T) {
})
t.Run("accept header contains yaml, GET returns text yaml", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
rc.Context.Req.Header.Add("Accept", "application/yaml")
@@ -1496,7 +1514,8 @@ func TestProvisioningApiContactPointExport(t *testing.T) {
})
t.Run("accept header contains json, GET returns json", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
rc.Context.Req.Header.Add("Accept", "application/json")
@@ -1508,7 +1527,8 @@ func TestProvisioningApiContactPointExport(t *testing.T) {
})
t.Run("accept header contains json and yaml, GET returns json", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
rc.Context.Req.Header.Add("Accept", "application/json, application/yaml")
@@ -1520,7 +1540,8 @@ func TestProvisioningApiContactPointExport(t *testing.T) {
})
t.Run("query param download=true, GET returns content disposition attachment", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
rc.Context.Req.Form.Set("download", "true")
@@ -1532,7 +1553,8 @@ func TestProvisioningApiContactPointExport(t *testing.T) {
})
t.Run("query param download=false, GET returns empty content disposition", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
rc.Context.Req.Form.Set("download", "false")
@@ -1544,7 +1566,8 @@ func TestProvisioningApiContactPointExport(t *testing.T) {
})
t.Run("query param download not set, GET returns empty content disposition", func(t *testing.T) {
sut := createProvisioningSrvSut(t)
env := createTestEnv(t, testConfig)
sut := createProvisioningSrvSutFromEnv(t, &env)
rc := createTestRequestCtx()
response := sut.RouteGetContactPointsExport(&rc)