xref: /unit/test/test_python_targets.py (revision 2592:e079c44a8340)
12491Szelenkov@nginx.comfrom unit.applications.lang.python import ApplicationPython
21873So.canty@f5.comfrom unit.option import option
31873So.canty@f5.com
42488Szelenkov@nginx.comprerequisites = {'modules': {'python': 'all'}}
52488Szelenkov@nginx.com
62491Szelenkov@nginx.comclient = ApplicationPython()
71873So.canty@f5.com
82491Szelenkov@nginx.com
92491Szelenkov@nginx.comdef test_python_targets():
102491Szelenkov@nginx.com    python_dir = f'{option.test_dir}/python'
112330Szelenkov@nginx.com
122491Szelenkov@nginx.com    assert 'success' in client.conf(
132491Szelenkov@nginx.com        {
14*2592Szelenkov@nginx.com            "listeners": {"*:8080": {"pass": "routes"}},
152491Szelenkov@nginx.com            "routes": [
162491Szelenkov@nginx.com                {
172491Szelenkov@nginx.com                    "match": {"uri": "/1"},
182491Szelenkov@nginx.com                    "action": {"pass": "applications/targets/1"},
192491Szelenkov@nginx.com                },
202491Szelenkov@nginx.com                {
212491Szelenkov@nginx.com                    "match": {"uri": "/2"},
222491Szelenkov@nginx.com                    "action": {"pass": "applications/targets/2"},
232491Szelenkov@nginx.com                },
242491Szelenkov@nginx.com            ],
252491Szelenkov@nginx.com            "applications": {
262491Szelenkov@nginx.com                "targets": {
272491Szelenkov@nginx.com                    "type": client.get_application_type(),
282491Szelenkov@nginx.com                    "working_directory": f'{python_dir}/targets/',
292491Szelenkov@nginx.com                    "path": f'{python_dir}/targets/',
301873So.canty@f5.com                    "targets": {
312491Szelenkov@nginx.com                        "1": {
322491Szelenkov@nginx.com                            "module": "wsgi",
332491Szelenkov@nginx.com                            "callable": "wsgi_target_a",
342491Szelenkov@nginx.com                        },
352491Szelenkov@nginx.com                        "2": {
362491Szelenkov@nginx.com                            "module": "wsgi",
372491Szelenkov@nginx.com                            "callable": "wsgi_target_b",
381873So.canty@f5.com                        },
392491Szelenkov@nginx.com                    },
402491Szelenkov@nginx.com                }
412491Szelenkov@nginx.com            },
422491Szelenkov@nginx.com        }
432491Szelenkov@nginx.com    )
441873So.canty@f5.com
452491Szelenkov@nginx.com    resp = client.get(url='/1')
462491Szelenkov@nginx.com    assert resp['status'] == 200
472491Szelenkov@nginx.com    assert resp['body'] == '1'
481873So.canty@f5.com
492491Szelenkov@nginx.com    resp = client.get(url='/2')
502491Szelenkov@nginx.com    assert resp['status'] == 200
512491Szelenkov@nginx.com    assert resp['body'] == '2'
522273Sjeff.iadarola@gmail.com
532330Szelenkov@nginx.com
542491Szelenkov@nginx.comdef test_python_targets_prefix():
552491Szelenkov@nginx.com    python_dir = f'{option.test_dir}/python'
562491Szelenkov@nginx.com
572491Szelenkov@nginx.com    assert 'success' in client.conf(
582491Szelenkov@nginx.com        {
59*2592Szelenkov@nginx.com            "listeners": {"*:8080": {"pass": "routes"}},
602491Szelenkov@nginx.com            "routes": [
612491Szelenkov@nginx.com                {
622491Szelenkov@nginx.com                    "match": {"uri": ["/app*"]},
632491Szelenkov@nginx.com                    "action": {"pass": "applications/targets/app"},
642491Szelenkov@nginx.com                },
652491Szelenkov@nginx.com                {
662491Szelenkov@nginx.com                    "match": {"uri": "*"},
672491Szelenkov@nginx.com                    "action": {"pass": "applications/targets/catchall"},
682491Szelenkov@nginx.com                },
692491Szelenkov@nginx.com            ],
702491Szelenkov@nginx.com            "applications": {
712491Szelenkov@nginx.com                "targets": {
722491Szelenkov@nginx.com                    "type": "python",
732491Szelenkov@nginx.com                    "working_directory": f'{python_dir}/targets/',
742491Szelenkov@nginx.com                    "path": f'{python_dir}/targets/',
752491Szelenkov@nginx.com                    "protocol": "wsgi",
762273Sjeff.iadarola@gmail.com                    "targets": {
772491Szelenkov@nginx.com                        "app": {
782491Szelenkov@nginx.com                            "module": "wsgi",
792491Szelenkov@nginx.com                            "callable": "wsgi_target_prefix",
802491Szelenkov@nginx.com                            "prefix": "/app/",
812491Szelenkov@nginx.com                        },
822491Szelenkov@nginx.com                        "catchall": {
832491Szelenkov@nginx.com                            "module": "wsgi",
842491Szelenkov@nginx.com                            "callable": "wsgi_target_prefix",
852491Szelenkov@nginx.com                            "prefix": "/api",
862273Sjeff.iadarola@gmail.com                        },
872491Szelenkov@nginx.com                    },
882491Szelenkov@nginx.com                }
892491Szelenkov@nginx.com            },
902491Szelenkov@nginx.com        }
912491Szelenkov@nginx.com    )
922273Sjeff.iadarola@gmail.com
932491Szelenkov@nginx.com    def check_prefix(url, body):
942491Szelenkov@nginx.com        resp = client.get(url=url)
952491Szelenkov@nginx.com        assert resp['status'] == 200
962491Szelenkov@nginx.com        assert resp['body'] == body
972273Sjeff.iadarola@gmail.com
982491Szelenkov@nginx.com    check_prefix('/app', '/app ')
992491Szelenkov@nginx.com    check_prefix('/app/', '/app /')
1002491Szelenkov@nginx.com    check_prefix('/app/rest/user/', '/app /rest/user/')
1012491Szelenkov@nginx.com    check_prefix('/catchall', 'No Script Name /catchall')
1022491Szelenkov@nginx.com    check_prefix('/api', '/api ')
1032491Szelenkov@nginx.com    check_prefix('/api/', '/api /')
1042491Szelenkov@nginx.com    check_prefix('/apis', 'No Script Name /apis')
1052491Szelenkov@nginx.com    check_prefix('/api/users/', '/api /users/')
106