mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 14:00:17 +02:00
Add more tests for state change
This commit is contained in:
parent
8a27de5df8
commit
b266a98b25
@ -16,7 +16,7 @@ import requests_mock
|
|||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth.models import Group, User
|
||||||
from django.core.cache import caches
|
from django.core.cache import caches
|
||||||
from django.shortcuts import reverse
|
from django.shortcuts import reverse
|
||||||
from django.test import TransactionTestCase
|
from django.test import TransactionTestCase, TestCase
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
|
|
||||||
from allianceauth.authentication.models import State
|
from allianceauth.authentication.models import State
|
||||||
@ -90,6 +90,15 @@ def clear_cache():
|
|||||||
logger.info('Cache flushed')
|
logger.info('Cache flushed')
|
||||||
|
|
||||||
|
|
||||||
|
def reset_testdata():
|
||||||
|
AuthUtils.disconnect_signals()
|
||||||
|
Group.objects.all().delete()
|
||||||
|
User.objects.all().delete()
|
||||||
|
State.objects.all().delete()
|
||||||
|
EveCharacter.objects.all().delete()
|
||||||
|
AuthUtils.connect_signals()
|
||||||
|
|
||||||
|
|
||||||
@patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
@patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
||||||
@override_settings(CELERY_ALWAYS_EAGER=True)
|
@override_settings(CELERY_ALWAYS_EAGER=True)
|
||||||
@requests_mock.Mocker()
|
@requests_mock.Mocker()
|
||||||
@ -104,12 +113,7 @@ class TestServiceFeatures(TransactionTestCase):
|
|||||||
def setUp(self):
|
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()
|
clear_cache()
|
||||||
AuthUtils.disconnect_signals()
|
reset_testdata()
|
||||||
Group.objects.all().delete()
|
|
||||||
User.objects.all().delete()
|
|
||||||
State.objects.all().delete()
|
|
||||||
EveCharacter.objects.all().delete()
|
|
||||||
AuthUtils.connect_signals()
|
|
||||||
self.group_3 = Group.objects.create(name='charlie')
|
self.group_3 = Group.objects.create(name='charlie')
|
||||||
|
|
||||||
# States
|
# States
|
||||||
@ -340,6 +344,80 @@ class TestServiceFeatures(TransactionTestCase):
|
|||||||
self.assertListEqual(requests_made, expected)
|
self.assertListEqual(requests_made, expected)
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(CELERY_ALWAYS_EAGER=True)
|
||||||
|
@patch(MODULE_PATH + '.managers.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
||||||
|
@patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
||||||
|
@requests_mock.Mocker()
|
||||||
|
class StateTestCase(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
clear_cache()
|
||||||
|
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')
|
||||||
|
self.test_character = EveCharacter.objects.get(character_id='99')
|
||||||
|
self.member_state = State.objects.create(
|
||||||
|
name='Test Member',
|
||||||
|
priority=150,
|
||||||
|
)
|
||||||
|
self.access_discord = AuthUtils.get_permission_by_name('discord.access_discord')
|
||||||
|
self.member_state.permissions.add(self.access_discord)
|
||||||
|
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")
|
||||||
|
|
||||||
|
def _refresh_user(self):
|
||||||
|
self.user = User.objects.get(pk=self.user.pk)
|
||||||
|
|
||||||
|
def test_perm_changes_to_higher_priority_state_creation(self, requests_mocker):
|
||||||
|
mock_url = DiscordRequest(method='DELETE',url=f'{DISCORD_API_BASE_URL}guilds/{TEST_GUILD_ID}/members/12345678910')
|
||||||
|
requests_mocker.delete(mock_url.url, status_code=204)
|
||||||
|
self._add_discord_user()
|
||||||
|
self._refresh_user()
|
||||||
|
higher_state = State.objects.create(
|
||||||
|
name='Higher State',
|
||||||
|
priority=200,
|
||||||
|
)
|
||||||
|
self.assertIsNotNone(self.user.discord)
|
||||||
|
higher_state.member_characters.add(self.test_character)
|
||||||
|
self._refresh_user()
|
||||||
|
self.assertEquals(higher_state, self.user.profile.state)
|
||||||
|
with self.assertRaises(DiscordUser.DoesNotExist):
|
||||||
|
self.user.discord
|
||||||
|
higher_state.member_characters.clear()
|
||||||
|
self._refresh_user()
|
||||||
|
self.assertEquals(self.member_state, self.user.profile.state)
|
||||||
|
with self.assertRaises(DiscordUser.DoesNotExist):
|
||||||
|
self.user.discord
|
||||||
|
|
||||||
|
def test_perm_changes_to_lower_priority_state_creation(self, requests_mocker):
|
||||||
|
mock_url = DiscordRequest(method='DELETE',url=f'{DISCORD_API_BASE_URL}guilds/{TEST_GUILD_ID}/members/12345678910')
|
||||||
|
requests_mocker.delete(mock_url.url, status_code=204)
|
||||||
|
self._add_discord_user()
|
||||||
|
self._refresh_user()
|
||||||
|
lower_state = State.objects.create(
|
||||||
|
name='Lower State',
|
||||||
|
priority=125,
|
||||||
|
)
|
||||||
|
self.assertIsNotNone(self.user.discord)
|
||||||
|
lower_state.member_characters.add(self.test_character)
|
||||||
|
self._refresh_user()
|
||||||
|
self.assertEquals(self.member_state, self.user.profile.state)
|
||||||
|
self.member_state.member_characters.clear()
|
||||||
|
self._refresh_user()
|
||||||
|
self.assertEquals(lower_state, self.user.profile.state)
|
||||||
|
with self.assertRaises(DiscordUser.DoesNotExist):
|
||||||
|
self.user.discord
|
||||||
|
self.member_state.member_characters.add(self.test_character)
|
||||||
|
self._refresh_user()
|
||||||
|
self.assertEquals(self.member_state, self.user.profile.state)
|
||||||
|
with self.assertRaises(DiscordUser.DoesNotExist):
|
||||||
|
self.user.discord
|
||||||
|
|
||||||
|
|
||||||
@patch(MODULE_PATH + '.managers.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
@patch(MODULE_PATH + '.managers.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
||||||
@patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
@patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID)
|
||||||
@requests_mock.Mocker()
|
@requests_mock.Mocker()
|
||||||
@ -347,6 +425,7 @@ class TestUserFeatures(WebTest):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
clear_cache()
|
clear_cache()
|
||||||
|
reset_testdata()
|
||||||
self.member = AuthUtils.create_member(TEST_USER_NAME)
|
self.member = AuthUtils.create_member(TEST_USER_NAME)
|
||||||
AuthUtils.add_main_character_2(
|
AuthUtils.add_main_character_2(
|
||||||
self.member,
|
self.member,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user