You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/logindata/tests/oauth.py

48 lines
1.9 KiB
Python

from django.test import TestCase
from django.contrib.auth.models import User
from django.conf import settings
from unittest.mock import Mock
from logindata.oauth import CustomOAuth2Validator
from members.models import Member, MALE
class CustomOAuth2ValidatorTestCase(TestCase):
def setUp(self):
self.validator = CustomOAuth2Validator()
# Create user with member
self.user_with_member = User.objects.create_user(username="alice", password="test123")
self.member = Member.objects.create(
prename="Alice", lastname="Smith", birth_date="1990-01-01",
email=settings.TEST_MAIL, gender=MALE, user=self.user_with_member
)
# Create user without member
self.user_without_member = User.objects.create_user(username="bob", password="test123")
def test_get_additional_claims_with_member(self):
"""Test get_additional_claims when user has a member"""
request = Mock()
request.user = self.user_with_member
result = self.validator.get_additional_claims(request)
self.assertEqual(result['email'], settings.TEST_MAIL)
self.assertEqual(result['preferred_username'], 'alice')
def test_get_additional_claims_without_member(self):
"""Test get_additional_claims when user has no member"""
# ensure branch coverage, not possible under standard scenarios
request = Mock()
request.user = Mock()
request.user.member = None
self.assertEqual(len(self.validator.get_additional_claims(request)), 1)
request = Mock()
request.user = self.user_without_member
# The method will raise RelatedObjectDoesNotExist, which means the code
# should use hasattr or try/except. For now, test that it raises.
with self.assertRaises(User.member.RelatedObjectDoesNotExist):
self.validator.get_additional_claims(request)