summaryrefslogtreecommitdiffhomepage
path: root/test/test_asgi_targets.py
diff options
context:
space:
mode:
authorKonstantin Pavlov <thresh@nginx.com>2023-08-31 09:41:46 -0700
committerKonstantin Pavlov <thresh@nginx.com>2023-08-31 09:41:46 -0700
commitc45c8919c7232eb20023484f6d1fc9f1f50395d8 (patch)
treecc12eb307c1611494948645e4b487fa06495c3d2 /test/test_asgi_targets.py
parent88c90e1c351ab8c5bd487a5cd4b735014b08e271 (diff)
parent9b22b6957bc87b3df002d0bc691fdae6a20abdac (diff)
downloadunit-c45c8919c7232eb20023484f6d1fc9f1f50395d8.tar.gz
unit-c45c8919c7232eb20023484f6d1fc9f1f50395d8.tar.bz2
Merged with the default branch.1.31.0-1
Diffstat (limited to 'test/test_asgi_targets.py')
-rw-r--r--test/test_asgi_targets.py240
1 files changed, 122 insertions, 118 deletions
diff --git a/test/test_asgi_targets.py b/test/test_asgi_targets.py
index 5afc7079..c3ec22f0 100644
--- a/test/test_asgi_targets.py
+++ b/test/test_asgi_targets.py
@@ -1,138 +1,142 @@
import pytest
from packaging import version
-from unit.applications.lang.python import TestApplicationPython
+from unit.applications.lang.python import ApplicationPython
from unit.option import option
+prerequisites = {
+ 'modules': {'python': lambda v: version.parse(v) >= version.parse('3.5')}
+}
-class TestASGITargets(TestApplicationPython):
- prerequisites = {
- 'modules': {
- 'python': lambda v: version.parse(v) >= version.parse('3.5')
- }
- }
- load_module = 'asgi'
+client = ApplicationPython(load_module='asgi')
- @pytest.fixture(autouse=True)
- def setup_method_fixture(self):
- path = f'{option.test_dir}/python/targets/'
- assert 'success' in self.conf(
- {
- "listeners": {"*:7080": {"pass": "routes"}},
- "routes": [
- {
- "match": {"uri": "/1"},
- "action": {"pass": "applications/targets/1"},
- },
- {
- "match": {"uri": "/2"},
- "action": {"pass": "applications/targets/2"},
- },
- ],
- "applications": {
+@pytest.fixture(autouse=True)
+def setup_method_fixture():
+ path = f'{option.test_dir}/python/targets/'
+
+ assert 'success' in client.conf(
+ {
+ "listeners": {"*:7080": {"pass": "routes"}},
+ "routes": [
+ {
+ "match": {"uri": "/1"},
+ "action": {"pass": "applications/targets/1"},
+ },
+ {
+ "match": {"uri": "/2"},
+ "action": {"pass": "applications/targets/2"},
+ },
+ ],
+ "applications": {
+ "targets": {
+ "type": client.get_application_type(),
+ "processes": {"spare": 0},
+ "working_directory": path,
+ "path": path,
+ "protocol": "asgi",
"targets": {
- "type": self.get_application_type(),
- "processes": {"spare": 0},
- "working_directory": path,
- "path": path,
- "protocol": "asgi",
- "targets": {
- "1": {
- "module": "asgi",
- "callable": "application_200",
- },
- "2": {
- "module": "asgi",
- "callable": "application_201",
- },
+ "1": {
+ "module": "asgi",
+ "callable": "application_200",
},
- }
- },
- }
- )
+ "2": {
+ "module": "asgi",
+ "callable": "application_201",
+ },
+ },
+ }
+ },
+ }
+ )
- def conf_targets(self, targets):
- assert 'success' in self.conf(targets, 'applications/targets/targets')
- def test_asgi_targets(self):
- assert self.get(url='/1')['status'] == 200
- assert self.get(url='/2')['status'] == 201
+def conf_targets(targets):
+ assert 'success' in client.conf(targets, 'applications/targets/targets')
- def test_asgi_targets_legacy(self):
- self.conf_targets(
- {
- "1": {"module": "asgi", "callable": "legacy_application_200"},
- "2": {"module": "asgi", "callable": "legacy_application_201"},
- }
- )
- assert self.get(url='/1')['status'] == 200
- assert self.get(url='/2')['status'] == 201
+def test_asgi_targets():
+ assert client.get(url='/1')['status'] == 200
+ assert client.get(url='/2')['status'] == 201
- def test_asgi_targets_mix(self):
- self.conf_targets(
- {
- "1": {"module": "asgi", "callable": "application_200"},
- "2": {"module": "asgi", "callable": "legacy_application_201"},
- }
- )
- assert self.get(url='/1')['status'] == 200
- assert self.get(url='/2')['status'] == 201
+def test_asgi_targets_legacy():
+ conf_targets(
+ {
+ "1": {"module": "asgi", "callable": "legacy_application_200"},
+ "2": {"module": "asgi", "callable": "legacy_application_201"},
+ }
+ )
- def test_asgi_targets_broken(self, skip_alert):
- skip_alert(r'Python failed to get "blah" from module')
+ assert client.get(url='/1')['status'] == 200
+ assert client.get(url='/2')['status'] == 201
- self.conf_targets(
- {
- "1": {"module": "asgi", "callable": "application_200"},
- "2": {"module": "asgi", "callable": "blah"},
- }
- )
- assert self.get(url='/1')['status'] != 200
+def test_asgi_targets_mix():
+ conf_targets(
+ {
+ "1": {"module": "asgi", "callable": "application_200"},
+ "2": {"module": "asgi", "callable": "legacy_application_201"},
+ }
+ )
+
+ assert client.get(url='/1')['status'] == 200
+ assert client.get(url='/2')['status'] == 201
+
- def test_asgi_targets_prefix(self):
- self.conf_targets(
+def test_asgi_targets_broken(skip_alert):
+ skip_alert(r'Python failed to get "blah" from module')
+
+ conf_targets(
+ {
+ "1": {"module": "asgi", "callable": "application_200"},
+ "2": {"module": "asgi", "callable": "blah"},
+ }
+ )
+
+ assert client.get(url='/1')['status'] != 200
+
+
+def test_asgi_targets_prefix():
+ conf_targets(
+ {
+ "1": {
+ "module": "asgi",
+ "callable": "application_prefix",
+ "prefix": "/1/",
+ },
+ "2": {
+ "module": "asgi",
+ "callable": "application_prefix",
+ "prefix": "/api",
+ },
+ }
+ )
+ client.conf(
+ [
{
- "1": {
- "module": "asgi",
- "callable": "application_prefix",
- "prefix": "/1/",
- },
- "2": {
- "module": "asgi",
- "callable": "application_prefix",
- "prefix": "/api",
- },
- }
- )
- self.conf(
- [
- {
- "match": {"uri": "/1*"},
- "action": {"pass": "applications/targets/1"},
- },
- {
- "match": {"uri": "*"},
- "action": {"pass": "applications/targets/2"},
- },
- ],
- "routes",
- )
-
- def check_prefix(url, prefix):
- resp = self.get(url=url)
- assert resp['status'] == 200
- assert resp['headers']['prefix'] == prefix
-
- check_prefix('/1', '/1')
- check_prefix('/11', 'NULL')
- check_prefix('/1/', '/1')
- check_prefix('/', 'NULL')
- check_prefix('/ap', 'NULL')
- check_prefix('/api', '/api')
- check_prefix('/api/', '/api')
- check_prefix('/api/test/', '/api')
- check_prefix('/apis', 'NULL')
- check_prefix('/apis/', 'NULL')
+ "match": {"uri": "/1*"},
+ "action": {"pass": "applications/targets/1"},
+ },
+ {
+ "match": {"uri": "*"},
+ "action": {"pass": "applications/targets/2"},
+ },
+ ],
+ "routes",
+ )
+
+ def check_prefix(url, prefix):
+ resp = client.get(url=url)
+ assert resp['status'] == 200
+ assert resp['headers']['prefix'] == prefix
+
+ check_prefix('/1', '/1')
+ check_prefix('/11', 'NULL')
+ check_prefix('/1/', '/1')
+ check_prefix('/', 'NULL')
+ check_prefix('/ap', 'NULL')
+ check_prefix('/api', '/api')
+ check_prefix('/api/', '/api')
+ check_prefix('/api/test/', '/api')
+ check_prefix('/apis', 'NULL')
+ check_prefix('/apis/', 'NULL')