File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -163,7 +163,8 @@ def save_attachment(
163163 expires_at = datetime .now () + timedelta (seconds = self .expiration_seconds )
164164 self ._metadata [file_id ] = {
165165 "file_path" : str (file_path ),
166- "filename" : filename or f"attachment{ extension } " ,
166+ "filename" : save_name ,
167+ "original_filename" : filename ,
167168 "mime_type" : mime_type or "application/octet-stream" ,
168169 "size" : len (file_bytes ),
169170 "created_at" : datetime .now (),
Original file line number Diff line number Diff line change @@ -112,6 +112,25 @@ def test_save_attachment_sanitizes_windows_reserved_filenames(
112112 assert saved_bytes == payload
113113
114114
115+ def test_save_attachment_metadata_filename_matches_saved_file (isolated_storage ):
116+ """Attachment metadata should report the on-disk filename."""
117+ payload = b"metadata filename check"
118+ b64_data = base64 .urlsafe_b64encode (payload ).decode ()
119+
120+ result = isolated_storage .save_attachment (
121+ b64_data , filename = "RE: Foo?.eml" , mime_type = "message/rfc822"
122+ )
123+ saved_name = os .path .basename (result .path )
124+ metadata = isolated_storage .get_attachment_metadata (result .file_id )
125+
126+ assert metadata ["filename" ] == saved_name
127+ assert metadata ["original_filename" ] == "RE: Foo?.eml"
128+ assert metadata ["filename" ].startswith ("RE_ Foo_" )
129+ assert metadata ["filename" ].endswith (".eml" )
130+ assert ":" not in metadata ["filename" ]
131+ assert "?" not in metadata ["filename" ]
132+
133+
115134@pytest .mark .parametrize (
116135 "payload" ,
117136 [
You can’t perform that action at this time.
0 commit comments