[release-12.0.2] Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106477)

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

(cherry picked from commit 1df888c517)

Co-authored-by: Vadim Stepanov <vstpme@gmail.com>
This commit is contained in:
grafana-delivery-bot[bot]
2025-06-10 15:27:54 +01:00
committed by GitHub
co-authored by Vadim Stepanov
parent c3ffd59702
commit f593454e54
2 changed files with 17 additions and 0 deletions
@@ -515,6 +515,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)
}
@@ -695,6 +695,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)