Add state info to dashboard, improve stat change notifications, improve auth tests

This commit is contained in:
ErikKalkoken
2020-07-03 14:58:45 +02:00
parent e44c2935f9
commit f1a21bb856
11 changed files with 214 additions and 182 deletions

View File

@@ -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):

View File

@@ -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__

View File

@@ -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):

View File

@@ -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'))