xref: /unit/test/test_php_targets.py (revision 1596)
11479Szelenkov@nginx.comfrom unit.applications.lang.php import TestApplicationPHP
2*1596Szelenkov@nginx.comfrom conftest import option
3*1596Szelenkov@nginx.com
41479Szelenkov@nginx.com
51479Szelenkov@nginx.comclass TestPHPTargets(TestApplicationPHP):
61479Szelenkov@nginx.com    prerequisites = {'modules': {'php': 'any'}}
71479Szelenkov@nginx.com
81479Szelenkov@nginx.com    def test_php_application_targets(self):
9*1596Szelenkov@nginx.com        assert 'success' in self.conf(
10*1596Szelenkov@nginx.com            {
11*1596Szelenkov@nginx.com                "listeners": {"*:7080": {"pass": "routes"}},
12*1596Szelenkov@nginx.com                "routes": [
13*1596Szelenkov@nginx.com                    {
14*1596Szelenkov@nginx.com                        "match": {"uri": "/1"},
15*1596Szelenkov@nginx.com                        "action": {"pass": "applications/targets/1"},
16*1596Szelenkov@nginx.com                    },
17*1596Szelenkov@nginx.com                    {
18*1596Szelenkov@nginx.com                        "match": {"uri": "/2"},
19*1596Szelenkov@nginx.com                        "action": {"pass": "applications/targets/2"},
20*1596Szelenkov@nginx.com                    },
21*1596Szelenkov@nginx.com                    {"action": {"pass": "applications/targets/default"}},
22*1596Szelenkov@nginx.com                ],
23*1596Szelenkov@nginx.com                "applications": {
24*1596Szelenkov@nginx.com                    "targets": {
25*1596Szelenkov@nginx.com                        "type": "php",
26*1596Szelenkov@nginx.com                        "processes": {"spare": 0},
271479Szelenkov@nginx.com                        "targets": {
28*1596Szelenkov@nginx.com                            "1": {
29*1596Szelenkov@nginx.com                                "script": "1.php",
30*1596Szelenkov@nginx.com                                "root": option.test_dir + "/php/targets",
31*1596Szelenkov@nginx.com                            },
32*1596Szelenkov@nginx.com                            "2": {
33*1596Szelenkov@nginx.com                                "script": "2.php",
34*1596Szelenkov@nginx.com                                "root": option.test_dir + "/php/targets/2",
351479Szelenkov@nginx.com                            },
36*1596Szelenkov@nginx.com                            "default": {
37*1596Szelenkov@nginx.com                                "index": "index.php",
38*1596Szelenkov@nginx.com                                "root": option.test_dir + "/php/targets",
39*1596Szelenkov@nginx.com                            },
40*1596Szelenkov@nginx.com                        },
41*1596Szelenkov@nginx.com                    }
42*1596Szelenkov@nginx.com                },
43*1596Szelenkov@nginx.com            }
441479Szelenkov@nginx.com        )
451479Szelenkov@nginx.com
46*1596Szelenkov@nginx.com        assert self.get(url='/1')['body'] == '1'
47*1596Szelenkov@nginx.com        assert self.get(url='/2')['body'] == '2'
48*1596Szelenkov@nginx.com        assert self.get(url='/blah')['status'] == 503  # TODO 404
49*1596Szelenkov@nginx.com        assert self.get(url='/')['body'] == 'index'
501479Szelenkov@nginx.com
51*1596Szelenkov@nginx.com        assert 'success' in self.conf(
52*1596Szelenkov@nginx.com            "\"1.php\"", 'applications/targets/targets/default/index'
53*1596Szelenkov@nginx.com        ), 'change targets index'
54*1596Szelenkov@nginx.com        assert self.get(url='/')['body'] == '1'
551479Szelenkov@nginx.com
56*1596Szelenkov@nginx.com        assert 'success' in self.conf_delete(
57*1596Szelenkov@nginx.com            'applications/targets/targets/default/index'
58*1596Szelenkov@nginx.com        ), 'remove targets index'
59*1596Szelenkov@nginx.com        assert self.get(url='/')['body'] == 'index'
601479Szelenkov@nginx.com
611479Szelenkov@nginx.com    def test_php_application_targets_error(self):
62*1596Szelenkov@nginx.com        assert 'success' in self.conf(
63*1596Szelenkov@nginx.com            {
64*1596Szelenkov@nginx.com                "listeners": {
65*1596Szelenkov@nginx.com                    "*:7080": {"pass": "applications/targets/default"}
66*1596Szelenkov@nginx.com                },
67*1596Szelenkov@nginx.com                "applications": {
68*1596Szelenkov@nginx.com                    "targets": {
69*1596Szelenkov@nginx.com                        "type": "php",
70*1596Szelenkov@nginx.com                        "processes": {"spare": 0},
711479Szelenkov@nginx.com                        "targets": {
72*1596Szelenkov@nginx.com                            "default": {
73*1596Szelenkov@nginx.com                                "index": "index.php",
74*1596Szelenkov@nginx.com                                "root": option.test_dir + "/php/targets",
751479Szelenkov@nginx.com                            },
76*1596Szelenkov@nginx.com                        },
77*1596Szelenkov@nginx.com                    }
78*1596Szelenkov@nginx.com                },
79*1596Szelenkov@nginx.com            }
80*1596Szelenkov@nginx.com        ), 'initial configuration'
81*1596Szelenkov@nginx.com        assert self.get()['status'] == 200
821479Szelenkov@nginx.com
83*1596Szelenkov@nginx.com        assert 'error' in self.conf(
84*1596Szelenkov@nginx.com            {"pass": "applications/targets/blah"}, 'listeners/*:7080'
85*1596Szelenkov@nginx.com        ), 'invalid targets pass'
86*1596Szelenkov@nginx.com        assert 'error' in self.conf(
87*1596Szelenkov@nginx.com            '"' + option.test_dir + '/php/targets\"',
88*1596Szelenkov@nginx.com            'applications/targets/root',
89*1596Szelenkov@nginx.com        ), 'invalid root'
90*1596Szelenkov@nginx.com        assert 'error' in self.conf(
91*1596Szelenkov@nginx.com            '"index.php"', 'applications/targets/index'
92*1596Szelenkov@nginx.com        ), 'invalid index'
93*1596Szelenkov@nginx.com        assert 'error' in self.conf(
94*1596Szelenkov@nginx.com            '"index.php"', 'applications/targets/script'
95*1596Szelenkov@nginx.com        ), 'invalid script'
96*1596Szelenkov@nginx.com        assert 'error' in self.conf_delete(
97*1596Szelenkov@nginx.com            'applications/targets/default/root'
98*1596Szelenkov@nginx.com        ), 'root remove'
99