Skip to content

Commit fd30dab

Browse files
committed
Adding tests for the debug toolbar's API.
1 parent 2598faf commit fd30dab

File tree

1 file changed

+66
-2
lines changed

1 file changed

+66
-2
lines changed

tests/test_javascript.py

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
from __future__ import absolute_import, unicode_literals
44

5+
import calendar
56
import os
7+
from datetime import timedelta
68

79
try:
810
from selenium import webdriver
@@ -16,6 +18,7 @@
1618

1719
from django.test import LiveServerTestCase
1820
from django.test.utils import override_settings
21+
from django.utils import timezone
1922
from django.utils.unittest import skipIf, skipUnless
2023

2124
from debug_toolbar.settings import PANELS_DEFAULTS
@@ -46,10 +49,11 @@ def setUp(self):
4649
"#djDebugPanelList li a.{}".format(self.panel_class)
4750
)
4851
self.panel = self.selenium.find_element_by_id(self.panel_class)
52+
WebDriverWait(self.selenium, timeout=10).until(
53+
lambda selenium: self.panel_trigger.is_displayed())
4954

5055
def tearDown(self):
5156
self.selenium.delete_all_cookies()
52-
self.selenium.refresh()
5357

5458
def test_show_toolbar(self):
5559
toolbar = self.selenium.find_element_by_id('djDebug')
@@ -278,10 +282,16 @@ def tearDownClass(cls):
278282

279283
def setUp(self):
280284
self.selenium.get(self.live_server_url + '/execute_sql/')
285+
self.panel_class = "HeadersPanel"
286+
self.panel_trigger = self.selenium.find_element(
287+
By.CSS_SELECTOR,
288+
"#djDebugPanelList li a.{}".format(self.panel_class)
289+
)
290+
WebDriverWait(self.selenium, timeout=10).until(
291+
lambda selenium: self.panel_trigger.is_displayed())
281292

282293
def tearDown(self):
283294
self.selenium.delete_all_cookies()
284-
self.selenium.refresh()
285295

286296
def test_show_toolbar(self):
287297
self.selenium.execute_script("djdt.close()")
@@ -336,3 +346,57 @@ def test_hide_toolbar(self):
336346
cookie = self.selenium.get_cookie('djdt')
337347
self.assertEquals(cookie['name'], 'djdt')
338348
self.assertEquals(cookie['value'], 'hide')
349+
350+
def test_cookie_get_none(self):
351+
null_cookie = self.selenium.execute_script(
352+
"return djdt.cookie.get('test')"
353+
)
354+
self.assertIsNone(null_cookie)
355+
356+
def test_cookie_get(self):
357+
key = str("test")
358+
value = str("val")
359+
path = str("/")
360+
expires = calendar.timegm(
361+
(timezone.now() + timedelta(days=10)).timetuple()
362+
)
363+
domain = str("localhost")
364+
self.selenium.add_cookie({
365+
"name": key,
366+
"value": value,
367+
"expiry": expires,
368+
"path": path,
369+
"domain": domain,
370+
})
371+
actual_value = self.selenium.execute_script(
372+
"return djdt.cookie.get('{}')".format(key)
373+
)
374+
self.assertEquals(actual_value, value)
375+
376+
def test_cookie_set(self):
377+
key = str("test")
378+
value = str("val")
379+
path = str("/")
380+
expires = 3
381+
domain = str("localhost")
382+
expires_lower_bound = timezone.now().date() + timedelta(days=expires)
383+
expires_upper_bound = expires_lower_bound + timedelta(days=1)
384+
self.selenium.execute_script(
385+
"djdt.cookie.set('{}','{}',{{'path':'{}','expires':{},'domain':'{}'}})"
386+
.format(key, value, path, expires, domain)
387+
)
388+
cookie = self.selenium.get_cookie(key)
389+
self.assertEquals(cookie['name'], key)
390+
self.assertEquals(cookie['value'], value)
391+
self.assertEquals(cookie['path'], path)
392+
self.assertEquals(cookie['domain'], domain)
393+
# Verify the expiration date is close to the value we passed in.
394+
# The method calculates the current time, so it's difficult to compare.
395+
self.assertGreaterEqual(
396+
cookie['expiry'],
397+
calendar.timegm(expires_lower_bound.timetuple())
398+
)
399+
self.assertLessEqual(
400+
cookie['expiry'],
401+
calendar.timegm(expires_upper_bound.timetuple())
402+
)

0 commit comments

Comments
 (0)