diff options
author | Andrei Zeliankou <zelenkov@nginx.com> | 2023-06-14 18:20:09 +0100 |
---|---|---|
committer | Andrei Zeliankou <zelenkov@nginx.com> | 2023-06-14 18:20:09 +0100 |
commit | c183bd8749a19477390f8cb77efe5f6d223f0905 (patch) | |
tree | 4e821e9cb07be9a86bf2d442acb3ea6740ba5a99 /test/test_rewrite.py | |
parent | c6d05191a069ac150cc8eb2bece75cf79c0a465a (diff) | |
download | unit-c183bd8749a19477390f8cb77efe5f6d223f0905.tar.gz unit-c183bd8749a19477390f8cb77efe5f6d223f0905.tar.bz2 |
Tests: get rid of classes in test files.
Class usage came from the unittest framework and it was always redundant
after migration to the pytest. This commit removes classes from files
containing tests to make them more readable and understandable.
Diffstat (limited to 'test/test_rewrite.py')
-rw-r--r-- | test/test_rewrite.py | 344 |
1 files changed, 177 insertions, 167 deletions
diff --git a/test/test_rewrite.py b/test/test_rewrite.py index c1844165..8d81ec49 100644 --- a/test/test_rewrite.py +++ b/test/test_rewrite.py @@ -1,213 +1,223 @@ import os import pytest -from unit.applications.proto import TestApplicationProto +from unit.applications.proto import ApplicationProto +client = ApplicationProto() -class TestRewrite(TestApplicationProto): - @pytest.fixture(autouse=True) - def setup_method_fixture(self): - assert 'success' in self.conf( - { - "listeners": {"*:7080": {"pass": "routes"}}, - "routes": [ - { - "match": {"uri": "/"}, - "action": {"rewrite": "/new", "pass": "routes"}, - }, - {"match": {"uri": "/new"}, "action": {"return": 200}}, - ], - "applications": {}, - "settings": {"http": {"log_route": True}}, - }, - ), 'set initial configuration' - def set_rewrite(self, rewrite, uri): - assert 'success' in self.conf( - [ +@pytest.fixture(autouse=True) +def setup_method_fixture(): + assert 'success' in client.conf( + { + "listeners": {"*:7080": {"pass": "routes"}}, + "routes": [ { "match": {"uri": "/"}, - "action": {"rewrite": rewrite, "pass": "routes"}, + "action": {"rewrite": "/new", "pass": "routes"}, }, - {"match": {"uri": uri}, "action": {"return": 200}}, + {"match": {"uri": "/new"}, "action": {"return": 200}}, ], - 'routes', - ) + "applications": {}, + "settings": {"http": {"log_route": True}}, + }, + ), 'set initial configuration' - def test_rewrite(self, findall, wait_for_record): - assert self.get()['status'] == 200 - assert wait_for_record(rf'\[notice\].*"routes/1" selected') is not None - assert len(findall(rf'\[notice\].*URI rewritten to "/new"')) == 1 - assert len(findall(rf'\[notice\].*URI rewritten')) == 1 - self.set_rewrite("", "") - assert self.get()['status'] == 200 +def set_rewrite(rewrite, uri): + assert 'success' in client.conf( + [ + { + "match": {"uri": "/"}, + "action": {"rewrite": rewrite, "pass": "routes"}, + }, + {"match": {"uri": uri}, "action": {"return": 200}}, + ], + 'routes', + ) - def test_rewrite_variable(self): - self.set_rewrite("/$host", "/localhost") - assert self.get()['status'] == 200 - self.set_rewrite("${uri}a", "/a") - assert self.get()['status'] == 200 +def test_rewrite(findall, wait_for_record): + assert client.get()['status'] == 200 + assert wait_for_record(rf'\[notice\].*"routes/1" selected') is not None + assert len(findall(rf'\[notice\].*URI rewritten to "/new"')) == 1 + assert len(findall(rf'\[notice\].*URI rewritten')) == 1 - def test_rewrite_encoded(self): - assert 'success' in self.conf( - [ - { - "match": {"uri": "/f"}, - "action": {"rewrite": "${request_uri}oo", "pass": "routes"}, - }, - {"match": {"uri": "/foo"}, "action": {"return": 200}}, - ], - 'routes', - ) - assert self.get(url='/%66')['status'] == 200 + set_rewrite("", "") + assert client.get()['status'] == 200 - assert 'success' in self.conf( - [ - { - "match": {"uri": "/f"}, - "action": { - "rewrite": "${request_uri}o%6F", - "pass": "routes", - }, - }, - {"match": {"uri": "/foo"}, "action": {"return": 200}}, - ], - 'routes', - ) - assert self.get(url='/%66')['status'] == 200 - def test_rewrite_arguments(self): - assert 'success' in self.conf( - [ - { - "match": {"uri": "/foo", "arguments": {"arg": "val"}}, - "action": {"rewrite": "/new?some", "pass": "routes"}, - }, - { - "match": {"uri": "/new", "arguments": {"arg": "val"}}, - "action": {"return": 200}, - }, - ], - 'routes', - ) - assert self.get(url='/foo?arg=val')['status'] == 200 +def test_rewrite_variable(): + set_rewrite("/$host", "/localhost") + assert client.get()['status'] == 200 - def test_rewrite_njs(self, require): - require({'modules': {'njs': 'any'}}) + set_rewrite("${uri}a", "/a") + assert client.get()['status'] == 200 - self.set_rewrite("`/${host}`", "/localhost") - assert self.get()['status'] == 200 - def test_rewrite_location(self): - def check_location(rewrite, expect): - assert 'success' in self.conf( - { - "listeners": {"*:7080": {"pass": "routes"}}, - "routes": [ - { - "action": { - "return": 301, - "location": "$uri", - "rewrite": rewrite, - } - } - ], - } - ) - assert self.get()['headers']['Location'] == expect +def test_rewrite_encoded(): + assert 'success' in client.conf( + [ + { + "match": {"uri": "/f"}, + "action": {"rewrite": "${request_uri}oo", "pass": "routes"}, + }, + {"match": {"uri": "/foo"}, "action": {"return": 200}}, + ], + 'routes', + ) + assert client.get(url='/%66')['status'] == 200 + + assert 'success' in client.conf( + [ + { + "match": {"uri": "/f"}, + "action": { + "rewrite": "${request_uri}o%6F", + "pass": "routes", + }, + }, + {"match": {"uri": "/foo"}, "action": {"return": 200}}, + ], + 'routes', + ) + assert client.get(url='/%66')['status'] == 200 - check_location('/new', '/new') - check_location('${request_uri}new', '/new') - def test_rewrite_share(self, temp_dir): - os.makedirs(f'{temp_dir}/dir') - os.makedirs(f'{temp_dir}/foo') +def test_rewrite_arguments(): + assert 'success' in client.conf( + [ + { + "match": {"uri": "/foo", "arguments": {"arg": "val"}}, + "action": {"rewrite": "/new?some", "pass": "routes"}, + }, + { + "match": {"uri": "/new", "arguments": {"arg": "val"}}, + "action": {"return": 200}, + }, + ], + 'routes', + ) + assert client.get(url='/foo?arg=val')['status'] == 200 - with open(f'{temp_dir}/foo/index.html', 'w') as fooindex: - fooindex.write('fooindex') - # same action block +def test_rewrite_njs(require): + require({'modules': {'njs': 'any'}}) - assert 'success' in self.conf( + set_rewrite("`/${host}`", "/localhost") + assert client.get()['status'] == 200 + + +def test_rewrite_location(): + def check_location(rewrite, expect): + assert 'success' in client.conf( { "listeners": {"*:7080": {"pass": "routes"}}, "routes": [ { "action": { - "rewrite": "${request_uri}dir", - "share": f'{temp_dir}$uri', + "return": 301, + "location": "$uri", + "rewrite": rewrite, } } ], } ) + assert client.get()['headers']['Location'] == expect - resp = self.get() - assert resp['status'] == 301, 'redirect status' - assert resp['headers']['Location'] == '/dir/', 'redirect Location' + check_location('/new', '/new') + check_location('${request_uri}new', '/new') - # request_uri - index_path = f'{temp_dir}${{request_uri}}/index.html' - assert 'success' in self.conf( - { - "listeners": {"*:7080": {"pass": "routes"}}, - "routes": [ - { - "match": {"uri": "/foo"}, - "action": { - "rewrite": "${request_uri}dir", - "pass": "routes", - }, - }, - {"action": {"share": index_path}}, - ], - } - ) +def test_rewrite_share(temp_dir): + os.makedirs(f'{temp_dir}/dir') + os.makedirs(f'{temp_dir}/foo') - assert self.get(url='/foo')['body'] == 'fooindex' + with open(f'{temp_dir}/foo/index.html', 'w') as fooindex: + fooindex.write('fooindex') - # different action block + # same action block - assert 'success' in self.conf( - { - "listeners": {"*:7080": {"pass": "routes"}}, - "routes": [ - { - "match": {"uri": "/foo"}, - "action": { - "rewrite": "${request_uri}dir", - "pass": "routes", - }, - }, - { - "action": { - "share": f'{temp_dir}/dir', - } + assert 'success' in client.conf( + { + "listeners": {"*:7080": {"pass": "routes"}}, + "routes": [ + { + "action": { + "rewrite": "${request_uri}dir", + "share": f'{temp_dir}$uri', + } + } + ], + } + ) + + resp = client.get() + assert resp['status'] == 301, 'redirect status' + assert resp['headers']['Location'] == '/dir/', 'redirect Location' + + # request_uri + + index_path = f'{temp_dir}${{request_uri}}/index.html' + assert 'success' in client.conf( + { + "listeners": {"*:7080": {"pass": "routes"}}, + "routes": [ + { + "match": {"uri": "/foo"}, + "action": { + "rewrite": "${request_uri}dir", + "pass": "routes", }, - ], - } - ) - resp = self.get(url='/foo') - assert resp['status'] == 301, 'redirect status 2' - assert resp['headers']['Location'] == '/foodir/', 'redirect Location 2' + }, + {"action": {"share": index_path}}, + ], + } + ) - def test_rewrite_invalid(self, skip_alert): - skip_alert(r'failed to apply new conf') + assert client.get(url='/foo')['body'] == 'fooindex' - def check_rewrite(rewrite): - assert 'error' in self.conf( - [ - { - "match": {"uri": "/"}, - "action": {"rewrite": rewrite, "pass": "routes"}, + # different action block + + assert 'success' in client.conf( + { + "listeners": {"*:7080": {"pass": "routes"}}, + "routes": [ + { + "match": {"uri": "/foo"}, + "action": { + "rewrite": "${request_uri}dir", + "pass": "routes", }, - {"action": {"return": 200}}, - ], - 'routes', - ) + }, + { + "action": { + "share": f'{temp_dir}/dir', + } + }, + ], + } + ) + resp = client.get(url='/foo') + assert resp['status'] == 301, 'redirect status 2' + assert resp['headers']['Location'] == '/foodir/', 'redirect Location 2' + + +def test_rewrite_invalid(skip_alert): + skip_alert(r'failed to apply new conf') + + def check_rewrite(rewrite): + assert 'error' in client.conf( + [ + { + "match": {"uri": "/"}, + "action": {"rewrite": rewrite, "pass": "routes"}, + }, + {"action": {"return": 200}}, + ], + 'routes', + ) - check_rewrite("/$blah") - check_rewrite(["/"]) + check_rewrite("/$blah") + check_rewrite(["/"]) |