mirror of
https://github.com/Tivix/django-rest-auth.git
synced 2024-11-29 12:23:43 +03:00
Merge pull request #75 from Tivix/django-1.8
Django 1.8 compatibility fixes
...lecisz malina ❗
This commit is contained in:
commit
92ca2e33d6
|
@ -6,10 +6,13 @@ env:
|
||||||
- DJANGO=1.5.12
|
- DJANGO=1.5.12
|
||||||
- DJANGO=1.6.11
|
- DJANGO=1.6.11
|
||||||
- DJANGO=1.7.7
|
- DJANGO=1.7.7
|
||||||
|
- DJANGO=1.8
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
- python: "2.6"
|
- python: "2.6"
|
||||||
env: DJANGO=1.7.7
|
env: DJANGO=1.7.7
|
||||||
|
- python: "2.6"
|
||||||
|
env: DJANGO=1.8
|
||||||
install:
|
install:
|
||||||
- pip install -q Django==$DJANGO --use-mirrors
|
- pip install -q Django==$DJANGO --use-mirrors
|
||||||
- pip install coveralls
|
- pip install coveralls
|
||||||
|
|
103
rest_auth/django_test_urls.py
Normal file
103
rest_auth/django_test_urls.py
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
# Moved in Django 1.8 from django to tests/auth_tests/urls.py
|
||||||
|
|
||||||
|
from django.conf.urls import include, url
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.contrib.auth import views
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.contrib.auth.forms import AuthenticationForm
|
||||||
|
from django.contrib.auth.urls import urlpatterns
|
||||||
|
from django.contrib.messages.api import info
|
||||||
|
from django.http import HttpRequest, HttpResponse
|
||||||
|
from django.shortcuts import render
|
||||||
|
from django.template import RequestContext, Template
|
||||||
|
from django.views.decorators.cache import never_cache
|
||||||
|
|
||||||
|
|
||||||
|
class CustomRequestAuthenticationForm(AuthenticationForm):
|
||||||
|
def __init__(self, request, *args, **kwargs):
|
||||||
|
assert isinstance(request, HttpRequest)
|
||||||
|
super(CustomRequestAuthenticationForm, self).__init__(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@never_cache
|
||||||
|
def remote_user_auth_view(request):
|
||||||
|
"Dummy view for remote user tests"
|
||||||
|
t = Template("Username is {{ user }}.")
|
||||||
|
c = RequestContext(request, {})
|
||||||
|
return HttpResponse(t.render(c))
|
||||||
|
|
||||||
|
|
||||||
|
def auth_processor_no_attr_access(request):
|
||||||
|
render(request, 'context_processors/auth_attrs_no_access.html')
|
||||||
|
# *After* rendering, we check whether the session was accessed
|
||||||
|
return render(request,
|
||||||
|
'context_processors/auth_attrs_test_access.html',
|
||||||
|
{'session_accessed': request.session.accessed})
|
||||||
|
|
||||||
|
|
||||||
|
def auth_processor_attr_access(request):
|
||||||
|
render(request, 'context_processors/auth_attrs_access.html')
|
||||||
|
return render(request,
|
||||||
|
'context_processors/auth_attrs_test_access.html',
|
||||||
|
{'session_accessed': request.session.accessed})
|
||||||
|
|
||||||
|
|
||||||
|
def auth_processor_user(request):
|
||||||
|
return render(request, 'context_processors/auth_attrs_user.html')
|
||||||
|
|
||||||
|
|
||||||
|
def auth_processor_perms(request):
|
||||||
|
return render(request, 'context_processors/auth_attrs_perms.html')
|
||||||
|
|
||||||
|
|
||||||
|
def auth_processor_perm_in_perms(request):
|
||||||
|
return render(request, 'context_processors/auth_attrs_perm_in_perms.html')
|
||||||
|
|
||||||
|
|
||||||
|
def auth_processor_messages(request):
|
||||||
|
info(request, "Message 1")
|
||||||
|
return render(request, 'context_processors/auth_attrs_messages.html')
|
||||||
|
|
||||||
|
|
||||||
|
def userpage(request):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def custom_request_auth_login(request):
|
||||||
|
return views.login(request, authentication_form=CustomRequestAuthenticationForm)
|
||||||
|
|
||||||
|
# special urls for auth test cases
|
||||||
|
urlpatterns += [
|
||||||
|
url(r'^logout/custom_query/$', views.logout, dict(redirect_field_name='follow')),
|
||||||
|
url(r'^logout/next_page/$', views.logout, dict(next_page='/somewhere/')),
|
||||||
|
url(r'^logout/next_page/named/$', views.logout, dict(next_page='password_reset')),
|
||||||
|
url(r'^remote_user/$', remote_user_auth_view),
|
||||||
|
url(r'^password_reset_from_email/$', views.password_reset, dict(from_email='staffmember@example.com')),
|
||||||
|
url(r'^password_reset/custom_redirect/$', views.password_reset, dict(post_reset_redirect='/custom/')),
|
||||||
|
url(r'^password_reset/custom_redirect/named/$', views.password_reset, dict(post_reset_redirect='password_reset')),
|
||||||
|
url(r'^password_reset/html_email_template/$', views.password_reset,
|
||||||
|
dict(html_email_template_name='registration/html_password_reset_email.html')),
|
||||||
|
url(r'^reset/custom/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
|
||||||
|
views.password_reset_confirm,
|
||||||
|
dict(post_reset_redirect='/custom/')),
|
||||||
|
url(r'^reset/custom/named/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
|
||||||
|
views.password_reset_confirm,
|
||||||
|
dict(post_reset_redirect='password_reset')),
|
||||||
|
url(r'^password_change/custom/$', views.password_change, dict(post_change_redirect='/custom/')),
|
||||||
|
url(r'^password_change/custom/named/$', views.password_change, dict(post_change_redirect='password_reset')),
|
||||||
|
url(r'^admin_password_reset/$', views.password_reset, dict(is_admin_site=True)),
|
||||||
|
url(r'^login_required/$', login_required(views.password_reset)),
|
||||||
|
url(r'^login_required_login_url/$', login_required(views.password_reset, login_url='/somewhere/')),
|
||||||
|
|
||||||
|
url(r'^auth_processor_no_attr_access/$', auth_processor_no_attr_access),
|
||||||
|
url(r'^auth_processor_attr_access/$', auth_processor_attr_access),
|
||||||
|
url(r'^auth_processor_user/$', auth_processor_user),
|
||||||
|
url(r'^auth_processor_perms/$', auth_processor_perms),
|
||||||
|
url(r'^auth_processor_perm_in_perms/$', auth_processor_perm_in_perms),
|
||||||
|
url(r'^auth_processor_messages/$', auth_processor_messages),
|
||||||
|
url(r'^custom_request_auth_login/$', custom_request_auth_login),
|
||||||
|
url(r'^userpage/(.+)/$', userpage, name="userpage"),
|
||||||
|
|
||||||
|
# This line is only required to render the password reset with is_admin=True
|
||||||
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
|
]
|
|
@ -31,7 +31,7 @@ class SocialLoginSerializer(serializers.Serializer):
|
||||||
try:
|
try:
|
||||||
login = self.adapter.complete_login(request, app, token,
|
login = self.adapter.complete_login(request, app, token,
|
||||||
response=access_token)
|
response=access_token)
|
||||||
token.account = login.account
|
|
||||||
login.token = token
|
login.token = token
|
||||||
complete_social_login(request, login)
|
complete_social_login(request, login)
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.conf.urls import patterns, url, include
|
from django.conf.urls import patterns, url, include
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
from django.contrib.auth.tests import urls
|
import rest_auth.django_test_urls
|
||||||
|
|
||||||
from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
|
from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ class FacebookLogin(SocialLogin):
|
||||||
|
|
||||||
urlpatterns += patterns('',
|
urlpatterns += patterns('',
|
||||||
url(r'^rest-registration/', include('rest_auth.registration.urls')),
|
url(r'^rest-registration/', include('rest_auth.registration.urls')),
|
||||||
url(r'^test-admin/', include(urls)),
|
url(r'^test-admin/', include(rest_auth.django_test_urls)),
|
||||||
url(r'^account-email-verification-sent/$', TemplateView.as_view(),
|
url(r'^account-email-verification-sent/$', TemplateView.as_view(),
|
||||||
name='account_email_verification_sent'),
|
name='account_email_verification_sent'),
|
||||||
url(r'^account-confirm-email/(?P<key>\w+)/$', TemplateView.as_view(),
|
url(r'^account-confirm-email/(?P<key>\w+)/$', TemplateView.as_view(),
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import json
|
import json
|
||||||
from datetime import datetime, date, time
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
@ -26,18 +25,6 @@ class APIClient(Client):
|
||||||
return self.generic('OPTIONS', path, data, content_type, **extra)
|
return self.generic('OPTIONS', path, data, content_type, **extra)
|
||||||
|
|
||||||
|
|
||||||
# class CustomJSONEncoder(json.JSONEncoder):
|
|
||||||
# """
|
|
||||||
# Convert datetime/date objects into isoformat
|
|
||||||
# """
|
|
||||||
|
|
||||||
# def default(self, obj):
|
|
||||||
# if isinstance(obj, (datetime, date, time)):
|
|
||||||
# return obj.isoformat()
|
|
||||||
# else:
|
|
||||||
# return super(CustomJSONEncoder, self).default(obj)
|
|
||||||
|
|
||||||
|
|
||||||
class BaseAPITestCase(object):
|
class BaseAPITestCase(object):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -471,7 +458,7 @@ class TestSocialAuth(TestCase, BaseAPITestCase):
|
||||||
ACCOUNT_EMAIL_REQUIRED=True,
|
ACCOUNT_EMAIL_REQUIRED=True,
|
||||||
REST_SESSION_LOGIN=False
|
REST_SESSION_LOGIN=False
|
||||||
)
|
)
|
||||||
def teste_edge_case(self):
|
def test_edge_case(self):
|
||||||
resp_body = '{"id":"123123123123","first_name":"John","gender":"male","last_name":"Smith","link":"https:\\/\\/www.facebook.com\\/john.smith","locale":"en_US","name":"John Smith","timezone":2,"updated_time":"2014-08-13T10:14:38+0000","username":"john.smith","verified":true,"email":"%s"}'
|
resp_body = '{"id":"123123123123","first_name":"John","gender":"male","last_name":"Smith","link":"https:\\/\\/www.facebook.com\\/john.smith","locale":"en_US","name":"John Smith","timezone":2,"updated_time":"2014-08-13T10:14:38+0000","username":"john.smith","verified":true,"email":"%s"}'
|
||||||
responses.add(responses.GET, self.graph_api_url,
|
responses.add(responses.GET, self.graph_api_url,
|
||||||
body=resp_body % self.EMAIL,
|
body=resp_body % self.EMAIL,
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
django-allauth>=0.19.0
|
django-allauth>=0.19.1
|
||||||
responses>=0.3.0
|
responses>=0.3.0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user