From 8447a36046f6b02ee695bb0a7a3814a040fc0796 Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Sun, 8 Dec 2024 19:41:31 +0100 Subject: [PATCH] tests: parameterize test --- test/test_ssl/test_redirect.py | 56 +++++++++++++++------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/test/test_ssl/test_redirect.py b/test/test_ssl/test_redirect.py index e42c792..0e32be2 100644 --- a/test/test_ssl/test_redirect.py +++ b/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/'