请帮助编写测试认证。
提交表单后,在我的网站上用户输入到达带有模板rules.html的页面(通过正确输入用户名和密码),或者使用登录表单保持在同一页面上(如果不正确,则用户名)和密码)。
这是我的测试版本:
class TestAuth(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = User.objects.create_user(username='zxcvbn', email='jacob@ru.ru', password='zxcvbn')
def test_auth(self):
response = self.client.post('/accounts/authentication/', {
'csrfmiddlewaretoken:': ???????????????,
'username': 'zxcvbn',
'password': 'zxcvbn',
})
self.assertTemplateUsed(response, 'rules.html') # ok auth
问题是目前还不清楚在哪里获得值csrfmiddlewaretoken
答案 0 :(得分:0)
来自Django Docs: 所有传出POST表单中都有一个名为“csrfmiddlewaretoken”的隐藏表单字段。该字段的值是CSRF cookie的值。
因此csrfmiddlewaretoken是用户的唯一值。
登录/注销后更改。您可以通过从cookie获取来使用JQuery检查当前用户:
document.cookie.match(/csrftoken=([\w]+)/)
(尝试在浏览器控制台中运行)
答案 1 :(得分:0)
也许是这样的:
# try to get page without auth
response = self.client.get('/you/page/url/', follow=True)
# check if redirected to login
self.assertTrue('Log in' in response.content)
# login
self.client.login(username='user', password='pass')
# try to get page with auth
response = self.client.get('/you/page/url/')
self.assertTrue('Rules' in response.content)