mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-10 17:16:22 +01:00
Add state info to dashboard, improve stat change notifications, improve auth tests
This commit is contained in:
@@ -33,7 +33,8 @@ class DiscordService(ServicesHook):
|
||||
if self.user_has_account(user):
|
||||
logger.debug('Deleting user %s %s account', user, self.name)
|
||||
tasks.delete_user.apply_async(
|
||||
kwargs={'user_pk': user.pk}, priority=SINGLE_TASK_PRIORITY
|
||||
kwargs={'user_pk': user.pk, 'notify_user': notify_user},
|
||||
priority=SINGLE_TASK_PRIORITY
|
||||
)
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
|
||||
@@ -6,7 +6,6 @@ from requests.exceptions import HTTPError
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.query import QuerySet
|
||||
|
||||
from allianceauth.authentication.models import UserProfile
|
||||
from allianceauth.services.tasks import QueueOnce
|
||||
|
||||
from . import __title__
|
||||
|
||||
@@ -3,6 +3,7 @@ from unittest.mock import patch
|
||||
from django.test import TestCase, RequestFactory
|
||||
from django.test.utils import override_settings
|
||||
|
||||
from allianceauth.notifications.models import Notification
|
||||
from allianceauth.tests.auth_utils import AuthUtils
|
||||
|
||||
from . import TEST_USER_NAME, TEST_USER_ID, add_permissions_to_members, MODULE_PATH
|
||||
@@ -30,6 +31,7 @@ class TestDiscordService(TestCase):
|
||||
self.service = DiscordService
|
||||
add_permissions_to_members()
|
||||
self.factory = RequestFactory()
|
||||
Notification.objects.all().delete()
|
||||
|
||||
def test_service_enabled(self):
|
||||
service = self.service()
|
||||
@@ -89,16 +91,17 @@ class TestDiscordService(TestCase):
|
||||
service = self.service()
|
||||
service.sync_nicknames_bulk([self.member])
|
||||
self.assertTrue(mock_update_nicknames_bulk.delay.called)
|
||||
|
||||
|
||||
@patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient)
|
||||
def test_delete_user_is_member(self, mock_DiscordClient):
|
||||
def test_delete_user_is_member(self, mock_DiscordClient):
|
||||
mock_DiscordClient.return_value.remove_guild_member.return_value = True
|
||||
|
||||
service = self.service()
|
||||
service.delete_user(self.member)
|
||||
service = self.service()
|
||||
service.delete_user(self.member, notify_user=True)
|
||||
|
||||
self.assertTrue(mock_DiscordClient.return_value.remove_guild_member.called)
|
||||
self.assertFalse(DiscordUser.objects.filter(user=self.member).exists())
|
||||
self.assertFalse(DiscordUser.objects.filter(user=self.member).exists())
|
||||
self.assertTrue(Notification.objects.filter(user=self.member).exists())
|
||||
|
||||
@patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient)
|
||||
def test_delete_user_is_not_member(self, mock_DiscordClient):
|
||||
|
||||
@@ -21,6 +21,7 @@ from django.test.utils import override_settings
|
||||
|
||||
from allianceauth.authentication.models import State
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
from allianceauth.notifications.models import Notification
|
||||
from allianceauth.tests.auth_utils import AuthUtils
|
||||
|
||||
from . import (
|
||||
@@ -97,6 +98,7 @@ def reset_testdata():
|
||||
State.objects.all().delete()
|
||||
EveCharacter.objects.all().delete()
|
||||
AuthUtils.connect_signals()
|
||||
Notification.objects.all().delete()
|
||||
|
||||
|
||||
@patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
||||
@@ -109,9 +111,10 @@ class TestServiceFeatures(TransactionTestCase):
|
||||
super().setUpClass()
|
||||
cls.maxDiff = None
|
||||
|
||||
|
||||
def setUp(self):
|
||||
"""All tests: Given a user with member state, service permission and active Discord account"""
|
||||
"""All tests: Given a user with member state,
|
||||
service permission and active Discord account
|
||||
"""
|
||||
clear_cache()
|
||||
reset_testdata()
|
||||
self.group_charlie = Group.objects.create(name='charlie')
|
||||
@@ -200,8 +203,7 @@ class TestServiceFeatures(TransactionTestCase):
|
||||
|
||||
# should not have called the API
|
||||
requests_made = [
|
||||
requests_made.append(DiscordRequest(r.method, r.url))
|
||||
for r in requests_mocker.request_history
|
||||
DiscordRequest(r.method, r.url) for r in requests_mocker.request_history
|
||||
]
|
||||
|
||||
self.assertListEqual(requests_made, list())
|
||||
@@ -230,7 +232,10 @@ class TestServiceFeatures(TransactionTestCase):
|
||||
requests_made = [
|
||||
DiscordRequest(r.method, r.url) for r in requests_mocker.request_history
|
||||
]
|
||||
self.assertIn(remove_guild_member_request, requests_made)
|
||||
self.assertIn(remove_guild_member_request, requests_made)
|
||||
|
||||
# verify user has been notified
|
||||
self.assertTrue(Notification.objects.filter(user=self.user).exists())
|
||||
|
||||
def test_when_member_changes_to_blue_state_then_roles_are_updated_accordingly(
|
||||
self, requests_mocker
|
||||
@@ -238,7 +243,7 @@ class TestServiceFeatures(TransactionTestCase):
|
||||
# request mocks
|
||||
requests_mocker.get(
|
||||
guild_member_request.url,
|
||||
json={'user': create_user_info(),'roles': ['3', '13', '99']}
|
||||
json={'user': create_user_info(), 'roles': ['3', '13', '99']}
|
||||
)
|
||||
requests_mocker.get(
|
||||
guild_roles_request.url,
|
||||
@@ -322,7 +327,7 @@ class TestServiceFeatures(TransactionTestCase):
|
||||
self.user.groups.add(self.group_charlie)
|
||||
self.user.refresh_from_db()
|
||||
|
||||
# verify roles for user where updated
|
||||
# verify roles for user where updated
|
||||
roles_updated = False
|
||||
for r in requests_mocker.request_history:
|
||||
my_request = DiscordRequest(r.method, r.url)
|
||||
@@ -346,8 +351,14 @@ class StateTestCase(TestCase):
|
||||
reset_testdata()
|
||||
|
||||
self.user = AuthUtils.create_user('test_user', disconnect_signals=True)
|
||||
AuthUtils.add_main_character(self.user, 'Perm Test Character', '99', corp_id='100', alliance_id='200',
|
||||
corp_name='Perm Test Corp', alliance_name='Perm Test Alliance')
|
||||
AuthUtils.add_main_character(
|
||||
self.user,
|
||||
'Perm Test Character', '99',
|
||||
corp_id='100',
|
||||
alliance_id='200',
|
||||
corp_name='Perm Test Corp',
|
||||
alliance_name='Perm Test Alliance'
|
||||
)
|
||||
self.test_character = EveCharacter.objects.get(character_id='99')
|
||||
self.member_state = State.objects.create(
|
||||
name='Test Member',
|
||||
@@ -358,7 +369,9 @@ class StateTestCase(TestCase):
|
||||
self.member_state.member_characters.add(self.test_character)
|
||||
|
||||
def _add_discord_user(self):
|
||||
self.discord_user = DiscordUser.objects.create(user=self.user, uid="12345678910")
|
||||
self.discord_user = DiscordUser.objects.create(
|
||||
user=self.user, uid="12345678910"
|
||||
)
|
||||
|
||||
def _refresh_user(self):
|
||||
self.user = User.objects.get(pk=self.user.pk)
|
||||
@@ -636,4 +649,3 @@ class TestUserFeatures(WebTest):
|
||||
# check we got can see the page and the "link server" button
|
||||
self.assertEqual(response.status_int, 200)
|
||||
self.assertIsNotNone(response.html.find(id='btnLinkDiscordServer'))
|
||||
|
||||
Reference in New Issue
Block a user