mirror of
				https://github.com/Tivix/django-rest-auth.git
				synced 2025-10-30 23:37:32 +03:00 
			
		
		
		
	add social medial authentication tests, separate test urls
This commit is contained in:
		
							parent
							
								
									f134d8b1d6
								
							
						
					
					
						commit
						4088081707
					
				|  | @ -36,6 +36,18 @@ MIDDLEWARE_CLASSES = [ | |||
|     'django.contrib.messages.middleware.MessageMiddleware' | ||||
| ] | ||||
| 
 | ||||
| TEMPLATE_CONTEXT_PROCESSORS = [ | ||||
|     'django.contrib.auth.context_processors.auth', | ||||
|     'django.core.context_processors.debug', | ||||
|     'django.core.context_processors.media', | ||||
|     'django.core.context_processors.request', | ||||
|     'django.contrib.messages.context_processors.messages', | ||||
|     'django.core.context_processors.static', | ||||
| 
 | ||||
|     "allauth.account.context_processors.account", | ||||
|     "allauth.socialaccount.context_processors.socialaccount", | ||||
| ] | ||||
| 
 | ||||
| INSTALLED_APPS = [ | ||||
|     'django.contrib.admin', | ||||
|     'django.contrib.auth', | ||||
|  | @ -48,6 +60,8 @@ INSTALLED_APPS = [ | |||
| 
 | ||||
|     'allauth', | ||||
|     'allauth.account', | ||||
|     'allauth.socialaccount', | ||||
|     'allauth.socialaccount.providers.facebook', | ||||
| 
 | ||||
|     'rest_framework', | ||||
|     'rest_framework.authtoken', | ||||
|  |  | |||
							
								
								
									
										22
									
								
								rest_auth/test_urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								rest_auth/test_urls.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| from django.conf.urls import patterns, url, include | ||||
| from django.views.generic import TemplateView | ||||
| from django.contrib.auth.tests import urls | ||||
| 
 | ||||
| from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter | ||||
| 
 | ||||
| from .urls import urlpatterns | ||||
| from .registration.views import SocialLogin | ||||
| 
 | ||||
| 
 | ||||
| class FacebookLogin(SocialLogin): | ||||
|     adapter_class = FacebookOAuth2Adapter | ||||
| 
 | ||||
| urlpatterns += patterns('', | ||||
|     url(r'^rest-registration/', include('registration.urls')), | ||||
|     url(r'^test-admin/', include(urls)), | ||||
|     url(r'^account-email-verification-sent/$', TemplateView.as_view(), | ||||
|         name='account_email_verification_sent'), | ||||
|     url(r'^account-confirm-email/(?P<key>\w+)/$', TemplateView.as_view(), | ||||
|         name='account_confirm_email'), | ||||
|     url(r'^social-login/facebook/$', FacebookLogin.as_view(), name='fb_login') | ||||
| ) | ||||
|  | @ -9,8 +9,11 @@ from django.contrib.auth.models import User | |||
| from django.contrib.auth import get_user_model | ||||
| from django.core import mail | ||||
| from django.test.utils import override_settings | ||||
| from django.contrib.sites.models import Site | ||||
| 
 | ||||
| from allauth.socialaccount.models import SocialApp | ||||
| import responses | ||||
| 
 | ||||
| from rest_framework.serializers import _resolve_model | ||||
| from rest_framework import status | ||||
| 
 | ||||
| 
 | ||||
|  | @ -121,6 +124,8 @@ class APITestCase1(TestCase, BaseAPITestCase): | |||
|     - custom registration: backend defined | ||||
|     """ | ||||
| 
 | ||||
|     urls = 'rest_auth.test_urls' | ||||
| 
 | ||||
|     USERNAME = 'person' | ||||
|     PASS = 'person' | ||||
|     EMAIL = "person1@world.com" | ||||
|  | @ -338,3 +343,44 @@ class APITestCase1(TestCase, BaseAPITestCase): | |||
|         # try to login again | ||||
|         self._login() | ||||
|         self._logout() | ||||
| 
 | ||||
| 
 | ||||
| class TestSocialAuth(TestCase, BaseAPITestCase): | ||||
| 
 | ||||
|     urls = 'rest_auth.test_urls' | ||||
| 
 | ||||
|     def setUp(self): | ||||
|         social_app = SocialApp.objects.create( | ||||
|             provider='facebook', | ||||
|             name='Facebook', | ||||
|             client_id='123123123', | ||||
|             secret='321321321', | ||||
|         ) | ||||
|         site = Site.objects.get_current() | ||||
|         social_app.sites.add(site) | ||||
|         self.fb_login_url = reverse('fb_login') | ||||
| 
 | ||||
|     @responses.activate | ||||
|     def test_failed_social_auth(self): | ||||
|         # fake response | ||||
|         responses.add(responses.GET, 'https://graph.facebook.com/me', | ||||
|                   body='', status=400, content_type='application/json') | ||||
| 
 | ||||
|         payload = { | ||||
|             'access_token': 'abc123' | ||||
|         } | ||||
|         self.post(self.fb_login_url, data=payload, status_code=400) | ||||
| 
 | ||||
|     @responses.activate | ||||
|     def test_social_auth(self): | ||||
|         # fake response for facebook call | ||||
|         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}' | ||||
|         responses.add(responses.GET, 'https://graph.facebook.com/me', | ||||
|                   body=resp_body, status=200, content_type='application/json') | ||||
| 
 | ||||
|         payload = { | ||||
|             'access_token': 'abc123' | ||||
|         } | ||||
| 
 | ||||
|         self.post(self.fb_login_url, data=payload, status_code=200) | ||||
|         self.assertIn('key', self.response.json.keys()) | ||||
|  |  | |||
|  | @ -1,36 +1,18 @@ | |||
| from django.conf import settings | ||||
| from django.conf.urls import patterns, url, include | ||||
| from django.views.generic import TemplateView | ||||
| from django.conf.urls import patterns, url | ||||
| 
 | ||||
| from rest_auth.views import Login, Logout, UserDetails, \ | ||||
|     PasswordChange, PasswordReset, PasswordResetConfirm | ||||
| from rest_auth.views import (Login, Logout, UserDetails, PasswordChange, | ||||
|   PasswordReset, PasswordResetConfirm) | ||||
| 
 | ||||
| 
 | ||||
| urlpatterns = patterns('rest_auth.views', | ||||
|                        # URLs that do not require a session or valid token | ||||
|                        url(r'^password/reset/$', PasswordReset.as_view(), | ||||
|                            name='rest_password_reset'), | ||||
|                        url(r'^password/reset/confirm/$', | ||||
|                            PasswordResetConfirm.as_view( | ||||
|                            ), name='rest_password_reset_confirm'), | ||||
|                        url(r'^login/$', Login.as_view(), name='rest_login'), | ||||
| 
 | ||||
|                        # URLs that require a user to be logged in with a valid | ||||
|                        # session / token. | ||||
|                        url(r'^logout/$', Logout.as_view(), name='rest_logout'), | ||||
|                        url(r'^user/$', UserDetails.as_view(), | ||||
|                            name='rest_user_details'), | ||||
|                        url(r'^password/change/$', PasswordChange.as_view(), | ||||
|                            name='rest_password_change'), | ||||
|                        ) | ||||
| 
 | ||||
| if getattr(settings, 'IS_TEST', False): | ||||
|     from django.contrib.auth.tests import urls | ||||
|     urlpatterns += patterns('', | ||||
|         url(r'^rest-registration/', include('registration.urls')), | ||||
|         url(r'^test-admin/', include(urls)), | ||||
|         url(r'^account-email-verification-sent/$', TemplateView.as_view(), | ||||
|             name='account_email_verification_sent'), | ||||
|         url(r'^account-confirm-email/(?P<key>\w+)/$', TemplateView.as_view(), | ||||
|             name='account_confirm_email'), | ||||
|     ) | ||||
| urlpatterns = patterns('', | ||||
|     # URLs that do not require a session or valid token | ||||
|     url(r'^password/reset/$', PasswordReset.as_view(), | ||||
|         name='rest_password_reset'), | ||||
|     url(r'^password/reset/confirm/$', PasswordResetConfirm.as_view(), | ||||
|         name='rest_password_reset_confirm'), | ||||
|     url(r'^login/$', Login.as_view(), name='rest_login'), | ||||
|     # URLs that require a user to be logged in with a valid session / token. | ||||
|     url(r'^logout/$', Logout.as_view(), name='rest_logout'), | ||||
|     url(r'^user/$', UserDetails.as_view(), name='rest_user_details'), | ||||
|     url(r'^password/change/$', PasswordChange.as_view(), | ||||
|         name='rest_password_change'), | ||||
| ) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user