Skip to content

Commit 4c2257b

Browse files
committed
Test cases
1 parent cb8b8f9 commit 4c2257b

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

tests/media/test_media_storage.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,3 +1362,42 @@ async def _send_request(*args: Any, **kwargs: Any) -> IResponse:
13621362
store_media.sha256,
13631363
SMALL_PNG_SHA256,
13641364
)
1365+
1366+
1367+
class MediaRepoSizeModuleCallbackTestCase(unittest.HomeserverTestCase):
1368+
servlets = [
1369+
login.register_servlets,
1370+
admin.register_servlets,
1371+
]
1372+
1373+
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
1374+
self.user = self.register_user("user", "pass")
1375+
self.tok = self.login("user", "pass")
1376+
self.mock_result = True # Allow all uploads by default
1377+
1378+
hs.get_module_api().register_media_repository_callbacks(
1379+
is_user_allowed_to_upload_media_of_size=self.is_user_allowed_to_upload_media_of_size,
1380+
)
1381+
1382+
def create_resource_dict(self) -> Dict[str, Resource]:
1383+
resources = super().create_resource_dict()
1384+
resources["/_matrix/media"] = self.hs.get_media_repository_resource()
1385+
return resources
1386+
1387+
async def is_user_allowed_to_upload_media_of_size(
1388+
self, user_id: str, size: int
1389+
) -> bool:
1390+
self.last_user_id = user_id
1391+
self.last_size = size
1392+
return self.mock_result
1393+
1394+
def test_upload_allowed(self) -> None:
1395+
self.helper.upload_media(SMALL_PNG, tok=self.tok, expect_code=200)
1396+
assert self.last_user_id == self.user
1397+
assert self.last_size == len(SMALL_PNG)
1398+
1399+
def test_upload_not_allowed(self) -> None:
1400+
self.mock_result = False
1401+
self.helper.upload_media(SMALL_PNG, tok=self.tok, expect_code=413)
1402+
assert self.last_user_id == self.user
1403+
assert self.last_size == len(SMALL_PNG)

tests/rest/client/test_media.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,63 @@ def test_media_config(self) -> None:
16181618
)
16191619

16201620

1621+
class MediaConfigModuleCallbackTestCase(unittest.HomeserverTestCase):
1622+
servlets = [
1623+
media.register_servlets,
1624+
admin.register_servlets,
1625+
login.register_servlets,
1626+
]
1627+
1628+
def make_homeserver(
1629+
self, reactor: ThreadedMemoryReactorClock, clock: Clock
1630+
) -> HomeServer:
1631+
config = self.default_config()
1632+
1633+
self.storage_path = self.mktemp()
1634+
self.media_store_path = self.mktemp()
1635+
os.mkdir(self.storage_path)
1636+
os.mkdir(self.media_store_path)
1637+
config["media_store_path"] = self.media_store_path
1638+
1639+
provider_config = {
1640+
"module": "synapse.media.storage_provider.FileStorageProviderBackend",
1641+
"store_local": True,
1642+
"store_synchronous": False,
1643+
"store_remote": True,
1644+
"config": {"directory": self.storage_path},
1645+
}
1646+
1647+
config["media_storage_providers"] = [provider_config]
1648+
1649+
return self.setup_test_homeserver(config=config)
1650+
1651+
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
1652+
self.user = self.register_user("user", "password")
1653+
self.tok = self.login("user", "password")
1654+
1655+
hs.get_module_api().register_media_repository_callbacks(
1656+
get_media_config_for_user=self.get_media_config_for_user,
1657+
)
1658+
1659+
async def get_media_config_for_user(
1660+
self,
1661+
user_id: str,
1662+
) -> Optional[JsonDict]:
1663+
# We echo back the user_id and set a custom upload size.
1664+
return {"m.upload.size": 1024, "user_id": user_id}
1665+
1666+
def test_media_config(self) -> None:
1667+
channel = self.make_request(
1668+
"GET",
1669+
"/_matrix/client/v1/media/config",
1670+
shorthand=False,
1671+
access_token=self.tok,
1672+
)
1673+
self.assertEqual(channel.code, 200)
1674+
self.assertEqual(channel.json_body["m.upload.size"], 1024)
1675+
self.assertEqual(channel.json_body["user_id"], self.user)
1676+
1677+
16211678
class RemoteDownloadLimiterTestCase(unittest.HomeserverTestCase):
16221679
servlets = [
16231680
media.register_servlets,

0 commit comments

Comments
 (0)