'Django Testing - SimpleCookie and Session
Problem: My testing client appears to log out once i attempt to set a cookie. I have workspace (project) object that i want my client to access. The access itself works fine, but as soon as i attempt to edit cookies in my session, the client gets logged out. My test is documented below.
Code
import time
from http.cookies import SimpleCookie
from django.contrib.auth.models import User
from django.test import Client, TestCase
from django.urls import reverse
from myproject.models import DataSource, Workspace
class TestSomeStuff(TestCase):
def setUp(self):
datasource1, _ = DataSource.objects.update_or_create(id=1, defaults=dict(source_name="Source 1"))
workspace1, _ = Workspace.objects.get_or_create(id=1, defaults=dict(project_name="Project 1",
datasource=datasource1))
self.workspace_view_url = reverse("workspace", args=[workspace1.id])
self.client = Client()
print(self.client.get(self.workspace_view_url)) # 302 - redirect to login page as expected
self.client.force_login(User.objects.get_or_create(username='testuser')[0])
print(self.client.get(self.workspace_view_url)) # 200 - as expected
time.sleep(2)
print(self.client.get(self.workspace_view_url)) # 200 - as expected
time.sleep(2)
self.client.cookies = SimpleCookie()
print(self.client.get(self.workspace_view_url)) # 302 - why?
def test_my_test(self):
pass
Solution 1:[1]
The line self.client.cookies = SimpleCookie()
wipes all cookies - including the 'sessionid' and 'csrftoken'. I changed it to self.client.cookies["cookie_key"] = "cookie_value"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | michal111 |