Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 23bdd30

Browse files
committed
Use MXCUri to simplify MediaRetentionTestCase.
Helps clean this test case up quite a bit.
1 parent 76b14ca commit 23bdd30

File tree

2 files changed

+40
-68
lines changed

2 files changed

+40
-68
lines changed

synapse/rest/media/v1/media_repository.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from synapse.http.site import SynapseRequest
3737
from synapse.logging.context import defer_to_thread
3838
from synapse.metrics.background_process_metrics import run_as_background_process
39-
from synapse.types import UserID
39+
from synapse.types import MXCUri, UserID
4040
from synapse.util.async_helpers import Linearizer
4141
from synapse.util.retryutils import NotRetryingDestination
4242
from synapse.util.stringutils import random_string
@@ -187,7 +187,7 @@ async def create_content(
187187
content: IO,
188188
content_length: int,
189189
auth_user: UserID,
190-
) -> str:
190+
) -> MXCUri:
191191
"""Store uploaded content for a local user and return the mxc URL
192192
193193
Args:
@@ -220,7 +220,7 @@ async def create_content(
220220

221221
await self._generate_thumbnails(None, media_id, media_id, media_type)
222222

223-
return "mxc://%s/%s" % (self.server_name, media_id)
223+
return MXCUri(self.server_name, media_id)
224224

225225
async def get_local_media(
226226
self, request: SynapseRequest, media_id: str, name: Optional[str]

tests/rest/media/test_media_retention.py

Lines changed: 37 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
# limitations under the License.
1414

1515
import io
16-
from typing import Iterable, Optional, Tuple
16+
from typing import Iterable, Optional
1717

1818
from twisted.test.proto_helpers import MemoryReactor
1919

2020
from synapse.rest import admin
2121
from synapse.rest.client import login, register, room
2222
from synapse.server import HomeServer
23-
from synapse.types import UserID
23+
from synapse.types import MXCUri, UserID
2424
from synapse.util import Clock
2525

2626
from tests import unittest
@@ -63,9 +63,9 @@ def _create_media_and_set_attributes(
6363
last_accessed_ms: Optional[int],
6464
is_quarantined: Optional[bool] = False,
6565
is_protected: Optional[bool] = False,
66-
) -> str:
66+
) -> MXCUri:
6767
# "Upload" some media to the local media store
68-
mxc_uri = self.get_success(
68+
mxc_uri: MXCUri = self.get_success(
6969
media_repository.create_content(
7070
media_type="text/plain",
7171
upload_name=None,
@@ -75,13 +75,11 @@ def _create_media_and_set_attributes(
7575
)
7676
)
7777

78-
media_id = mxc_uri.split("/")[-1]
79-
8078
# Set the last recently accessed time for this media
8179
if last_accessed_ms is not None:
8280
self.get_success(
8381
self.store.update_cached_last_access_time(
84-
local_media=(media_id,),
82+
local_media=(mxc_uri.media_id,),
8583
remote_media=(),
8684
time_ms=last_accessed_ms,
8785
)
@@ -92,7 +90,7 @@ def _create_media_and_set_attributes(
9290
self.get_success(
9391
self.store.quarantine_media_by_id(
9492
server_name=self.hs.config.server.server_name,
95-
media_id=media_id,
93+
media_id=mxc_uri.media_id,
9694
quarantined_by="@theadmin:test",
9795
)
9896
)
@@ -101,18 +99,18 @@ def _create_media_and_set_attributes(
10199
# Mark this media as protected from quarantine
102100
self.get_success(
103101
self.store.mark_local_media_as_safe(
104-
media_id=media_id,
102+
media_id=mxc_uri.media_id,
105103
safe=True,
106104
)
107105
)
108106

109-
return media_id
107+
return mxc_uri
110108

111109
def _cache_remote_media_and_set_attributes(
112110
media_id: str,
113111
last_accessed_ms: Optional[int],
114112
is_quarantined: Optional[bool] = False,
115-
) -> str:
113+
) -> MXCUri:
116114
# Pretend to cache some remote media
117115
self.get_success(
118116
self.store.store_cached_remote_media(
@@ -146,7 +144,7 @@ def _cache_remote_media_and_set_attributes(
146144
)
147145
)
148146

149-
return media_id
147+
return MXCUri(self.remote_server_name, media_id)
150148

151149
# Start with the local media store
152150
self.local_recently_accessed_media = _create_media_and_set_attributes(
@@ -214,28 +212,16 @@ def test_local_media_retention(self) -> None:
214212
# Remote media should be unaffected.
215213
self._assert_if_mxc_uris_purged(
216214
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),
215+
self.local_not_recently_accessed_media,
216+
self.local_never_accessed_media,
222217
],
223218
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-
),
219+
self.local_recently_accessed_media,
220+
self.local_not_recently_accessed_quarantined_media,
221+
self.local_not_recently_accessed_protected_media,
222+
self.remote_recently_accessed_media,
223+
self.remote_not_recently_accessed_media,
224+
self.remote_not_recently_accessed_quarantined_media,
239225
],
240226
)
241227

@@ -261,49 +247,35 @@ def test_remote_media_cache_retention(self) -> None:
261247
# Remote media accessed <30 days ago should still exist.
262248
self._assert_if_mxc_uris_purged(
263249
purged=[
264-
(self.remote_server_name, self.remote_not_recently_accessed_media),
250+
self.remote_not_recently_accessed_media,
265251
],
266252
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),
253+
self.remote_recently_accessed_media,
254+
self.local_recently_accessed_media,
255+
self.local_not_recently_accessed_media,
256+
self.local_not_recently_accessed_quarantined_media,
257+
self.local_not_recently_accessed_protected_media,
258+
self.remote_not_recently_accessed_quarantined_media,
259+
self.local_never_accessed_media,
286260
],
287261
)
288262

289263
def _assert_if_mxc_uris_purged(
290-
self, purged: Iterable[Tuple[str, str]], not_purged: Iterable[Tuple[str, str]]
264+
self, purged: Iterable[MXCUri], not_purged: Iterable[MXCUri]
291265
) -> None:
292-
def _assert_mxc_uri_purge_state(
293-
server_name: str, media_id: str, expect_purged: bool
294-
) -> None:
266+
def _assert_mxc_uri_purge_state(mxc_uri: MXCUri, expect_purged: bool) -> None:
295267
"""Given an MXC URI, assert whether it has been purged or not."""
296-
if server_name == self.hs.config.server.server_name:
268+
if mxc_uri.server_name == self.hs.config.server.server_name:
297269
found_media_dict = self.get_success(
298-
self.store.get_local_media(media_id)
270+
self.store.get_local_media(mxc_uri.media_id)
299271
)
300272
else:
301273
found_media_dict = self.get_success(
302-
self.store.get_cached_remote_media(server_name, media_id)
274+
self.store.get_cached_remote_media(
275+
mxc_uri.server_name, mxc_uri.media_id
276+
)
303277
)
304278

305-
mxc_uri = f"mxc://{server_name}/{media_id}"
306-
307279
if expect_purged:
308280
self.assertIsNone(
309281
found_media_dict, msg=f"{mxc_uri} unexpectedly not purged"
@@ -315,7 +287,7 @@ def _assert_mxc_uri_purge_state(
315287
)
316288

317289
# 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)
290+
for mxc_uri in purged:
291+
_assert_mxc_uri_purge_state(mxc_uri, expect_purged=True)
292+
for mxc_uri in not_purged:
293+
_assert_mxc_uri_purge_state(mxc_uri, expect_purged=False)

0 commit comments

Comments
 (0)