diff --git a/.travis.yml b/.travis.yml index 2fdd145..99b5855 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,8 +10,10 @@ env: - TOX_ENV=py26-dj16 - TOX_ENV=py27-dj15 - TOX_ENV=py27-dj16 + - TOX_ENV=py27-dj17 - TOX_ENV=py33-dj15 - TOX_ENV=py33-dj16 + - TOX_ENV=py33-dj17 install: - pip install --upgrade pip - pip install tox==1.8.0 diff --git a/tests/manage.py b/tests/manage.py index af5dab4..37e7bbf 100755 --- a/tests/manage.py +++ b/tests/manage.py @@ -10,8 +10,4 @@ from django.core.management import execute_from_command_line - from django.contrib.auth.tests import custom_user - custom_user.AbstractUser._meta.local_many_to_many = [] - custom_user.PermissionsMixin._meta.local_many_to_many = [] - execute_from_command_line(sys.argv) diff --git a/tests/tests/migrations/0001_initial.py b/tests/tests/migrations/0001_initial.py new file mode 100644 index 0000000..f2b1c00 --- /dev/null +++ b/tests/tests/migrations/0001_initial.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('auth', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(default=django.utils.timezone.now, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('email', models.EmailField(unique=True, max_length=255, verbose_name='email address', db_index=True)), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('full_name', models.CharField(max_length=255, verbose_name=b'full name', blank=True)), + ('preferred_name', models.CharField(max_length=255, verbose_name=b'preferred name', blank=True)), + ('groups', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Group', blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of his/her group.', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Permission', blank=True, help_text='Specific permissions for this user.', verbose_name='user permissions')), + ], + options={ + 'swappable': 'AUTH_USER_MODEL', + }, + bases=(models.Model,), + ), + ] diff --git a/tests/tests/migrations/__init__.py b/tests/tests/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/tests.py b/tests/tests/tests.py index b232221..391c658 100644 --- a/tests/tests/tests.py +++ b/tests/tests/tests.py @@ -4,9 +4,13 @@ """ import itertools +try: + from unittest import skipIf, skipUnless +except ImportError: # Python < 2.7 + from django.utils.unittest import skipIf, skipUnless + from django.core import mail from django.core.urlresolvers import reverse -from django.contrib.sites.models import Site, RequestSite from django.contrib.auth import REDIRECT_FIELD_NAME, get_user_model from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.tests.utils import skipIfCustomUser @@ -14,7 +18,6 @@ from django.test import TestCase from django.test.client import RequestFactory from django.test.utils import override_settings -from django.utils import unittest from django.utils.encoding import force_text from django.utils.translation import ugettext as _ from django.forms.fields import Field @@ -41,6 +44,17 @@ LogoutTest, ) +try: + from django.contrib.sites.shortcuts import get_current_site +except ImportError: # Django < 1.7 + def get_current_site(request): + from django.contrib.sites.models import Site, RequestSite + if Site._meta.installed: + return Site.objects.get_current() + else: + return RequestSite(request) + + from authtools.admin import BASE_FIELDS from authtools.forms import UserCreationForm, UserChangeForm, FriendlyPasswordResetForm from authtools.views import PasswordResetCompleteView, resolve_url_lazy @@ -49,7 +63,7 @@ def skipIfNotCustomUser(test_func): - return unittest.skipIf(settings.AUTH_USER_MODEL == 'auth.User', 'Built-in User model in use')(test_func) + return skipIf(settings.AUTH_USER_MODEL == 'auth.User', 'Built-in User model in use')(test_func) class AuthViewNamedURLTests(AuthViewNamedURLTests): @@ -173,12 +187,9 @@ class LoginTest(LoginTest): def test_current_site_in_context_after_login(self): response = self.client.get(reverse('login')) self.assertEqual(response.status_code, 200) - if Site._meta.installed: - site = Site.objects.get_current() - self.assertEqual(response.context['site'], site) - self.assertEqual(response.context['site_name'], site.name) - else: - self.assertIsInstance(response.context['site'], RequestSite) + site = get_current_site(response.request) + self.assertEqual(response.context['site'], site) + self.assertEqual(response.context['site_name'], site.name) self.assertTrue(isinstance(response.context['form'], AuthenticationForm), 'Login form is not an AuthenticationForm') @@ -478,7 +489,7 @@ def test_create_superuser(self): class UserModelTest(TestCase): - @unittest.skipUnless(settings.AUTH_USER_MODEL == 'authtools.User', + @skipUnless(settings.AUTH_USER_MODEL == 'authtools.User', "only check authuser's ordering") def test_default_ordering(self): self.assertSequenceEqual(['name', 'email'], User._meta.ordering) diff --git a/tox.ini b/tox.ini index 784d995..958a712 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,7 @@ [tox] envlist= - py{26,27,33}-dj{15,16} + py{26,27,33}-dj{15,16}, + py{27,33}-dj{17} [testenv] basepython= @@ -14,6 +15,7 @@ deps= dj15,dj16: South>=1.0.2 dj15: Django>=1.5,<1.6 dj16: Django>=1.6,<1.7 + dj17: Django>=1.7,<1.8 whitelist_externals= env make