aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/tests
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/tests')
-rw-r--r--pydis_site/tests/__init__.py0
-rw-r--r--pydis_site/tests/test_utils_account.py79
2 files changed, 43 insertions, 36 deletions
diff --git a/pydis_site/tests/__init__.py b/pydis_site/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/tests/__init__.py
diff --git a/pydis_site/tests/test_utils_account.py b/pydis_site/tests/test_utils_account.py
index d2946368..6f8338b4 100644
--- a/pydis_site/tests/test_utils_account.py
+++ b/pydis_site/tests/test_utils_account.py
@@ -5,7 +5,7 @@ from allauth.socialaccount.models import SocialAccount, SocialLogin
from django.contrib.auth.models import User
from django.contrib.messages.storage.base import BaseStorage
from django.http import HttpRequest
-from django.test import TestCase
+from django.test import RequestFactory, TestCase
from pydis_site.apps.api.models import Role, User as DiscordUser
from pydis_site.utils.account import AccountAdapter, SocialAccountAdapter
@@ -13,28 +13,43 @@ from pydis_site.utils.account import AccountAdapter, SocialAccountAdapter
class AccountUtilsTests(TestCase):
def setUp(self):
+ # Create the user
self.django_user = User.objects.create(username="user")
+ # Create the roles
+ developers_role = Role.objects.create(
+ id=1,
+ name="Developers",
+ colour=0,
+ permissions=0,
+ position=1
+ )
+ everyone_role = Role.objects.create(
+ id=0,
+ name="@everyone",
+ colour=0,
+ permissions=0,
+ position=0
+ )
+
+ # Create the social accounts
self.discord_account = SocialAccount.objects.create(
user=self.django_user, provider="discord", uid=0
)
-
- self.discord_account_role = SocialAccount.objects.create(
+ self.discord_account_one_role = SocialAccount.objects.create(
user=self.django_user, provider="discord", uid=1
)
-
self.discord_account_two_roles = SocialAccount.objects.create(
user=self.django_user, provider="discord", uid=2
)
-
self.discord_account_not_present = SocialAccount.objects.create(
user=self.django_user, provider="discord", uid=3
)
-
self.github_account = SocialAccount.objects.create(
user=self.django_user, provider="github", uid=0
)
+ # Create DiscordUsers
self.discord_user = DiscordUser.objects.create(
id=0,
name="user",
@@ -44,33 +59,18 @@ class AccountUtilsTests(TestCase):
self.discord_user_role = DiscordUser.objects.create(
id=1,
name="user present",
- discriminator=0
+ discriminator=0,
+ roles=[everyone_role.id]
)
self.discord_user_two_roles = DiscordUser.objects.create(
id=2,
name="user with both roles",
- discriminator=0
+ discriminator=0,
+ roles=[everyone_role.id, developers_role.id]
)
- everyone_role = Role.objects.create(
- id=0,
- name="@everyone",
- colour=0,
- permissions=0,
- position=0
- )
-
- self.discord_user_role.roles.add(everyone_role)
- self.discord_user_two_roles.roles.add(everyone_role)
-
- self.discord_user_two_roles.roles.add(Role.objects.create(
- id=1,
- name="Developers",
- colour=0,
- permissions=0,
- position=1
- ))
+ self.request_factory = RequestFactory()
def test_account_adapter(self):
"""Test that our Allauth account adapter functions correctly."""
@@ -83,13 +83,13 @@ class AccountUtilsTests(TestCase):
adapter = SocialAccountAdapter()
discord_login = SocialLogin(account=self.discord_account)
- discord_login_role = SocialLogin(account=self.discord_account_role)
- discord_login_two_roles = SocialLogin(account=self.discord_account_two_roles)
+ discord_login_role = SocialLogin(account=self.discord_account_one_role)
discord_login_not_present = SocialLogin(account=self.discord_account_not_present)
+ discord_login_two_roles = SocialLogin(account=self.discord_account_two_roles)
github_login = SocialLogin(account=self.github_account)
- messages_request = HttpRequest()
+ messages_request = self.request_factory.get("/")
messages_request._messages = BaseStorage(messages_request)
with patch("pydis_site.utils.account.reverse") as mock_reverse:
@@ -106,12 +106,14 @@ class AccountUtilsTests(TestCase):
with self.assertRaises(ImmediateHttpResponse):
adapter.is_open_for_signup(messages_request, discord_login_not_present)
+ self.assertTrue(
+ adapter.is_open_for_signup(messages_request, discord_login_two_roles)
+ )
+
self.assertEqual(len(messages_request._messages._queued_messages), 4)
self.assertEqual(mock_redirect.call_count, 4)
self.assertEqual(mock_reverse.call_count, 4)
- self.assertTrue(adapter.is_open_for_signup(HttpRequest(), discord_login_two_roles))
-
def test_social_account_adapter_populate(self):
"""Test that our Allauth social account adapter correctly handles data population."""
adapter = SocialAccountAdapter()
@@ -120,13 +122,18 @@ class AccountUtilsTests(TestCase):
account=self.discord_account,
user=self.django_user
)
-
discord_login.account.extra_data["discriminator"] = "0000"
- user = adapter.populate_user(
- HttpRequest(), discord_login,
+ discord_user = adapter.populate_user(
+ self.request_factory.get("/"), discord_login,
{"username": "user"}
)
+ self.assertEqual(discord_user.username, "user#0000")
+ self.assertEqual(discord_user.first_name, "user#0000")
- self.assertEqual(user.username, "user#0000")
- self.assertEqual(user.first_name, "user#0000")
+ discord_login.account.provider = "not_discord"
+ not_discord_user = adapter.populate_user(
+ self.request_factory.get("/"), discord_login,
+ {"username": "user"}
+ )
+ self.assertEqual(not_discord_user.username, "user")