1313# limitations under the License.
1414
1515import io
16- from typing import Iterable , Optional , Tuple
16+ from typing import Iterable , Optional
17+
18+ from matrix_common .types .mxc_uri import MXCUri
1719
1820from twisted .test .proto_helpers import MemoryReactor
1921
@@ -63,9 +65,9 @@ def _create_media_and_set_attributes(
6365 last_accessed_ms : Optional [int ],
6466 is_quarantined : Optional [bool ] = False ,
6567 is_protected : Optional [bool ] = False ,
66- ) -> str :
68+ ) -> MXCUri :
6769 # "Upload" some media to the local media store
68- mxc_uri = self .get_success (
70+ mxc_uri : MXCUri = self .get_success (
6971 media_repository .create_content (
7072 media_type = "text/plain" ,
7173 upload_name = None ,
@@ -75,13 +77,11 @@ def _create_media_and_set_attributes(
7577 )
7678 )
7779
78- media_id = mxc_uri .split ("/" )[- 1 ]
79-
8080 # Set the last recently accessed time for this media
8181 if last_accessed_ms is not None :
8282 self .get_success (
8383 self .store .update_cached_last_access_time (
84- local_media = (media_id ,),
84+ local_media = (mxc_uri . media_id ,),
8585 remote_media = (),
8686 time_ms = last_accessed_ms ,
8787 )
@@ -92,7 +92,7 @@ def _create_media_and_set_attributes(
9292 self .get_success (
9393 self .store .quarantine_media_by_id (
9494 server_name = self .hs .config .server .server_name ,
95- media_id = media_id ,
95+ media_id = mxc_uri . media_id ,
9696 quarantined_by = "@theadmin:test" ,
9797 )
9898 )
@@ -101,18 +101,18 @@ def _create_media_and_set_attributes(
101101 # Mark this media as protected from quarantine
102102 self .get_success (
103103 self .store .mark_local_media_as_safe (
104- media_id = media_id ,
104+ media_id = mxc_uri . media_id ,
105105 safe = True ,
106106 )
107107 )
108108
109- return media_id
109+ return mxc_uri
110110
111111 def _cache_remote_media_and_set_attributes (
112112 media_id : str ,
113113 last_accessed_ms : Optional [int ],
114114 is_quarantined : Optional [bool ] = False ,
115- ) -> str :
115+ ) -> MXCUri :
116116 # Pretend to cache some remote media
117117 self .get_success (
118118 self .store .store_cached_remote_media (
@@ -146,7 +146,7 @@ def _cache_remote_media_and_set_attributes(
146146 )
147147 )
148148
149- return media_id
149+ return MXCUri ( self . remote_server_name , media_id )
150150
151151 # Start with the local media store
152152 self .local_recently_accessed_media = _create_media_and_set_attributes (
@@ -214,28 +214,16 @@ def test_local_media_retention(self) -> None:
214214 # Remote media should be unaffected.
215215 self ._assert_if_mxc_uris_purged (
216216 purged = [
217- (
218- self .hs .config .server .server_name ,
219- self .local_not_recently_accessed_media ,
220- ),
221- (self .hs .config .server .server_name , self .local_never_accessed_media ),
217+ self .local_not_recently_accessed_media ,
218+ self .local_never_accessed_media ,
222219 ],
223220 not_purged = [
224- (self .hs .config .server .server_name , self .local_recently_accessed_media ),
225- (
226- self .hs .config .server .server_name ,
227- self .local_not_recently_accessed_quarantined_media ,
228- ),
229- (
230- self .hs .config .server .server_name ,
231- self .local_not_recently_accessed_protected_media ,
232- ),
233- (self .remote_server_name , self .remote_recently_accessed_media ),
234- (self .remote_server_name , self .remote_not_recently_accessed_media ),
235- (
236- self .remote_server_name ,
237- self .remote_not_recently_accessed_quarantined_media ,
238- ),
221+ self .local_recently_accessed_media ,
222+ self .local_not_recently_accessed_quarantined_media ,
223+ self .local_not_recently_accessed_protected_media ,
224+ self .remote_recently_accessed_media ,
225+ self .remote_not_recently_accessed_media ,
226+ self .remote_not_recently_accessed_quarantined_media ,
239227 ],
240228 )
241229
@@ -261,49 +249,35 @@ def test_remote_media_cache_retention(self) -> None:
261249 # Remote media accessed <30 days ago should still exist.
262250 self ._assert_if_mxc_uris_purged (
263251 purged = [
264- ( self .remote_server_name , self . remote_not_recently_accessed_media ) ,
252+ self .remote_not_recently_accessed_media ,
265253 ],
266254 not_purged = [
267- (self .remote_server_name , self .remote_recently_accessed_media ),
268- (self .hs .config .server .server_name , self .local_recently_accessed_media ),
269- (
270- self .hs .config .server .server_name ,
271- self .local_not_recently_accessed_media ,
272- ),
273- (
274- self .hs .config .server .server_name ,
275- self .local_not_recently_accessed_quarantined_media ,
276- ),
277- (
278- self .hs .config .server .server_name ,
279- self .local_not_recently_accessed_protected_media ,
280- ),
281- (
282- self .remote_server_name ,
283- self .remote_not_recently_accessed_quarantined_media ,
284- ),
285- (self .hs .config .server .server_name , self .local_never_accessed_media ),
255+ self .remote_recently_accessed_media ,
256+ self .local_recently_accessed_media ,
257+ self .local_not_recently_accessed_media ,
258+ self .local_not_recently_accessed_quarantined_media ,
259+ self .local_not_recently_accessed_protected_media ,
260+ self .remote_not_recently_accessed_quarantined_media ,
261+ self .local_never_accessed_media ,
286262 ],
287263 )
288264
289265 def _assert_if_mxc_uris_purged (
290- self , purged : Iterable [Tuple [ str , str ]] , not_purged : Iterable [Tuple [ str , str ] ]
266+ self , purged : Iterable [MXCUri ] , not_purged : Iterable [MXCUri ]
291267 ) -> None :
292- def _assert_mxc_uri_purge_state (
293- server_name : str , media_id : str , expect_purged : bool
294- ) -> None :
268+ def _assert_mxc_uri_purge_state (mxc_uri : MXCUri , expect_purged : bool ) -> None :
295269 """Given an MXC URI, assert whether it has been purged or not."""
296- if server_name == self .hs .config .server .server_name :
270+ if mxc_uri . server_name == self .hs .config .server .server_name :
297271 found_media_dict = self .get_success (
298- self .store .get_local_media (media_id )
272+ self .store .get_local_media (mxc_uri . media_id )
299273 )
300274 else :
301275 found_media_dict = self .get_success (
302- self .store .get_cached_remote_media (server_name , media_id )
276+ self .store .get_cached_remote_media (
277+ mxc_uri .server_name , mxc_uri .media_id
278+ )
303279 )
304280
305- mxc_uri = f"mxc://{ server_name } /{ media_id } "
306-
307281 if expect_purged :
308282 self .assertIsNone (
309283 found_media_dict , msg = f"{ mxc_uri } unexpectedly not purged"
@@ -315,7 +289,7 @@ def _assert_mxc_uri_purge_state(
315289 )
316290
317291 # Assert that the given MXC URIs have either been correctly purged or not.
318- for server_name , media_id in purged :
319- _assert_mxc_uri_purge_state (server_name , media_id , expect_purged = True )
320- for server_name , media_id in not_purged :
321- _assert_mxc_uri_purge_state (server_name , media_id , expect_purged = False )
292+ for mxc_uri in purged :
293+ _assert_mxc_uri_purge_state (mxc_uri , expect_purged = True )
294+ for mxc_uri in not_purged :
295+ _assert_mxc_uri_purge_state (mxc_uri , expect_purged = False )
0 commit comments