diff --git a/pkg/services/ngalert/api/api_provisioning.go b/pkg/services/ngalert/api/api_provisioning.go index be67dc59488..3785c421d20 100644 --- a/pkg/services/ngalert/api/api_provisioning.go +++ b/pkg/services/ngalert/api/api_provisioning.go @@ -266,6 +266,9 @@ func (srv *ProvisioningSrv) RouteGetAlertRules(c *contextmodel.ReqContext) respo func (srv *ProvisioningSrv) RouteRouteGetAlertRule(c *contextmodel.ReqContext, UID string) response.Response { rule, provenace, err := srv.alertRules.GetAlertRule(c.Req.Context(), c.OrgID, UID) if err != nil { + if errors.Is(err, alerting_models.ErrAlertRuleNotFound) { + return response.Empty(http.StatusNotFound) + } return ErrResp(http.StatusInternalServerError, err, "") } return response.JSON(http.StatusOK, ProvisionedAlertRuleFromAlertRule(rule, provenace)) diff --git a/pkg/services/ngalert/api/api_provisioning_test.go b/pkg/services/ngalert/api/api_provisioning_test.go index a31e4cc4ab6..4e27bdd271e 100644 --- a/pkg/services/ngalert/api/api_provisioning_test.go +++ b/pkg/services/ngalert/api/api_provisioning_test.go @@ -307,6 +307,14 @@ func TestProvisioningApi(t *testing.T) { require.Equal(t, 404, response.Status()) }) + t.Run("are missing, GET returns 404", func(t *testing.T) { + sut := createProvisioningSrvSut(t) + rc := createTestRequestCtx() + response := sut.RouteRouteGetAlertRule(&rc, "does not exist") + + require.Equal(t, 404, response.Status()) + }) + t.Run("have reached the rule quota, POST returns 403", func(t *testing.T) { env := createTestEnv(t) quotas := provisioning.MockQuotaChecker{}