123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- from unittest.mock import Mock, patch
- import pytest
- from django.contrib.auth import get_user_model
- from ...conf.test import override_dynamic_settings
- from ..exceptions import OAuth2UserDataValidationError
- from ..models import Subject
- from ..user import get_user_from_data
- User = get_user_model()
- def test_activated_user_is_created_from_valid_data(db, dynamic_settings):
- user, created = get_user_from_data(
- Mock(settings=dynamic_settings, user_ip="83.0.0.1"),
- {
- "id": "1234",
- "name": "NewUser",
- "email": "user@example.com",
- "avatar": None,
- },
- )
- assert created
- assert user.id
- assert user.username == "NewUser"
- assert user.slug == "newuser"
- assert user.email == "user@example.com"
- assert user.requires_activation == User.ACTIVATION_NONE
- user_by_name = User.objects.get_by_username("NewUser")
- assert user_by_name.id == user.id
- user_by_email = User.objects.get_by_email("user@example.com")
- assert user_by_email.id == user.id
- def test_user_subject_is_created_from_valid_data(db, dynamic_settings):
- user, created = get_user_from_data(
- Mock(settings=dynamic_settings, user_ip="83.0.0.1"),
- {
- "id": "1234",
- "name": "NewUser",
- "email": "user@example.com",
- "avatar": None,
- },
- )
- assert created
- assert user
- user_subject = Subject.objects.get(sub="1234")
- assert user_subject.user_id == user.id
- def test_user_is_created_with_avatar_from_valid_data(db, dynamic_settings):
- user, created = get_user_from_data(
- Mock(settings=dynamic_settings, user_ip="83.0.0.1"),
- {
- "id": "1234",
- "name": "NewUser",
- "email": "user@example.com",
- "avatar": "https://placekitten.com/600/500",
- },
- )
- assert created
- assert user
- assert user.avatars
- assert user.avatar_set.exists()
- @override_dynamic_settings(account_activation="admin")
- def test_user_is_created_with_admin_activation_from_valid_data(db, dynamic_settings):
- user, created = get_user_from_data(
- Mock(settings=dynamic_settings, user_ip="83.0.0.1"),
- {
- "id": "1234",
- "name": "NewUser",
- "email": "user@example.com",
- "avatar": None,
- },
- )
- assert created
- assert user
- assert user.requires_activation == User.ACTIVATION_ADMIN
- def user_noop_filter(*args):
- pass
- def test_user_name_conflict_during_creation_from_valid_data_is_handled(
- user, dynamic_settings
- ):
- with pytest.raises(OAuth2UserDataValidationError) as excinfo:
- # Custom filters disable build in filters
- with patch(
- "misago.oauth2.validation.oauth2_user_data_filters",
- [user_noop_filter],
- ):
- get_user_from_data(
- Mock(settings=dynamic_settings, user_ip="83.0.0.1"),
- {
- "id": "1234",
- "name": user.username,
- "email": "test@example.com",
- "avatar": None,
- },
- )
- assert excinfo.value.error_list == ["This username is not available."]
- def test_user_email_conflict_during_creation_from_valid_data_is_handled(
- user, dynamic_settings
- ):
- with pytest.raises(OAuth2UserDataValidationError) as excinfo:
- get_user_from_data(
- Mock(settings=dynamic_settings, user_ip="83.0.0.1"),
- {
- "id": "1234",
- "name": "NewUser",
- "email": user.email,
- "avatar": None,
- },
- )
- assert excinfo.value.error_list == ["This e-mail address is not available."]
|