aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/tests/test_deleted_messages.py
blob: 7ddd96861e304d2ff92535c87ffa20815adc5b27 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from datetime import UTC, datetime

from django.urls import reverse

from .base import AuthenticatedAPITestCase
from pydis_site.apps.api.models import MessageDeletionContext, User


class DeletedMessagesWithoutActorTests(AuthenticatedAPITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.author = User.objects.create(
            id=55,
            name='Robbie Rotten',
            discriminator=55,
        )

        cls.data = {
            'actor': None,
            'creation': datetime.now(tz=UTC).isoformat(),
            'deletedmessage_set': [
                {
                    'author': cls.author.id,
                    'id': 55,
                    'channel_id': 5555,
                    'content': "Terror Billy is a meanie",
                    'embeds': [],
                    'attachments': []
                },
                {
                    'author': cls.author.id,
                    'id': 56,
                    'channel_id': 5555,
                    'content': "If you purge this, you're evil",
                    'embeds': [],
                    'attachments': []
                }
            ]
        }

    def test_accepts_valid_data(self):
        url = reverse('api:bot:messagedeletioncontext-list')
        response = self.client.post(url, data=self.data)
        self.assertEqual(response.status_code, 201)
        [context] = MessageDeletionContext.objects.all()
        self.assertIsNone(context.actor)


class DeletedMessagesWithActorTests(AuthenticatedAPITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.author = cls.actor = User.objects.create(
            id=12904,
            name='Joe Armstrong',
            discriminator=1245,
        )

        cls.data = {
            'actor': cls.actor.id,
            'creation': datetime.now(tz=UTC).isoformat(),
            'deletedmessage_set': [
                {
                    'author': cls.author.id,
                    'id': 12903,
                    'channel_id': 1824,
                    'content': "I hate trailing commas",
                    'embeds': [],
                    'attachments': []
                },
            ]
        }

    def test_accepts_valid_data_and_sets_actor(self):
        url = reverse('api:bot:messagedeletioncontext-list')
        response = self.client.post(url, data=self.data)
        self.assertEqual(response.status_code, 201)
        [context] = MessageDeletionContext.objects.all()
        self.assertEqual(context.actor.id, self.actor.id)


class DeletedMessagesLogURLTests(AuthenticatedAPITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.author = cls.actor = User.objects.create(
            id=324888,
            name='Black Knight',
            discriminator=1975,
        )

        cls.deletion_context = MessageDeletionContext.objects.create(
            actor=cls.actor,
            creation=datetime.now(tz=UTC),
        )

    def test_valid_log_url(self):
        [context] = MessageDeletionContext.objects.all()
        expected_url = reverse('staff:logs', args=(context.id,))
        self.assertEqual(context.log_url, expected_url)