class RegistrationAdminTestCase(TestCase): def setUp(self): User = get_user_model() self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() self.admin = User.objects.create_superuser( username='******', email='*****@*****.**', password='******') self.client.login(username='******', password='******') self.admin_url = reverse('admin:index') def test_change_list_view_get(self): url = self.admin_url + "registration/registrationprofile/" response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'admin/change_list.html') def test_change_view_get(self): self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html' ) def test_change_view_get_404(self): self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/100/" response = self.client.get(url) self.assertEqual(response.status_code, 404) def test_change_view_post_valid_accept_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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') def test_change_view_post_valid_accept_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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 = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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) def test_change_view_post_valid_accept_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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') def test_change_view_post_valid_reject_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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') def test_change_view_post_invalid_reject_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [u"Select a valid choice. " u"reject is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted') def test_change_view_post_invalid_reject_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [u"Select a valid choice. " u"reject is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'rejected') def test_change_view_post_invalid_activate_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [u"Select a valid choice. " u"activate is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'untreated') def test_change_view_post_valid_activate_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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()) def test_change_view_post_invalid_activate_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [u"Select a valid choice. " u"activate is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'rejected') def test_change_view_post_valid_force_activate_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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()) def test_change_view_post_invalid_force_activate_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [u"Select a valid choice. " u"force_activate is not one of the available choices."]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted') def test_change_view_post_valid_force_activate_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject( new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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()) def test_resend_acceptance_email_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) def test_accept_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) def test_reject_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) def test_force_activate_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) admin_class.force_activate_users( None, RegistrationProfile.objects.all()) self.assertEqual(RegistrationProfile.objects.count(), 0)
class DefaultRegistrationBackendTestCase(TestCase): def setUp(self): self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() def test_registration(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) self.assertEqual(new_user.username, 'bob') self.assertEqual(new_user.email, '*****@*****.**') self.failIf(new_user.is_active) self.failIf(new_user.has_usable_password()) # A inspection profile was created, and an registration email # was sent. self.assertEqual(RegistrationProfile.objects.count(), 1) self.assertEqual(len(mail.outbox), 1) def test_acceptance(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile accepted_user = self.backend.accept(profile, request=self.mock_request) self.failUnless(accepted_user) self.assertEqual(profile, accepted_user.registration_profile) self.assertEqual(profile.status, 'accepted') self.assertNotEqual(profile.activation_key, None) def test_rejection(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile rejected_user = self.backend.reject(profile, request=self.mock_request) self.failUnless(rejected_user) self.assertEqual(profile, rejected_user.registration_profile) self.assertEqual(profile.status, 'rejected') self.assertEqual(profile.activation_key, None) def test_activation_with_password(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile self.backend.accept(profile, request=self.mock_request) activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failUnless(activated_user) self.assertEqual(activated_user, new_user) self.failUnless(activated_user.is_active) self.failUnless(activated_user.has_usable_password()) self.failUnless(activated_user.check_password('swardfish')) def test_activation_without_password(self): new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile self.backend.accept(profile, request=self.mock_request) activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request) self.failUnless(activated_user) self.assertEqual(activated_user, new_user) self.failUnless(activated_user.is_active) self.failUnless(activated_user.has_usable_password()) def test_untreated_activation(self): User = get_user_model() new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failIf(activated_user) new_user = User.objects.get(pk=new_user.pk) self.failIf(new_user.is_active) self.failIf(new_user.has_usable_password()) def test_rejected_activation(self): User = get_user_model() new_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile self.backend.reject(profile, request=self.mock_request) activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failIf(activated_user) new_user = User.objects.get(pk=new_user.pk) self.failIf(new_user.is_active) self.failIf(new_user.has_usable_password()) def test_expired_activation(self): User = get_user_model() expired_user = self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) profile = expired_user.registration_profile self.backend.accept(profile, request=self.mock_request) expired_user.date_joined -= datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS+1) expired_user.save() activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failIf(activated_user) expired_user = User.objects.get(pk=expired_user.pk) self.failIf(expired_user.is_active) self.failIf(expired_user.has_usable_password()) def test_allow(self): old_allowed = settings.REGISTRATION_OPEN settings.REGISTRATION_OPEN = True self.failUnless(self.backend.registration_allowed()) settings.REGISTRATION_OPEN = False self.failIf(self.backend.registration_allowed()) settings.REGISTRATION_OPEN = old_allowed def test_get_registration_form_class(self): form_class = self.backend.get_registration_form_class() self.failUnless(form_class is forms.RegistrationForm) def test_get_activation_form_class(self): form_class = self.backend.get_activation_form_class() self.failUnless(form_class is forms.ActivationForm) def test_get_registration_complete_url(self): User = get_user_model() fake_user = User() url = self.backend.get_registration_complete_url(fake_user) self.assertEqual(url, reverse('registration_complete')) def test_get_registration_closed_url(self): url = self.backend.get_registration_closed_url() self.assertEqual(url, reverse('registration_disallowed')) def test_get_activation_complete_url(self): User = get_user_model() fake_user = User() url = self.backend.get_activation_complete_url(fake_user) self.assertEqual(url, reverse('registration_activation_complete')) def test_registration_signal(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_registered.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_registered]) def test_acceptance_signal(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_accepted.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_accepted]) def test_acceptance_signal_fail(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) signals.user_accepted.connect(receiver, sender=self.backend.__class__) # accept -> accept is not allowed thus fail self.backend.accept(profile, request=self.mock_request) self.assertEqual(len(received_signals), 0) def test_rejection_signal(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_rejected.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.reject(profile, request=self.mock_request) self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_rejected]) def test_rejection_signal_fail(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_rejected.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) # accept -> reject is not allowed self.backend.reject(profile, request=self.mock_request) self.assertEqual(len(received_signals), 0) def test_activation_signal(self): def receiver(sender, user, password, is_generated, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(password, 'swordfish') self.failIf(is_generated) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_activated.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) self.backend.activate(profile.activation_key, request=self.mock_request, password='******') self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_activated])
class RegistrationAdminTestCase(TestCase): def setUp(self): self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() self.admin = User.objects.create_superuser(username='******', email='*****@*****.**', password='******') self.client.login(username='******', password='******') self.admin_url = reverse('admin:index') def test_change_list_view_get(self): url = self.admin_url + "registration/registrationprofile/" response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'admin/change_list.html') def test_change_view_get(self): self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed( response, 'admin/registration/registrationprofile/change_form.html') def test_change_view_get_404(self): self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/100/" response = self.client.get(url) self.assertEqual(response.status_code, 404) def test_change_view_post_valid_accept_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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') def test_change_view_post_valid_inaccept_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" response = self.client.post( url, { '_supplement-TOTAL_FORMS': 0, '_supplement-INITIAL_FORMS': 0, '_supplement-MAXNUM_FORMS': '', 'action_name': 'accept' }) 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'], [ u"Select a valid choice. accept is not one of the available choices." ]) profile = RegistrationProfile.objects.get(user__pk=new_user.pk) self.assertEqual(profile.status, 'accepted') def test_change_view_post_valid_accept_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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') def test_change_view_post_valid_reject_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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') def test_change_view_post_invalid_reject_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [ u"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') def test_change_view_post_invalid_reject_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [ u"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') def test_change_view_post_invalid_activate_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [ u"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') def test_change_view_post_valid_activate_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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()) def test_change_view_post_invalid_activate_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [ u"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') def test_change_view_post_valid_force_activate_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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()) def test_change_view_post_invalid_force_activate_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/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'], [ u"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') def test_change_view_post_valid_force_activate_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = self.admin_url + "registration/registrationprofile/1/" redirect_url = self.admin_url + "registration/registrationprofile/" 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()) def test_resend_acceptance_email_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) def test_accept_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) def test_reject_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) def test_force_activate_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) admin_class.force_activate_users(None, RegistrationProfile.objects.all()) self.assertEqual(RegistrationProfile.objects.count(), 0)
class DefaultRegistrationBackendTestCase(TestCase): def setUp(self): self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() def test_registration(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.assertEqual(new_user.username, 'bob') self.assertEqual(new_user.email, '*****@*****.**') self.failIf(new_user.is_active) self.failIf(new_user.has_usable_password()) # A inspection profile was created, and an registration email # was sent. self.assertEqual(RegistrationProfile.objects.count(), 1) self.assertEqual(len(mail.outbox), 1) def test_acceptance(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile accepted_user = self.backend.accept(profile, request=self.mock_request) self.failUnless(accepted_user) self.assertEqual(profile, accepted_user.registration_profile) self.assertEqual(profile.status, 'accepted') self.assertNotEqual(profile.activation_key, None) def test_rejection(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile rejected_user = self.backend.reject(profile, request=self.mock_request) self.failUnless(rejected_user) self.assertEqual(profile, rejected_user.registration_profile) self.assertEqual(profile.status, 'rejected') self.assertEqual(profile.activation_key, None) def test_activation_with_password(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile self.backend.accept(profile, request=self.mock_request) activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failUnless(activated_user) self.assertEqual(activated_user, new_user) self.failUnless(activated_user.is_active) self.failUnless(activated_user.has_usable_password()) self.failUnless(activated_user.check_password('swardfish')) def test_activation_without_password(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile self.backend.accept(profile, request=self.mock_request) activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request) self.failUnless(activated_user) self.assertEqual(activated_user, new_user) self.failUnless(activated_user.is_active) self.failUnless(activated_user.has_usable_password()) def test_untreated_activation(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failIf(activated_user) new_user = User.objects.get(pk=new_user.pk) self.failIf(new_user.is_active) self.failIf(new_user.has_usable_password()) def test_rejected_activation(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = new_user.registration_profile self.backend.reject(profile, request=self.mock_request) activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failIf(activated_user) new_user = User.objects.get(pk=new_user.pk) self.failIf(new_user.is_active) self.failIf(new_user.has_usable_password()) def test_expired_activation(self): expired_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = expired_user.registration_profile self.backend.accept(profile, request=self.mock_request) expired_user.date_joined -= datetime.timedelta( days=settings.ACCOUNT_ACTIVATION_DAYS + 1) expired_user.save() activated_user = self.backend.activate( activation_key=profile.activation_key, request=self.mock_request, password='******') self.failIf(activated_user) expired_user = User.objects.get(pk=expired_user.pk) self.failIf(expired_user.is_active) self.failIf(expired_user.has_usable_password()) def test_allow(self): old_allowed = settings.REGISTRATION_OPEN settings.REGISTRATION_OPEN = True self.failUnless(self.backend.registration_allowed()) settings.REGISTRATION_OPEN = False self.failIf(self.backend.registration_allowed()) settings.REGISTRATION_OPEN = old_allowed def test_get_registration_form_class(self): form_class = self.backend.get_registration_form_class() self.failUnless(form_class is forms.RegistrationForm) def test_get_activation_form_class(self): form_class = self.backend.get_activation_form_class() self.failUnless(form_class is forms.ActivationForm) def test_get_registration_complete_url(self): fake_user = User() url = self.backend.get_registration_complete_url(fake_user) self.assertEqual(url, reverse('registration_complete')) def test_get_registration_closed_url(self): url = self.backend.get_registration_closed_url() self.assertEqual(url, reverse('registration_disallowed')) def test_get_activation_complete_url(self): fake_user = User() url = self.backend.get_activation_complete_url(fake_user) self.assertEqual(url, reverse('registration_activation_complete')) def test_registration_signal(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_registered.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_registered]) def test_acceptance_signal(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_accepted.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_accepted]) def test_acceptance_signal_fail(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) signals.user_accepted.connect(receiver, sender=self.backend.__class__) # accept -> accept is not allowed thus fail self.backend.accept(profile, request=self.mock_request) self.assertEqual(len(received_signals), 0) def test_rejection_signal(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_rejected.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.reject(profile, request=self.mock_request) self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_rejected]) def test_rejection_signal_fail(self): def receiver(sender, user, profile, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(user.registration_profile, profile) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_rejected.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) # accept -> reject is not allowed self.backend.reject(profile, request=self.mock_request) self.assertEqual(len(received_signals), 0) def test_activation_signal(self): def receiver(sender, user, password, is_generated, **kwargs): self.assertEqual(user.username, 'bob') self.assertEqual(password, 'swordfish') self.failIf(is_generated) received_signals.append(kwargs.get('signal')) received_signals = [] signals.user_activated.connect(receiver, sender=self.backend.__class__) self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) profile = RegistrationProfile.objects.get(user__username='******') self.backend.accept(profile, request=self.mock_request) self.backend.activate(profile.activation_key, request=self.mock_request, password='******') self.assertEqual(len(received_signals), 1) self.assertEqual(received_signals, [signals.user_activated])
class RegistrationAdminTestCase(TestCase): def setUp(self): User = get_user_model() self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() self.admin = User.objects.create_superuser(username='******', email='*****@*****.**', password='******') self.client.login(username='******', password='******') self.admin_url = reverse('admin:index') def test_change_list_view_get(self): url = reverse('admin:registration_registrationprofile_changelist') response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'admin/change_list.html') def test_change_view_get(self): self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = 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') def test_change_view_get_404(self): self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(100, )) response = self.client.get(url) self.assertEqual(response.status_code, 404) def test_change_view_post_valid_accept_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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') def test_change_view_post_valid_accept_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', 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 = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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) def test_change_view_post_valid_accept_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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') def test_change_view_post_valid_reject_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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') def test_change_view_post_invalid_reject_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = 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') def test_change_view_post_invalid_reject_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = 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') def test_change_view_post_invalid_activate_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = 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') def test_change_view_post_valid_activate_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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()) def test_change_view_post_invalid_activate_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = 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') def test_change_view_post_valid_force_activate_from_untreated(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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()) def test_change_view_post_invalid_force_activate_from_accepted(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.accept(new_user.registration_profile, request=self.mock_request) url = 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') def test_change_view_post_valid_force_activate_from_rejected(self): new_user = self.backend.register(username='******', email='*****@*****.**', request=self.mock_request) self.backend.reject(new_user.registration_profile, request=self.mock_request) url = reverse('admin:registration_registrationprofile_change', args=(1, )) redirect_url = 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()) def test_resend_acceptance_email_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) def test_accept_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) def test_reject_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) def test_force_activate_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register(username='******', email='*****@*****.**', 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) 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" ) 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)
class RegistrationAdminTestCase(TestCase): def setUp(self): User = get_user_model() self.backend = DefaultRegistrationBackend() self.mock_request = mock_request() self.admin = User.objects.create_superuser( username='******', email='*****@*****.**', password='******') self.client.login(username='******', password='******') self.admin_url = reverse('admin:index') 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') def test_change_view_get(self): self.backend.register( username='******', email='*****@*****.**', 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' ) def test_change_view_get_404(self): self.backend.register( username='******', email='*****@*****.**', request=self.mock_request) url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(100,)) response = self.client.get(url) self.assertEqual(response.status_code, 404) def test_change_view_post_valid_accept_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_valid_accept_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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) def test_change_view_post_valid_accept_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_valid_reject_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_invalid_reject_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_invalid_reject_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_invalid_activate_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_valid_activate_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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()) def test_change_view_post_invalid_activate_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_valid_force_activate_from_untreated(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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()) def test_change_view_post_invalid_force_activate_from_accepted(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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') def test_change_view_post_valid_force_activate_from_rejected(self): new_user = self.backend.register( username='******', email='*****@*****.**', 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()) def test_resend_acceptance_email_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) def test_accept_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) def test_reject_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) def test_force_activate_users_action(self): admin_class = RegistrationAdmin(RegistrationProfile, admin.site) self.backend.register( username='******', email='*****@*****.**', 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) 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" ) 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)