Mercurial > p > roundup > code
view test/test_jinja2.py @ 8185:e84d4585b16d
fix(web): issue2551356. Add etag header for not-modified (304) request.
When a 304 is returned to a conditional request for a static file,
print an ETag for the response.
ETag was always sent with a 200 response.
This also adds initial support for if-none-match conditional requests
for static files.
Changes:
Refactors the if-modified-since code out to a method.
It moves a file stat call from serve_static_file to _serve_file
so that an etag can be generated by both serve_static_file and
serve_file which call _serve_file.
Tests added. This does not test the codepath where serve_file pulls
content from the database rather than from a local file on disk.
Test mocking _serve_file changed to account for 5th argument to serve_file
BREAKING CHANGE:
function signature for client.py-Client::_serve_file() now has 5 not 4
parameters (added etag param). Since this is a "hidden" method I am
not too worried about it.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 10 Dec 2024 16:06:13 -0500 |
| parents | d26921b851c3 |
| children |
line wrap: on
line source
#-*- encoding: utf-8 -*- """ Testing the jinja2 templating engine of roundup-tracker. Copyright: 2016 Intevation GmbH. Author: Bernhard E. Reiter <bernhard@intevation.de> This module is Free Software under the Roundup licensing of 1.5, see the COPYING.txt file coming with Roundup. Just a test file template for now. """ import shutil # only, needed for tearDown. TODO: Remove when refactored. import unittest from . import db_test_base TESTSUITE_IDENTIFIER='jinja2' class TestCase_Zero(unittest.TestCase): def test_zero(self): self.assertEqual(True, True) class Jinja2Test(object): """Sets up and tears down an instance with database contents. Setup and teardown modelled after the use of db_test_base by several modules like test_xmlrpc and test_userauditor. TODO: Should probably be moved to a base case in db_test_base.py. """ backend = None # can be used to create tests per backend, see test_xmlrpc def setUp(self): self.dirname = '_test_' + TESTSUITE_IDENTIFIER self.instance = db_test_base.setupTracker(self.dirname, self.backend) self.db = self.instance.open('admin') def tearDown(self): self.db.close() try: shutil.rmtree(self.dirname) except OSError as error: if error.errno not in (errno.ENOENT, errno.ESRCH): raise def test_zero(self): """Do nothing just make sure that setup and teardown works.""" pass # only using one database backend for now, not sure if doing all # backends will keep the test focussed enough to be useful for the used # computing time. Would be okay to change in the future. class anydbmJinja2Test(Jinja2Test, unittest.TestCase): backend = 'anydbm' # vim: ts=4 et sts=4 sw=4 ai :
