Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106409)

pull/106430/head
Vadim Stepanov 3 weeks ago committed by GitHub
parent 5a13fccd62
commit 1df888c517
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      pkg/services/ngalert/api/api_provisioning.go
  2. 14
      pkg/services/ngalert/api/api_provisioning_test.go

@ -499,6 +499,9 @@ func (srv *ProvisioningSrv) RoutePutAlertRuleGroup(c *contextmodel.ReqContext, a
if errors.Is(err, store.ErrOptimisticLock) {
return ErrResp(http.StatusConflict, err, "")
}
if errors.Is(err, alerting_models.ErrQuotaReached) {
return ErrResp(http.StatusForbidden, err, "")
}
if err != nil {
return response.ErrOrFallback(http.StatusInternalServerError, "", err)
}

@ -645,6 +645,20 @@ func TestProvisioningApi(t *testing.T) {
})
})
t.Run("have reached the rule quota, PUT returns 403", func(t *testing.T) {
env := createTestEnv(t, testConfig)
quotas := provisioning.MockQuotaChecker{}
quotas.EXPECT().LimitExceeded()
env.quotas = &quotas
sut := createProvisioningSrvSutFromEnv(t, &env)
group := createTestAlertRuleGroup(1)
rc := createTestRequestCtx()
response := sut.RoutePutAlertRuleGroup(&rc, group, "folder-uid", group.Title)
require.Equal(t, 403, response.Status())
})
t.Run("are valid", func(t *testing.T) {
t.Run("PUT returns 200", func(t *testing.T) {
sut := createProvisioningSrvSut(t)

Loading…
Cancel
Save