示例#1
0
    def test_no_attachments_sync(self):
        """command works when there are no attachments"""
        command = clearattachments.Command()

        out = StringIO()
        call_command(command, stdout=out)
        command_output = out.getvalue().strip()

        self.assertEqual(command_output, "No attachments were found")
示例#2
0
    def test_attachments_sync(self):
        """command synchronizes attachments"""
        filetype = AttachmentType.objects.order_by('id').last()

        # create 5 expired orphaned attachments
        cutoff = timezone.now() - timedelta(minutes=settings.MISAGO_ATTACHMENT_ORPHANED_EXPIRE)
        cutoff -= timedelta(minutes=5)

        for _ in range(5):
            Attachment.objects.create(
                secret=Attachment.generate_new_secret(),
                filetype=filetype,
                size=1000,
                uploaded_on=cutoff,
                uploader_name='bob',
                uploader_slug='bob',
                filename='testfile_{}.zip'.format(Attachment.objects.count() + 1),
            )

        # create 5 expired non-orphaned attachments
        category = Category.objects.get(slug='first-category')
        post = testutils.post_thread(category).first_post

        for _ in range(5):
            Attachment.objects.create(
                secret=Attachment.generate_new_secret(),
                filetype=filetype,
                size=1000,
                uploaded_on=cutoff,
                post=post,
                uploader_name='bob',
                uploader_slug='bob',
                filename='testfile_{}.zip'.format(Attachment.objects.count() + 1),
            )

        # create 5 fresh orphaned attachments
        for _ in range(5):
            Attachment.objects.create(
                secret=Attachment.generate_new_secret(),
                filetype=filetype,
                size=1000,
                uploader_name='bob',
                uploader_slug='bob',
                filename='testfile_{}.zip'.format(Attachment.objects.count() + 1),
            )

        command = clearattachments.Command()

        out = StringIO()
        call_command(command, stdout=out)

        command_output = out.getvalue().splitlines()[-1].strip()
        self.assertEqual(command_output, "Cleared 5 attachments")

        self.assertEqual(Attachment.objects.count(), 10)