Browse Source

tests: parameterize test

Nicolas Duchon 6 tháng trước cách đây
mục cha
commit
8447a36046
1 tập tin đã thay đổi với 25 bổ sung31 xóa
  1. 25 31
      test/test_ssl/test_redirect.py

+ 25 - 31
test/test_ssl/test_redirect.py

@@ -1,34 +1,28 @@
 import pytest
 
-# These tests are to test that GET is 301 and other methods all use 308
-# Permanent Redirects
-# https://github.com/nginx-proxy/nginx-proxy/pull/1737
-def test_web1_GET_301(docker_compose, nginxproxy):
-    r = nginxproxy.get('http://nginx-proxy.tld', allow_redirects=False)
-    assert r.status_code == 301
-    assert r.headers['Location'] == 'https://nginx-proxy.tld/'
 
-def test_web1_POST_308(docker_compose, nginxproxy):
-    r = nginxproxy.post('http://nginx-proxy.tld', allow_redirects=False)
-    assert r.status_code == 308
-    assert r.headers['Location'] == 'https://nginx-proxy.tld/'
-
-def test_web1_PUT_308(docker_compose, nginxproxy):
-    r = nginxproxy.put('http://nginx-proxy.tld', allow_redirects=False)
-    assert r.status_code == 308
-    assert r.headers['Location'] == 'https://nginx-proxy.tld/'
-
-def test_web1_HEAD_308(docker_compose, nginxproxy):
-    r = nginxproxy.head('http://nginx-proxy.tld', allow_redirects=False)
-    assert r.status_code == 308
-    assert r.headers['Location'] == 'https://nginx-proxy.tld/'
-
-def test_web1_DELETE_308(docker_compose, nginxproxy):
-    r = nginxproxy.delete('http://nginx-proxy.tld', allow_redirects=False)
-    assert r.status_code == 308
-    assert r.headers['Location'] == 'https://nginx-proxy.tld/'
-
-def test_web1_OPTIONS_308(docker_compose, nginxproxy):
-    r = nginxproxy.options('http://nginx-proxy.tld', allow_redirects=False)
-    assert r.status_code == 308
-    assert r.headers['Location'] == 'https://nginx-proxy.tld/'
+@pytest.mark.parametrize("http_method,expected_code", [
+    ("GET", 301),
+    ("HEAD", 308),
+    ("POST", 308),
+    ("PUT", 308),
+    ("PATCH", 308),
+    ("DELETE", 308),
+    ("OPTIONS", 308),
+    ("CONNECT", 405),
+    ("TRACE", 405),
+])
+def test_default_redirect_by_method(
+    docker_compose,
+    nginxproxy,
+    http_method: str,
+    expected_code: int,
+):
+    r = nginxproxy.request(
+        method=http_method,
+        url='http://nginx-proxy.tld',
+        allow_redirects=False,
+    )
+    assert r.status_code == expected_code
+    if expected_code in { 301, 302, 307, 308 }:
+        assert r.headers['Location'] == 'https://nginx-proxy.tld/'