1515from twisted .test .proto_helpers import MemoryReactor
1616
1717from synapse .rest import admin
18- from synapse .rest .client import login , login_token_request
18+ from synapse .rest .client import login , login_token_request , versions
1919from synapse .server import HomeServer
2020from synapse .util import Clock
2121
@@ -30,6 +30,7 @@ class LoginTokenRequestServletTestCase(unittest.HomeserverTestCase):
3030 login .register_servlets ,
3131 admin .register_servlets ,
3232 login_token_request .register_servlets ,
33+ versions .register_servlets , # TODO: remove once unstable revision 0 support is removed
3334 ]
3435
3536 def make_homeserver (self , reactor : MemoryReactor , clock : Clock ) -> HomeServer :
@@ -131,3 +132,28 @@ def test_expires_in(self) -> None:
131132 channel = self .make_request ("POST" , GET_TOKEN_ENDPOINT , {}, access_token = token )
132133 self .assertEqual (channel .code , 200 )
133134 self .assertEqual (channel .json_body ["expires_in_ms" ], 15000 )
135+
136+ @override_config (
137+ {
138+ "login_via_existing_session" : {
139+ "enabled" : True ,
140+ "require_ui_auth" : False ,
141+ "token_timeout" : "15s" ,
142+ }
143+ }
144+ )
145+ def test_unstable_support (self ) -> None :
146+ # TODO: remove support for unstable MSC3882 is no longer needed
147+
148+ # check feature is advertised in versions response:
149+ channel = self .make_request ("GET" , "/_matrix/client/versions" , {}, access_token = None )
150+ self .assertEqual (channel .code , 200 )
151+ self .assertEqual (channel .json_body ["unstable_features" ]["org.matrix.msc3882" ], True )
152+
153+ self .register_user (self .user , self .password )
154+ token = self .login (self .user , self .password )
155+
156+ # check feature is available via the unstable endpoint and returns an expires_in value in seconds
157+ channel = self .make_request ("POST" , "/_matrix/client/unstable/org.matrix.msc3882/login/token" , {}, access_token = token )
158+ self .assertEqual (channel .code , 200 )
159+ self .assertEqual (channel .json_body ["expires_in" ], 15 )
0 commit comments