summary refs log tree commit diff
path: root/tests/http/test_endpoint.py
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2018-07-04 18:15:03 +0100
committerRichard van der Hoff <richard@matrix.org>2018-07-04 18:59:51 +0100
commit546bc9e28b3d7758c732df8e120639d58d455164 (patch)
tree82be7e3ca557fc0997438f0fec1d644862f3dd07 /tests/http/test_endpoint.py
parentMerge pull request #3473 from matrix-org/erikj/thread_cache (diff)
downloadsynapse-546bc9e28b3d7758c732df8e120639d58d455164.tar.xz
More server_name validation
We need to do a bit more validation when we get a server name, but don't want
to be re-doing it all over the shop, so factor out a separate
parse_and_validate_server_name, and do the extra validation.

Also, use it to verify the server name in the config file.
Diffstat (limited to 'tests/http/test_endpoint.py')
-rw-r--r--tests/http/test_endpoint.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/tests/http/test_endpoint.py b/tests/http/test_endpoint.py
index cd74825c85..b8a48d20a4 100644
--- a/tests/http/test_endpoint.py
+++ b/tests/http/test_endpoint.py
@@ -12,7 +12,10 @@
 # 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.endpoint import parse_server_name
+from synapse.http.endpoint import (
+    parse_server_name,
+    parse_and_validate_server_name,
+)
 from tests import unittest
 
 
@@ -30,17 +33,23 @@ class ServerNameTestCase(unittest.TestCase):
         for i, o in test_data.items():
             self.assertEqual(parse_server_name(i), o)
 
-    def test_parse_bad_server_names(self):
+    def test_validate_bad_server_names(self):
         test_data = [
             "",  # empty
             "localhost:http",  # non-numeric port
             "1234]",  # smells like ipv6 literal but isn't
+            "[1234",
+            "underscore_.com",
+            "percent%65.com",
+            "1234:5678:80",   # too many colons
         ]
         for i in test_data:
             try:
-                parse_server_name(i)
+                parse_and_validate_server_name(i)
                 self.fail(
-                    "Expected parse_server_name(\"%s\") to throw" % i,
+                    "Expected parse_and_validate_server_name('%s') to throw" % (
+                        i,
+                    ),
                 )
             except ValueError:
                 pass