if value[0] in WSP:
token, value = get_fws(value)
elif value[:2] == '=?':
+ valid_ew = False
try:
token, value = get_encoded_word(value)
bare_quoted_string.defects.append(errors.InvalidHeaderDefect(
"encoded word inside quoted string"))
+ valid_ew = True
except errors.HeaderParseError:
token, value = get_qcontent(value)
+ # Collapse the whitespace between two encoded words that occur in a
+ # bare-quoted-string.
+ if valid_ew and len(bare_quoted_string) > 1:
+ if (bare_quoted_string[-1].token_type == 'fws' and
+ bare_quoted_string[-2].token_type == 'encoded-word'):
+ bare_quoted_string[-1] = EWWhiteSpaceTerminal(
+ bare_quoted_string[-1], 'fws')
else:
token, value = get_qcontent(value)
bare_quoted_string.append(token)
{'filename': 'foo'},
[errors.InvalidHeaderDefect]),
+ 'invalid_parameter_value_with_fws_between_ew': (
+ 'attachment; filename="=?UTF-8?Q?Schulbesuchsbest=C3=A4ttigung=2E?='
+ ' =?UTF-8?Q?pdf?="',
+ 'attachment',
+ {'filename': 'Schulbesuchsbestättigung.pdf'},
+ [errors.InvalidHeaderDefect]*3,
+ ('attachment; filename="Schulbesuchsbestättigung.pdf"'),
+ ('Content-Disposition: attachment;\n'
+ ' filename*=utf-8\'\'Schulbesuchsbest%C3%A4ttigung.pdf\n'),
+ ),
+
+ 'parameter_value_with_fws_between_tokens': (
+ 'attachment; filename="File =?utf-8?q?Name?= With Spaces.pdf"',
+ 'attachment',
+ {'filename': 'File Name With Spaces.pdf'},
+ [errors.InvalidHeaderDefect],
+ 'attachment; filename="File Name With Spaces.pdf"',
+ ('Content-Disposition: attachment; filename="File Name With Spaces.pdf"\n'),
+ )
}