Skip to content
Snippets Groups Projects
Commit 95f871fc authored by Neil Johnson's avatar Neil Johnson
Browse files

Support room version capabilities in CS API (MSC1804)

parent a3f0556b
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
# Copyright 2019 New Vector
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from synapse.http.servlet import RestServlet
from ._base import client_v2_patterns
class CapabilitiesRestServlet(RestServlet):
PATTERNS = client_v2_patterns("/capabilities$")
def __init__(self, hs):
"""
Args:
hs (synapse.server.HomeServer): server
"""
super(CapabilitiesRestServlet, self).__init__()
self.hs = hs
def on_GET(self, request):
return 200, {
"capabilities": {
"m.room_versions": {
"default": "1",
"available": {
"1": "stable",
"2": "stable",
"state-v2-test": "unstable",
"3": "unstable"
}
}
}
}
def register_servlets(hs, http_server):
CapabilitiesRestServlet(hs).register(http_server)
# -*- coding: utf-8 -*-
# Copyright 2019 New Vector Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from synapse.api.constants import DEFAULT_ROOM_VERSION, KNOWN_ROOM_VERSIONS
from synapse.rest.client.v2_alpha.capabilities import register_servlets
from tests import unittest
class CapabilitiesTestCase(unittest.HomeserverTestCase):
servlets = [register_servlets]
def make_homeserver(self, reactor, clock):
self.url = b"/_matrix/client/r0/capabilities"
hs = self.setup_test_homeserver()
return hs
def test_get_room_version_capabilities(self):
request, channel = self.make_request("GET", self.url)
self.render(request)
capabilities = channel.json_body['capabilities']
self.assertEqual(channel.code, 200)
for room_version in capabilities['m.room_versions']['available'].keys():
self.assertTrue(room_version in KNOWN_ROOM_VERSIONS, "" + room_version)
self.assertEqual(
DEFAULT_ROOM_VERSION, capabilities['m.room_versions']['default']
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment