( # Optional group: there may not be a value.
\s*=\s* # Equal Sign
(?P<val> # Start of group 'val'
- "(?:[^\\"]|\\.)*" # Any double-quoted string
+ "(?:\\"|.)*?" # Any double-quoted string
| # or
# Special case for "expires" attr
(\w{3,6}day|\w{3}),\s # Day of the week or abbreviated day
'Set-Cookie: d=r',
'Set-Cookie: f=h'
))
+ },
+
+ # gh-92936: allow double quote in cookie values
+ {
+ 'data': 'cookie="{"key": "value"}"',
+ 'dict': {'cookie': '{"key": "value"}'},
+ 'repr': "<SimpleCookie: cookie='{\"key\": \"value\"}'>",
+ 'output': 'Set-Cookie: cookie="{"key": "value"}"',
+ },
+ {
+ 'data': 'key="some value; surrounded by quotes"',
+ 'dict': {'key': 'some value; surrounded by quotes'},
+ 'repr': "<SimpleCookie: key='some value; surrounded by quotes'>",
+ 'output': 'Set-Cookie: key="some value; surrounded by quotes"',
+ },
+ {
+ 'data': 'session="user123"; preferences="{"theme": "dark"}"',
+ 'dict': {'session': 'user123', 'preferences': '{"theme": "dark"}'},
+ 'repr': "<SimpleCookie: preferences='{\"theme\": \"dark\"}' session='user123'>",
+ 'output': '\n'.join((
+ 'Set-Cookie: preferences="{"theme": "dark"}"',
+ 'Set-Cookie: session="user123"',
+ ))
}
]