Changeset View
Changeset View
Standalone View
Standalone View
users/tests/test_webhooks.py
| from typing import Dict, Union | from typing import Dict, Union | ||||
| from unittest.mock import patch, Mock | from unittest.mock import patch, Mock | ||||
| import hashlib | import hashlib | ||||
| import hmac | import hmac | ||||
| import json | import json | ||||
| import responses | import responses | ||||
| from django.contrib.admin.models import LogEntry, CHANGE | from django.contrib.admin.models import LogEntry, CHANGE | ||||
| from django.contrib.auth import get_user_model | from django.contrib.auth import get_user_model | ||||
| from django.contrib.auth.models import Group | from django.contrib.auth.models import Group | ||||
| from django.test import TestCase, override_settings, TransactionTestCase | from django.test import TestCase, override_settings, TransactionTestCase | ||||
| from django.urls import reverse | from django.urls import reverse | ||||
| import dateutil | |||||
| from common.tests.factories.users import UserFactory | from common.tests.factories.users import UserFactory | ||||
| import users.tests.util as util | import users.tests.util as util | ||||
| import users.tasks as tasks | import users.tasks as tasks | ||||
| import users.views.webhooks as webhooks | import users.views.webhooks as webhooks | ||||
| User = get_user_model() | User = get_user_model() | ||||
| BLENDER_ID_BASE_URL = 'http://id.local:8000/' | BLENDER_ID_BASE_URL = 'http://id.local:8000/' | ||||
| ▲ Show 20 Lines • Show All 398 Lines • ▼ Show 20 Lines | def test_user_modified_avatar_changed(self): | ||||
| ) | ) | ||||
| self.assertRegex(logs.output[0], 'Profile image updated for') | self.assertRegex(logs.output[0], 'Profile image updated for') | ||||
| self.assertEquals(response.status_code, 204) | self.assertEquals(response.status_code, 204) | ||||
| self.assertEquals(response.content, b'') | self.assertEquals(response.content, b'') | ||||
| user = User.objects.get(id=self.user.pk) | user = User.objects.get(id=self.user.pk) | ||||
| self.assertTrue(user.image_url, 's3://file') | self.assertTrue(user.image_url, 's3://file') | ||||
| @responses.activate | |||||
| def test_user_modified_date_deletion_requested_is_set(self): | |||||
| date_deletion_requested = '2020-12-31T23:02:03+00:00' | |||||
| body = { | |||||
| **self.webhook_payload, | |||||
| 'date_deletion_requested': date_deletion_requested, | |||||
| } | |||||
| with self.assertLogs('users.models', level='WARNING') as logs: | |||||
| response = self.client.post( | |||||
| self.url, body, content_type='application/json', **prepare_hmac_header(body) | |||||
| ) | |||||
| self.assertEquals( | |||||
| logs.output[0], | |||||
| f'WARNING:users.models:Deletion of pk={self.user.pk}' | |||||
| f' requested on {date_deletion_requested}, deactivating this account' | |||||
| ) | |||||
| self.assertEquals(response.status_code, 204) | |||||
| self.assertEquals(response.content, b'') | |||||
| user = User.objects.get(id=self.user.pk) | |||||
| self.assertEquals(user.date_deletion_requested, dateutil.parser.parse(date_deletion_requested)) | |||||
| self.assertFalse(user.is_active) | |||||
| @override_settings( | @override_settings( | ||||
| BLENDER_ID={ | BLENDER_ID={ | ||||
| 'BASE_URL': BLENDER_ID_BASE_URL, | 'BASE_URL': BLENDER_ID_BASE_URL, | ||||
| 'OAUTH_CLIENT': 'testoauthclient', | 'OAUTH_CLIENT': 'testoauthclient', | ||||
| 'OAUTH_SECRET': 'testoathsecret', | 'OAUTH_SECRET': 'testoathsecret', | ||||
| 'WEBHOOK_USER_MODIFIED_SECRET': b'testsecret', | 'WEBHOOK_USER_MODIFIED_SECRET': b'testsecret', | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 135 Lines • Show Last 20 Lines | |||||