django-social-auth : logging in from a unit test client

标签 django django-socialauth

我使用 django-social-auth 作为我的身份验证机制,我需要使用登录用户测试我的应用程序。我正在尝试:

from django.test import Client
c = Client()
c.login(username='myfacebook@username.com", password='myfacebookpassword')

尝试登录的用户已成功从浏览器登录。该应用已被允许访问用户的数据。

使用 django-social-auth 作为身份验证机制时,有什么想法如何从单元测试登录吗?

谢谢

最佳答案

使用用户实例创建夹具

{
    "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"
    }
}

使用这样的 SocialAuthUser 实例创建一个固定装置

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

因此,您将获得与真实用户具有相同行为并拥有您需要的所有社交数据的用户。 设置新密码,然后就可以使用auth机制来登录该用户:

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

然后只需登录即可调用 View

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

不要忘记,需要 django.contrib.auth.backends.ModelBackend,并且 django.contrib.sessions 应该位于您的 INTALLED_APPS 元组中

此外,使用标准身份验证的优点是您不需要发出服务器请求来获取 oauth token 等。

关于django-social-auth : logging in from a unit test client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459707/

相关文章:

python - Django:命名 URL 而不是 ID 出现问题

python - 诱变剂在 Django 中读取 TemporaryUploadedFile

django - Heroku Django,模板不存在错误

javascript - 在react+redux应用程序的Home组件中,在componentdidmount上调用action getPosts()后,this.props.posts未定义

django - 不是 JSON 可序列化 - django 社交身份验证 Facebook 登录

Django 扩展错误消息

python - 如何在 Django 中分离登录重定向 URL

python - django 社交登录中来自 GitHub 的用户电子邮件

python - 如何从管理面板的字段中提取信息?

python - 如何更改登录 Twitter 用户的 Django Social 身份验证密码