Source code for registration.tests.test_admin

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
from django.test import TestCase
from django.contrib import admin
from django.core.urlresolvers import reverse
from django.core import mail
from django.core import urlresolvers
from registration.compat import get_user_model
from registration.backends.default import DefaultRegistrationBackend
from registration.models import RegistrationProfile
from registration.admin import RegistrationAdmin
from registration.tests.mock import mock_request
from registration.tests.compat import override_settings


@override_settings(
    ACCOUNT_ACTIVATION_DAYS=7,
    REGISTRATION_OPEN=True,
    REGISTRATION_SUPPLEMENT_CLASS=None,
    REGISTRATION_BACKEND_CLASS=(
        'registration.backends.default.DefaultRegistrationBackend'),
)
[docs]class RegistrationAdminTestCase(TestCase):
[docs] def setUp(self): User = get_user_model() self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() self.admin = User.objects.create_superuser( username='mark', email='mark@test.com', password='password') self.client.login(username='mark', password='password') self.admin_url = reverse('admin:index')
[docs] def test_change_list_view_get(self): url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'admin/change_list.html')
[docs] def test_change_view_get(self): self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' )
[docs] def test_change_view_get_404(self): self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(100,)) response = self.client.get(url) self.assertEqual(response.status_code, 404)
[docs] def test_change_view_post_valid_accept_from_untreated(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'accept' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted')
[docs] def test_change_view_post_valid_accept_from_accepted(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) previous_activation_key = new_user.registration_profile.activation_key url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'accept' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted') self.assertNotEqual(profile.activation_key, previous_activation_key)
[docs] def test_change_view_post_valid_accept_from_rejected(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'accept' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted')
[docs] def test_change_view_post_valid_reject_from_untreated(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'reject' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'rejected')
[docs] def test_change_view_post_invalid_reject_from_accepted(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'reject' }) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' ) self.failIf(response.context['adminform'].form.is_valid()) self.assertEqual( response.context['adminform'].form.errors['action_name'], ["Select a valid choice. " "reject is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted')
[docs] def test_change_view_post_invalid_reject_from_rejected(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'reject' }) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' ) self.failIf(response.context['adminform'].form.is_valid()) self.assertEqual( response.context['adminform'].form.errors['action_name'], ["Select a valid choice. " "reject is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'rejected')
[docs] def test_change_view_post_invalid_activate_from_untreated(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'activate' }) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' ) self.failIf(response.context['adminform'].form.is_valid()) self.assertEqual( response.context['adminform'].form.errors['action_name'], ["Select a valid choice. " "activate is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'untreated')
[docs] def test_change_view_post_valid_activate_from_accepted(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'activate' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.filter(user__pk=new_user.pk) self.failIf(profile.exists())
[docs] def test_change_view_post_invalid_activate_from_rejected(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'activate' }) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' ) self.failIf(response.context['adminform'].form.is_valid()) self.assertEqual( response.context['adminform'].form.errors['action_name'], ["Select a valid choice. " "activate is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'rejected')
[docs] def test_change_view_post_valid_force_activate_from_untreated(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'force_activate' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.filter(user__pk=new_user.pk) self.failIf(profile.exists())
[docs] def test_change_view_post_invalid_force_activate_from_accepted(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'force_activate' }) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' ) self.failIf(response.context['adminform'].form.is_valid()) self.assertEqual( response.context['adminform'].form.errors['action_name'], ["Select a valid choice. " "force_activate is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted')
[docs] def test_change_view_post_valid_force_activate_from_rejected(self): new_user = self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,)) redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist') response = self.client.post(url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'force_activate' }) self.assertEqual(response.status_code, 302) self.assertRedirects(response, redirect_url) profile = RegistrationProfile.objects.filter(user__pk=new_user.pk) self.failIf(profile.exists())
[docs] def test_resend_acceptance_email_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) admin_class.resend_acceptance_email( None, RegistrationProfile.objects.all()) # one for registration, one for resend self.assertEqual(len(mail.outbox), 2)
[docs] def test_accept_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) admin_class.accept_users(None, RegistrationProfile.objects.all()) for profile in RegistrationProfile.objects.all(): self.assertEqual(profile.status, 'accepted') self.assertNotEqual(profile.activation_key, None)
[docs] def test_reject_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) admin_class.reject_users(None, RegistrationProfile.objects.all()) for profile in RegistrationProfile.objects.all(): self.assertEqual(profile.status, 'rejected') self.assertEqual(profile.activation_key, None)
[docs] def test_force_activate_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='bob', email='bob@example.com', request=self.mock_request) admin_class.force_activate_users( None, RegistrationProfile.objects.all()) self.assertEqual(RegistrationProfile.objects.count(), 0)
@override_settings(REGISTRATION_SUPPLEMENT_CLASS=None)
[docs] def test_get_inline_instances_without_supplements(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) # Prevent caching if hasattr(admin_class.backend, '_supplement_class_cache'): delattr(admin_class.backend, '_supplement_class_cache') inline_instances = admin_class.get_inline_instances(self.mock_request, None) self.assertEqual(len(inline_instances), 0)
@override_settings( REGISTRATION_SUPPLEMENT_CLASS="registration.supplements.default.models.DefaultRegistrationSupplement" )
[docs] def test_get_inline_instances_with_default_supplements(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) # Prevent caching if hasattr(admin_class.backend, '_supplement_class_cache'): delattr(admin_class.backend, '_supplement_class_cache') inline_instances = admin_class.get_inline_instances(self.mock_request, None) self.assertEqual(len(inline_instances), 1)