Ejemplo n.º 1
0
    def test_no_pending_delete_trigger_on_skipped_delete(self):
        org = self.create_organization(name="test")
        project = self.create_project(organization=org)
        repo = self.create_repo(project=project, name="example/example")

        signal_handler = Mock()
        pending_delete.connect(signal_handler)

        ScheduledDeletion.schedule(instance=repo, actor=self.user, days=0)

        with self.tasks():
            run_scheduled_deletions()

        pending_delete.disconnect(signal_handler)
        assert signal_handler.call_count == 0
Ejemplo n.º 2
0
    def test_triggers_pending_delete_signal(self):
        signal_handler = Mock()
        pending_delete.connect(signal_handler)

        org = self.create_organization(name="test")
        team = self.create_team(organization=org, name="delete")
        ScheduledDeletion.schedule(instance=team, actor=self.user, days=0)

        with self.tasks():
            run_scheduled_deletions()

        assert signal_handler.call_count == 1
        args = signal_handler.call_args_list[0][1]
        assert args["instance"] == team
        assert args["actor"] == self.user
        pending_delete.disconnect(signal_handler)
Ejemplo n.º 3
0
        return

    # TODO(lb): I'm assuming that this is used by integrations... is it?
    def handle_exception(exc):
        from sentry.exceptions import InvalidIdentity, PluginError
        from sentry.integrations.exceptions import IntegrationError
        if isinstance(exc, (IntegrationError, PluginError, InvalidIdentity)):
            error = exc.message
        else:
            error = 'An unknown error occurred'
        if actor is not None:
            msg = instance.generate_delete_fail_email(error)
            msg.send_async(to=[actor.email])

    if instance.has_integration_provider():
        try:
            instance.get_provider().delete_repository(repo=instance)
        except Exception as exc:
            handle_exception(exc)
    else:
        try:
            instance.get_provider().delete_repository(
                repo=instance,
                actor=actor,
            )
        except Exception as exc:
            handle_exception(exc)


pending_delete.connect(on_delete, sender=Repository, weak=False)
Ejemplo n.º 4
0
    # TODO(lb): I'm assuming that this is used by integrations... is it?
    def handle_exception(exc):
        from sentry.exceptions import InvalidIdentity, PluginError
        from sentry.integrations.exceptions import IntegrationError
        if isinstance(exc, (IntegrationError, PluginError, InvalidIdentity)):
            error = exc.message
        else:
            error = 'An unknown error occurred'
        if actor is not None:
            msg = instance.generate_delete_fail_email(error)
            msg.send_async(to=[actor.email])

    if instance.has_integration_provider():
        try:
            instance.get_provider().on_delete_repository(repo=instance)
        except Exception as exc:
            handle_exception(exc)
    else:
        try:
            instance.get_provider().delete_repository(
                repo=instance,
                actor=actor,
            )
        except Exception as exc:
            handle_exception(exc)


pending_delete.connect(on_delete, sender=Repository, weak=False)
pre_delete.connect(delete_pending_deletion_option, sender=Repository, weak=False)