(self)
| 11 | class CookieTests(unittest.TestCase): |
| 12 | |
| 13 | def test_basic(self): |
| 14 | cases = [ |
| 15 | {'data': 'chips=ahoy; vienna=finger', |
| 16 | 'dict': {'chips':'ahoy', 'vienna':'finger'}, |
| 17 | 'repr': "<SimpleCookie: chips='ahoy' vienna='finger'>", |
| 18 | 'output': 'Set-Cookie: chips=ahoy\nSet-Cookie: vienna=finger'}, |
| 19 | |
| 20 | {'data': 'keebler="E=mc2; L=\\"Loves\\"; fudge=;"', |
| 21 | 'dict': {'keebler' : 'E=mc2; L="Loves"; fudge=;'}, |
| 22 | 'repr': '''<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=;'>''', |
| 23 | 'output': 'Set-Cookie: keebler="E=mc2; L=\\"Loves\\"; fudge=;"'}, |
| 24 | |
| 25 | # Check illegal cookies that have an '=' char in an unquoted value |
| 26 | {'data': 'keebler=E=mc2', |
| 27 | 'dict': {'keebler' : 'E=mc2'}, |
| 28 | 'repr': "<SimpleCookie: keebler='E=mc2'>", |
| 29 | 'output': 'Set-Cookie: keebler=E=mc2'}, |
| 30 | |
| 31 | # Cookies with ':' character in their name. Though not mentioned in |
| 32 | # RFC, servers / browsers allow it. |
| 33 | |
| 34 | {'data': 'key:term=value:term', |
| 35 | 'dict': {'key:term' : 'value:term'}, |
| 36 | 'repr': "<SimpleCookie: key:term='value:term'>", |
| 37 | 'output': 'Set-Cookie: key:term=value:term'}, |
| 38 | |
| 39 | # issue22931 - Adding '[' and ']' as valid characters in cookie |
| 40 | # values as defined in RFC 6265 |
| 41 | { |
| 42 | 'data': 'a=b; c=[; d=r; f=h', |
| 43 | 'dict': {'a':'b', 'c':'[', 'd':'r', 'f':'h'}, |
| 44 | 'repr': "<SimpleCookie: a='b' c='[' d='r' f='h'>", |
| 45 | 'output': '\n'.join(( |
| 46 | 'Set-Cookie: a=b', |
| 47 | 'Set-Cookie: c=[', |
| 48 | 'Set-Cookie: d=r', |
| 49 | 'Set-Cookie: f=h' |
| 50 | )) |
| 51 | }, |
| 52 | |
| 53 | # gh-92936: allow double quote in cookie values |
| 54 | { |
| 55 | 'data': 'cookie="{"key": "value"}"', |
| 56 | 'dict': {'cookie': '{"key": "value"}'}, |
| 57 | 'repr': "<SimpleCookie: cookie='{\"key\": \"value\"}'>", |
| 58 | 'output': 'Set-Cookie: cookie="{"key": "value"}"', |
| 59 | }, |
| 60 | { |
| 61 | 'data': 'key="some value; surrounded by quotes"', |
| 62 | 'dict': {'key': 'some value; surrounded by quotes'}, |
| 63 | 'repr': "<SimpleCookie: key='some value; surrounded by quotes'>", |
| 64 | 'output': 'Set-Cookie: key="some value; surrounded by quotes"', |
| 65 | }, |
| 66 | { |
| 67 | 'data': 'session="user123"; preferences="{"theme": "dark"}"', |
| 68 | 'dict': {'session': 'user123', 'preferences': '{"theme": "dark"}'}, |
| 69 | 'repr': "<SimpleCookie: preferences='{\"theme\": \"dark\"}' session='user123'>", |
| 70 | 'output': '\n'.join(( |
nothing calls this directly
no test coverage detected