2012-07-12 5 views
4

인증 메커니즘으로 django-social-auth를 사용하고 로그인 한 사용자로 내 앱을 테스트해야합니다. 나는 노력하고있어 :django-social-auth : 단위 테스트 클라이언트에서 로그인

from django.test import Client 
c = Client() 
c.login(username='[email protected]", password='myfacebookpassword') 

브라우저를 사용하여 로그인하려는 사용자가 로그인에 성공했습니다. 앱에서 이미 사용자의 데이터에 액세스 할 수 있습니다.

인증 메커니즘으로 django-social-auth를 사용할 때 어떤 방법으로 unittest에서 로그인 할 수 있습니까?

감사

+0

최근 Social Auth는 이러한 일을 쉽게 테스트 할 수있는 방법을 통합했습니다. http://django-social-auth.readthedocs.org/en/master/testing_tools.html을 살펴보십시오. – Nezo

답변

1

{ 
    "pk": 15, 
    "model": "auth.user", 
    "fields": { 
     "username": "user", 
     "first_name": "user", 
     "last_name": "userov", 
     "is_active": true, 
     "is_superuser": false, 
     "is_staff": false, 
     "last_login": "2012-07-20 15:37:03", 
     "groups": [], 
     "user_permissions": [], 
     "password": "!", 
     "email": "", 
     "date_joined": "2012-07-18 13:29:53" 
    } 
} 

{ 
    "pk": 7, 
    "model": "social_auth.usersocialauth", 
    "fields": { 
     "uid": "1234567", 
     "extra_data": "%some account social data%", 
     "user": 15, 
     "provider": "linkedin" 
    } 
} 

같은 SocialAuthUser 인스턴스와기구를 만들고 사용자 인스턴스와기구를 만들기 그래서 당신은 동일한 동작으로 할 수있는 사용자를 얻을 것이다 실제 사용자이며 필요한 모든 소셜 데이터가 있습니다. django.contrib.auth.backends.ModelBackend인지,

... 
user.set_password('password') 
user.save()      
logged_in = self.client.login(username='user', password='password') 

후 바로 로그인으로 뷰를 호출

self.client.get("some/url") 

잊지 마세요 필요합니다 : 새 암호를 설정하고 당신은 로그인이 사용자를 인증 메커니즘을 사용할 수 있습니다 그리고 django.contrib.sessions은 INTALLED_APPS 튜플에 있어야합니다.

또한 표준 인증을 사용하면 oauth 토큰을 가져 오는 등의 서버 요청을하지 않아도된다는 장점이 있습니다.