def test_creates_audit_log_entry(self): request = self.make_request(user=self.user, method='GET') Destroyer.run( sentry_app=self.sentry_app, request=request, ) assert AuditLogEntry.objects.filter(event=AuditLogEntryEvent.SENTRY_APP_REMOVE).exists()
def test_passes_notify_false_if_app_internal(self, run): self.create_project(organization=self.org) internal = self.create_internal_integration(organization=self.org) Destroyer.run(sentry_app=internal, user=self.user) run.assert_called_with( install=internal.installations.first(), user=internal.proxy_user, notify=False )
def test_creates_audit_log_entry(self): request = self.make_request(user=self.user, method='GET') Destroyer.run( user=self.user, sentry_app=self.sentry_app, request=request, ) assert AuditLogEntry.objects.filter(event=AuditLogEntryEvent.SENTRY_APP_REMOVE).exists()
def delete(self, request: Request, sentry_app) -> Response: if sentry_app.is_unpublished or sentry_app.is_internal: Destroyer.run(user=request.user, sentry_app=sentry_app, request=request) return Response(status=204) return Response({"detail": ["Published apps cannot be removed."]}, status=403)
def disable_scim(self, user): from sentry.mediators.sentry_apps import Destroyer from sentry.models import SentryAppInstallationForProvider if self.flags.scim_enabled: install = SentryAppInstallationForProvider.objects.get( organization=self.organization, provider=f"{self.provider}_scim" ) Destroyer.run(sentry_app=install.sentry_app_installation.sentry_app, user=user) self.flags.scim_enabled = False
def delete(self, request, sentry_app): if not features.has('organizations:internal-catchall', sentry_app.owner, actor=request.user): return Response(status=404) if sentry_app.status == SentryAppStatus.UNPUBLISHED: Destroyer.run(sentry_app=sentry_app) return Response(status=204) return Response({'detail': ['Published apps cannot be removed.']}, status=403)
def test_records_analytics(self, record): Destroyer.run( user=self.user, sentry_app=self.sentry_app, request=self.make_request(user=self.user, method="GET"), ) record.assert_called_with( "sentry_app.deleted", user_id=self.user.id, organization_id=self.org.id, sentry_app=self.sentry_app.slug, )
def test_records_analytics(self, record): Destroyer.run( user=self.user, sentry_app=self.sentry_app, request=self.make_request(user=self.user, method='GET'), ) record.assert_called_with( 'sentry_app.deleted', user_id=self.user.id, organization_id=self.org.id, sentry_app=self.sentry_app.slug, )
def delete(self, request, sentry_app): if not features.has("organizations:sentry-apps", sentry_app.owner, actor=request.user): return Response(status=404) if sentry_app.is_unpublished or sentry_app.is_internal: Destroyer.run(user=request.user, sentry_app=sentry_app, request=request) return Response(status=204) return Response({"detail": ["Published apps cannot be removed."]}, status=403)
def delete(self, request, sentry_app): if not features.has('organizations:internal-catchall', sentry_app.owner, actor=request.user): return Response(status=404) if sentry_app.status == SentryAppStatus.UNPUBLISHED: Destroyer.run(sentry_app=sentry_app) return Response(status=204) return Response( { 'detail': ['Published apps cannot be removed.'] }, status=403 )