Ignore expires and max_age arguments if passed to Response.delete_cookie (Fixes #323)

This commit is contained in:
Miguel Grinberg
2025-11-04 10:03:39 +00:00
parent 680cbefc19
commit d61785b2e8
3 changed files with 12 additions and 4 deletions

View File

@@ -632,9 +632,13 @@ class Response:
"""Delete a cookie.
:param cookie: The cookie's name.
:param kwargs: Any cookie opens and flags supported by
``set_cookie()`` except ``expires`` and ``max_age``.
:param kwargs: Any cookie options and flags supported by
:meth:`set_cookie() <microdot.Response.set_cookie>`.
Values given for ``expires`` and ``max_age`` are
ignored.
"""
kwargs.pop('expires', None)
kwargs.pop('max_age', None)
self.set_cookie(cookie, '', expires='Thu, 01 Jan 1970 00:00:01 GMT',
max_age=0, **kwargs)

View File

@@ -25,7 +25,10 @@ class SessionDict(dict):
class Session:
"""
:param app: The application instance.
:param key: The secret key, as a string or bytes object.
:param secret_key: The secret key, as a string or bytes object.
:param cookie_options: A dictionary with cookie options to pass as
arguments to :meth:`Response.set_cookie()
<microdot.Response.set_cookie>`.
"""
secret_key = None

View File

@@ -204,9 +204,10 @@ class TestMicrodot(unittest.TestCase):
res.set_cookie('four', '4')
res.delete_cookie('two', path='/')
res.delete_cookie('one', path='/bad')
res.delete_cookie('five', max_age=123, expires='foo')
return res
client = TestClient(app, cookies={'one': '1', 'two': '2'})
client = TestClient(app, cookies={'one': '1', 'two': '2', 'five': '5'})
res = self._run(client.get('/', headers={'Cookie': 'three=3'}))
self.assertEqual(res.status_code, 200)
self.assertEqual(res.headers['Content-Type'],