]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Test coverage for HTTPVersionConfig
authorTom Christie <tom@tomchristie.com>
Tue, 20 Aug 2019 11:33:28 +0000 (12:33 +0100)
committerTom Christie <tom@tomchristie.com>
Tue, 20 Aug 2019 11:33:28 +0000 (12:33 +0100)
httpx/config.py
tests/test_config.py

index 3804effc09bb6fed7a0f2b3f5fef8a69e1e98100..73a5eb34392f491775586be9b75369c3de2c7072 100644 (file)
@@ -236,15 +236,18 @@ class HTTPVersionConfig:
             http_versions = ['HTTP/1.1', 'HTTP/2']
 
         if isinstance(http_versions, str):
-            self.http_versions = set([http_versions])
+            self.http_versions = set([http_versions.upper()])
         elif isinstance(http_versions, HTTPVersionConfig):
             self.http_versions = http_versions.http_versions
         else:
-            self.http_versions = set(sorted(http_versions))
+            self.http_versions = set(sorted([version.upper() for version in http_versions]))
 
         for version in self.http_versions:
             if version not in ('HTTP/1.1', 'HTTP/2'):
-                raise ValueError(f"Unsupported protocol value {protocol!r}")
+                raise ValueError(f"Unsupported HTTP version {version!r}.")
+
+        if not self.http_versions:
+            raise ValueError(f"HTTP versions cannot be an empty list.")
 
     @property
     def alpn_strings(self) -> typing.List[str]:
@@ -256,7 +259,7 @@ class HTTPVersionConfig:
 
     def __repr__(self) -> str:
         class_name = self.__class__.__name__
-        value = list(self.http_versions)
+        value = sorted(list(self.http_versions))
         return f"{class_name}({value!r})"
 
 
index 20befa7c7ba4e682cedbcfdb200b9ce231bcf6a1..6a862fd16af701da8091b31d238b6bee9299fd58 100644 (file)
@@ -90,6 +90,36 @@ def test_ssl_repr():
     assert repr(ssl) == "SSLConfig(cert=None, verify=False)"
 
 
+def test_http_versions_repr():
+    http_versions = httpx.HTTPVersionConfig()
+    assert repr(http_versions) == "HTTPVersionConfig(['HTTP/1.1', 'HTTP/2'])"
+
+
+def test_http_versions_from_string():
+    http_versions = httpx.HTTPVersionConfig("HTTP/1.1")
+    assert repr(http_versions) == "HTTPVersionConfig(['HTTP/1.1'])"
+
+
+def test_http_versions_from_list():
+    http_versions = httpx.HTTPVersionConfig(["http/1.1"])
+    assert repr(http_versions) == "HTTPVersionConfig(['HTTP/1.1'])"
+
+
+def test_http_versions_from_config():
+    http_versions = httpx.HTTPVersionConfig(httpx.HTTPVersionConfig("HTTP/1.1"))
+    assert repr(http_versions) == "HTTPVersionConfig(['HTTP/1.1'])"
+
+
+def test_invalid_http_version():
+    with pytest.raises(ValueError):
+        httpx.HTTPVersionConfig("HTTP/9")
+
+
+def test_empty_http_version():
+    with pytest.raises(ValueError):
+        httpx.HTTPVersionConfig([])
+
+
 def test_timeout_repr():
     timeout = httpx.TimeoutConfig(timeout=5.0)
     assert repr(timeout) == "TimeoutConfig(timeout=5.0)"