summary refs log tree commit diff
path: root/tests/rest
diff options
context:
space:
mode:
authorJoseph Weston <joseph@weston.cloud>2019-03-01 04:05:47 +0100
committerJoseph Weston <joseph@weston.cloud>2019-03-01 09:56:58 +0100
commit1e8388b311c54d754d6afbe639ed2825c1c1f285 (patch)
tree3e8ebe1bb68af9ede95c7c6e3376f9e3a989c273 /tests/rest
parentImport 'admin' module rather than 'register_servlets' directly (diff)
downloadsynapse-1e8388b311c54d754d6afbe639ed2825c1c1f285.tar.xz
Add 'server_version' endpoint to admin API
This is required because the 'Server' HTTP header is not always
passed through proxies.
Diffstat (limited to 'tests/rest')
-rw-r--r--tests/rest/client/v1/test_admin.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/rest/client/v1/test_admin.py b/tests/rest/client/v1/test_admin.py
index c926836206..ea03b7e523 100644
--- a/tests/rest/client/v1/test_admin.py
+++ b/tests/rest/client/v1/test_admin.py
@@ -20,11 +20,45 @@ import json
 from mock import Mock
 
 from synapse.api.constants import UserTypes
-from synapse.rest.client.v1 import admin
+from synapse.rest.client.v1 import admin, login
 
 from tests import unittest
 
 
+class VersionTestCase(unittest.HomeserverTestCase):
+
+    servlets = [
+        admin.register_servlets,
+        login.register_servlets,
+    ]
+
+    url = '/_matrix/client/r0/admin/server_version'
+
+    def test_version_string(self):
+        self.register_user("admin", "pass", admin=True)
+        self.admin_token = self.login("admin", "pass")
+
+        request, channel = self.make_request("GET", self.url,
+                                             access_token=self.admin_token)
+        self.render(request)
+
+        self.assertEqual(200, int(channel.result["code"]),
+                         msg=channel.result["body"])
+        self.assertEqual({'server_version', 'python_version'},
+                         set(channel.json_body.keys()))
+
+    def test_inaccessible_to_non_admins(self):
+        self.register_user("unprivileged-user", "pass", admin=False)
+        user_token = self.login("unprivileged-user", "pass")
+
+        request, channel = self.make_request("GET", self.url,
+                                             access_token=user_token)
+        self.render(request)
+
+        self.assertEqual(403, int(channel.result['code']),
+                         msg=channel.result['body'])
+
+
 class UserRegisterTestCase(unittest.HomeserverTestCase):
 
     servlets = [admin.register_servlets]