datatracker/ietf/cookies/tests.py
Lars Eggert 406aa1e5a0 More fixes
- Legacy-Id: 19742
2021-12-02 11:07:50 +00:00

514 lines
20 KiB
Python

# Copyright The IETF Trust 2015-2020, All Rights Reserved
# -*- coding: utf-8 -*-
from pyquery import PyQuery
from http.cookies import SimpleCookie
from django.urls import reverse as urlreverse
from django.conf import settings
import debug # pyflakes:ignore
from ietf.utils.test_utils import TestCase
def q(r, q):
return PyQuery(r.content)(
'div a.active[href="/accounts/settings/' + q + '"]'
).text()
def qn(r, q):
return PyQuery(r.content)(
'div a.active[href^="/accounts/settings/' + q + '"]'
).text()
class CookieTests(TestCase):
def r(self, c, **kwargs):
r = self.client.get(urlreverse("ietf.cookies.views." + c, **kwargs))
self.assertEqual(r.status_code, 200)
return r
def test_settings_defaults(self):
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
if settings.USER_PREFERENCE_DEFAULTS["full_draft"] == "off":
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
else:
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_settings_defaults_from_cookies(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "7",
str("expires_soon"): 7,
str("left_menu"): "on",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/7"), r"\s*7 days\s*")
self.assertRegex(q(r, "expires_soon/7"), r"\s*7 days\s*")
self.assertRegex(q(r, "left_menu/on"), r"\s*On\s*")
def test_settings_values_from_cookies_garbage(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "foo",
str("new_enough"): "foo",
str("expires_soon"): "foo",
str("left_menu"): "foo",
}
)
r = self.r("preferences")
if settings.USER_PREFERENCE_DEFAULTS["full_draft"] == "off":
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
else:
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_settings_values_from_cookies_random(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "zappa",
str("new_enough"): "365",
str("expires_soon"): "5",
str("left_menu"): "zappa",
}
)
r = self.r("preferences")
if settings.USER_PREFERENCE_DEFAULTS["full_draft"] == "off":
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
else:
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(qn(r, "new_enough"), r"\s*\s*")
self.assertRegex(qn(r, "expires_soon"), r"\s*\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_settings_values_from_cookies_1(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("new_enough"): "90",
str("expires_soon"): 7,
str("left_menu"): "off",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/90"), r"\s*90 days\s*")
self.assertRegex(q(r, "expires_soon/7"), r"\s*7 days\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_settings_values_from_cookies_2(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "60",
str("expires_soon"): 14,
str("left_menu"): "on",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/60"), r"\s*60 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "left_menu/on"), r"\s*On\s*")
def test_settings_values_from_cookies_3(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("new_enough"): "30",
str("expires_soon"): 21,
str("left_menu"): "off",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/30"), r"\s*30 days\s*")
self.assertRegex(q(r, "expires_soon/21"), r"\s*21 days\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_settings_values_from_cookies_4(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "21",
str("expires_soon"): 30,
str("left_menu"): "on",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/21"), r"\s*21 days\s*")
self.assertRegex(q(r, "expires_soon/30"), r"\s*30 days\s*")
self.assertRegex(q(r, "left_menu/on"), r"\s*On\s*")
def test_settings_values_from_cookies_5(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("new_enough"): "14",
str("expires_soon"): 60,
str("left_menu"): "off",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/60"), r"\s*60 days\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_settings_values_from_cookies_6(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "7",
str("expires_soon"): 90,
str("left_menu"): "on",
}
)
r = self.r("preferences")
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/7"), r"\s*7 days\s*")
self.assertRegex(q(r, "expires_soon/90"), r"\s*90 days\s*")
self.assertRegex(q(r, "left_menu/on"), r"\s*On\s*")
def test_full_draft(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
}
)
r = self.r("full_draft") # no value: reset
self.assertEqual(r.cookies[str("full_draft")].value, "")
self.assertListEqual([str("full_draft")], list(r.cookies.keys()))
if settings.USER_PREFERENCE_DEFAULTS["full_draft"] == "off":
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
else:
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
def test_full_draft_on(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
}
)
r = self.r("full_draft", kwargs=dict(enabled="on"))
self.assertEqual(r.cookies[str("full_draft")].value, "on")
self.assertListEqual([str("full_draft")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
def test_full_draft_off(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
}
)
r = self.r("full_draft", kwargs=dict(enabled="off"))
self.assertEqual(r.cookies[str("full_draft")].value, "off")
self.assertListEqual([str("full_draft")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
def test_full_draft_foo(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
}
)
r = self.r("full_draft", kwargs=dict(enabled="foo"))
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
def test_left_menu(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
str("left_menu"): "on",
}
)
r = self.r("left_menu") # no value: reset
self.assertEqual(r.cookies[str("left_menu")].value, "")
self.assertListEqual([str("left_menu")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
def test_left_menu_on(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
str("left_menu"): "off",
}
)
r = self.r("left_menu", kwargs=dict(enabled="on"))
self.assertEqual(r.cookies[str("left_menu")].value, "on")
self.assertListEqual([str("left_menu")], list(r.cookies.keys()))
self.assertRegex(q(r, "left_menu/on"), r"\s*On\s*")
def test_left_menu_off(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
str("left_menu"): "off",
}
)
r = self.r("left_menu", kwargs=dict(enabled="off"))
self.assertEqual(r.cookies[str("left_menu")].value, "off")
self.assertListEqual([str("left_menu")], list(r.cookies.keys()))
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_left_menu_foo(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
str("left_menu"): "off",
}
)
r = self.r("left_menu", kwargs=dict(enabled="foo"))
self.assertListEqual([], list(r.cookies.keys()))
self.assertRegex(q(r, "left_menu/off"), r"\s*Off\s*")
def test_new_enough(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
}
)
r = self.r("new_enough") # no value: reset
self.assertEqual(r.cookies[str("new_enough")].value, "")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
def test_new_enough_7(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("new_enough"): "14",
str("expires_soon"): 21,
}
)
r = self.r("new_enough", kwargs=dict(days="7"))
self.assertEqual(r.cookies[str("new_enough")].value, "7")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/7"), r"\s*7 days\s*")
self.assertRegex(q(r, "expires_soon/21"), r"\s*21 days\s*")
def test_new_enough_14(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("new_enough"): "7",
str("expires_soon"): 99,
}
)
r = self.r("new_enough", kwargs=dict(days="14"))
self.assertEqual(r.cookies[str("new_enough")].value, "14")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(qn(r, "expires_soon/14"), r"\s*\s*")
def test_new_enough_21(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("new_enough"): "14",
str("expires_soon"): 90,
}
)
r = self.r("new_enough", kwargs=dict(days="21"))
self.assertEqual(r.cookies[str("new_enough")].value, "21")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/21"), r"\s*21 days\s*")
self.assertRegex(q(r, "expires_soon/90"), r"\s*90 days\s*")
def test_new_enough_30(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 7,
}
)
r = self.r("new_enough", kwargs=dict(days="30"))
self.assertEqual(r.cookies[str("new_enough")].value, "30")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/30"), r"\s*30 days\s*")
self.assertRegex(q(r, "expires_soon/7"), r"\s*7 days\s*")
def test_new_enough_60(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "14",
str("expires_soon"): 14,
}
)
r = self.r("new_enough", kwargs=dict(days="60"))
self.assertEqual(r.cookies[str("new_enough")].value, "60")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/60"), r"\s*60 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
def test_new_enough_90(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("new_enough"): "22",
str("expires_soon"): 60,
}
)
r = self.r("new_enough", kwargs=dict(days="90"))
self.assertEqual(r.cookies[str("new_enough")].value, "90")
self.assertListEqual([str("new_enough")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/90"), r"\s*90 days\s*")
self.assertRegex(q(r, "expires_soon/60"), r"\s*60 days\s*")
def test_expires_soon(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("expires_soon"): "14",
str("new_enough"): 14,
}
)
r = self.r("expires_soon") # no value: reset
self.assertEqual(r.cookies[str("expires_soon")].value, "")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
def test_expires_soon_7(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("expires_soon"): "14",
str("new_enough"): 21,
}
)
r = self.r("expires_soon", kwargs=dict(days="7"))
self.assertEqual(r.cookies[str("expires_soon")].value, "7")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/21"), r"\s*21 days\s*")
self.assertRegex(q(r, "expires_soon/7"), r"\s*7 days\s*")
def test_expires_soon_14(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("expires_soon"): "7",
str("new_enough"): 99,
}
)
r = self.r("expires_soon", kwargs=dict(days="14"))
self.assertEqual(r.cookies[str("expires_soon")].value, "14")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(qn(r, "new_enough"), r"\s*\s*")
self.assertRegex(q(r, "expires_soon/14"), r"\s*14 days\s*")
def test_expires_soon_21(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "on",
str("expires_soon"): "14",
str("new_enough"): 90,
}
)
r = self.r("expires_soon", kwargs=dict(days="21"))
self.assertEqual(r.cookies[str("expires_soon")].value, "21")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/on"), r"\s*On\s*")
self.assertRegex(q(r, "new_enough/90"), r"\s*90 days\s*")
self.assertRegex(q(r, "expires_soon/21"), r"\s*21 days\s*")
def test_expires_soon_30(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("expires_soon"): "14",
str("new_enough"): 7,
}
)
r = self.r("expires_soon", kwargs=dict(days="30"))
self.assertEqual(r.cookies[str("expires_soon")].value, "30")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/7"), r"\s*7 days\s*")
self.assertRegex(q(r, "expires_soon/30"), r"\s*30 days\s*")
def test_expires_soon_60(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("expires_soon"): "14",
str("new_enough"): 14,
}
)
r = self.r("expires_soon", kwargs=dict(days="60"))
self.assertEqual(r.cookies[str("expires_soon")].value, "60")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/14"), r"\s*14 days\s*")
self.assertRegex(q(r, "expires_soon/60"), r"\s*60 days\s*")
def test_expires_soon_90(self):
self.client.cookies = SimpleCookie(
{
str("full_draft"): "off",
str("expires_soon"): "22",
str("new_enough"): 60,
}
)
r = self.r("expires_soon", kwargs=dict(days="90"))
self.assertEqual(r.cookies[str("expires_soon")].value, "90")
self.assertListEqual([str("expires_soon")], list(r.cookies.keys()))
self.assertRegex(q(r, "full_draft/off"), r"\s*Off\s*")
self.assertRegex(q(r, "new_enough/60"), r"\s*60 days\s*")
self.assertRegex(q(r, "expires_soon/90"), r"\s*90 days\s*")