def test_excluded_projects(self): projects = [self.project] excluded = [self.create_project()] alert_rule = self.create_alert_rule(projects=[], include_all_projects=True, excluded_projects=excluded) result = serialize(alert_rule, serializer=DetailedAlertRuleSerializer()) self.assert_alert_rule_serialized(alert_rule, result) assert result["projects"] == [p.slug for p in projects] assert result["excludedProjects"] == [p.slug for p in excluded] assert result["eventTypes"] == [ SnubaQueryEventType.EventType.ERROR.name.lower() ] alert_rule = self.create_alert_rule(projects=projects, include_all_projects=False) result = serialize(alert_rule, serializer=DetailedAlertRuleSerializer()) self.assert_alert_rule_serialized(alert_rule, result) assert result["projects"] == [p.slug for p in projects] assert result["excludedProjects"] == [] assert result["eventTypes"] == [ SnubaQueryEventType.EventType.ERROR.name.lower() ]
def test_triggers(self): alert_rule = self.create_alert_rule() other_alert_rule = self.create_alert_rule() trigger = create_alert_rule_trigger(alert_rule, "test", 1000) result = serialize([alert_rule, other_alert_rule], serializer=DetailedAlertRuleSerializer()) assert result[0]["triggers"] == [serialize(trigger)] assert result[1]["triggers"] == []
def test_simple(self): projects = [self.project, self.create_project()] alert_rule = self.create_alert_rule(projects=projects) result = serialize(alert_rule, serializer=DetailedAlertRuleSerializer()) self.assert_alert_rule_serialized(alert_rule, result) assert sorted(result["projects"]) == sorted([p.slug for p in projects]) assert result["excludedProjects"] == []
def test_simple(self): projects = [self.project, self.create_project()] alert_rule = self.create_alert_rule(projects=projects) result = serialize(alert_rule, serializer=DetailedAlertRuleSerializer()) self.assert_alert_rule_serialized(alert_rule, result) assert sorted(result["projects"]) == sorted(p.slug for p in projects) assert result["excludedProjects"] == [] assert result["eventTypes"] == [SnubaQueryEventType.EventType.ERROR.name.lower()]
def get(self, request, organization, alert_rule): """ Fetch an alert rule. `````````````````` :auth: required """ data = serialize(alert_rule, request.user, DetailedAlertRuleSerializer()) return Response(data)
def test_simple(self): self.create_team(organization=self.organization, members=[self.user]) self.login_as(self.user) with self.feature("organizations:incidents"): resp = self.get_valid_response(self.organization.slug, self.alert_rule.id) assert resp.data == serialize(self.alert_rule, serializer=DetailedAlertRuleSerializer())
def test_simple(self): projects = [self.project, self.create_project()] alert_rule = create_alert_rule( self.organization, projects, "hello", AlertRuleThresholdType.ABOVE, "level:error", QueryAggregations.TOTAL, 10, 1000, 400, 1, ) result = serialize(alert_rule, serializer=DetailedAlertRuleSerializer()) self.assert_alert_rule_serialized(alert_rule, result) assert result["projects"] == [p.slug for p in projects]
def get(self, request: Request, organization, alert_rule) -> Response: """ Fetch an alert rule. `````````````````` :auth: required """ # Serialize Alert Rule serialized_rule = serialize(alert_rule, request.user, DetailedAlertRuleSerializer()) # Prepare AlertRuleTriggerActions that are SentryApp components errors = [] for trigger in serialized_rule.get("triggers", []): for action in trigger.get("actions", []): if action.get("_sentry_app_installation") and action.get("_sentry_app_component"): installation = SentryAppInstallation( **action.get("_sentry_app_installation", {}) ) component = installation.prepare_ui_component( SentryAppComponent(**action.get("_sentry_app_component")), None, action.get("settings"), ) if component is None: errors.append( { "detail": f"Could not fetch details from {installation.sentry_app.name}" } ) action["disabled"] = True continue action["formFields"] = component.schema.get("settings", {}) # Delete meta fields del action["_sentry_app_installation"] del action["_sentry_app_component"] if len(errors): serialized_rule["errors"] = errors return Response(serialized_rule)