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