@@ -1618,6 +1618,63 @@ def test_media_config(self) -> None:
1618
1618
)
1619
1619
1620
1620
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
+
1621
1678
class RemoteDownloadLimiterTestCase (unittest .HomeserverTestCase ):
1622
1679
servlets = [
1623
1680
media .register_servlets ,
0 commit comments