xref: /unit/test/test_configuration.py (revision 507)
1484Szelenkov@nginx.comimport unittest
2484Szelenkov@nginx.comimport unit
3484Szelenkov@nginx.com
4484Szelenkov@nginx.comclass TestUnitConfiguration(unit.TestUnitControl):
5484Szelenkov@nginx.com
6484Szelenkov@nginx.com    def setUpClass():
7484Szelenkov@nginx.com        unit.TestUnit().check_modules('python')
8484Szelenkov@nginx.com
9495Szelenkov@nginx.com    def test_json_leading_zero(self):
10504Szelenkov@nginx.com        self.assertIn('error', self.conf('00'), 'leading zero')
11484Szelenkov@nginx.com
12495Szelenkov@nginx.com    def test_json_unicode(self):
13504Szelenkov@nginx.com        self.assertIn('success', self.conf(b"""
14495Szelenkov@nginx.com            {
15495Szelenkov@nginx.com                "ap\u0070": {
16495Szelenkov@nginx.com                    "type": "\u0070ython",
17*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
18495Szelenkov@nginx.com                    "path": "\u002Fapp",
19495Szelenkov@nginx.com                    "module": "wsgi"
20495Szelenkov@nginx.com                }
21495Szelenkov@nginx.com            }
22504Szelenkov@nginx.com            """, '/applications'), 'unicode')
23484Szelenkov@nginx.com
24495Szelenkov@nginx.com    def test_json_unicode_2(self):
25504Szelenkov@nginx.com        self.assertIn('success', self.conf({
26504Szelenkov@nginx.com            "приложение": {
27504Szelenkov@nginx.com                "type": "python",
28*507Smax.romanov@nginx.com                "processes": { "spare": 0 },
29504Szelenkov@nginx.com                "path": "/app",
30504Szelenkov@nginx.com                "module": "wsgi"
31495Szelenkov@nginx.com            }
32504Szelenkov@nginx.com        }, '/applications'), 'unicode 2')
33495Szelenkov@nginx.com
34495Szelenkov@nginx.com    def test_json_unicode_number(self):
35504Szelenkov@nginx.com        self.assertIn('error', self.conf(b"""
36495Szelenkov@nginx.com            {
37495Szelenkov@nginx.com                "app": {
38495Szelenkov@nginx.com                    "type": "python",
39*507Smax.romanov@nginx.com                    "processes": { "spare": \u0030 },
40495Szelenkov@nginx.com                    "path": "/app",
41495Szelenkov@nginx.com                    "module": "wsgi"
42495Szelenkov@nginx.com                }
43495Szelenkov@nginx.com            }
44504Szelenkov@nginx.com            """, '/applications'), 'unicode number')
45495Szelenkov@nginx.com
46495Szelenkov@nginx.com    def test_applications_open_brace(self):
47504Szelenkov@nginx.com        self.assertIn('error', self.conf('{', '/applications'), 'open brace')
48495Szelenkov@nginx.com
49495Szelenkov@nginx.com    def test_applications_string(self):
50504Szelenkov@nginx.com        self.assertIn('error', self.conf('"{}"', '/applications'), 'string')
51495Szelenkov@nginx.com
52*507Smax.romanov@nginx.com    def test_negative_spare(self):
53504Szelenkov@nginx.com        self.assertIn('error', self.conf({
54504Szelenkov@nginx.com            "app": {
55504Szelenkov@nginx.com                "type": "python",
56*507Smax.romanov@nginx.com                "processes": { "spare": -1 },
57504Szelenkov@nginx.com                "path": "/app",
58504Szelenkov@nginx.com                "module": "wsgi"
59484Szelenkov@nginx.com            }
60*507Smax.romanov@nginx.com        }, '/applications'), 'negative spare')
61484Szelenkov@nginx.com
62495Szelenkov@nginx.com    def test_applications_type_only(self):
63504Szelenkov@nginx.com        self.assertIn('error', self.conf({
64504Szelenkov@nginx.com            "app": {
65504Szelenkov@nginx.com                "type": "python"
66484Szelenkov@nginx.com            }
67504Szelenkov@nginx.com        }, '/applications'), 'type only')
68484Szelenkov@nginx.com
69495Szelenkov@nginx.com    def test_applications_miss_quote(self):
70504Szelenkov@nginx.com        self.assertIn('error', self.conf("""
71484Szelenkov@nginx.com            {
72484Szelenkov@nginx.com                app": {
73484Szelenkov@nginx.com                    "type": "python",
74*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
75484Szelenkov@nginx.com                    "path": "/app",
76484Szelenkov@nginx.com                    "module": "wsgi"
77484Szelenkov@nginx.com                }
78484Szelenkov@nginx.com            }
79504Szelenkov@nginx.com            """, '/applications'), 'miss quote')
80484Szelenkov@nginx.com
81495Szelenkov@nginx.com    def test_applications_miss_colon(self):
82504Szelenkov@nginx.com        self.assertIn('error', self.conf("""
83484Szelenkov@nginx.com            {
84484Szelenkov@nginx.com                "app" {
85484Szelenkov@nginx.com                    "type": "python",
86*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
87484Szelenkov@nginx.com                    "path": "/app",
88484Szelenkov@nginx.com                    "module": "wsgi"
89484Szelenkov@nginx.com                }
90484Szelenkov@nginx.com            }
91504Szelenkov@nginx.com            """, '/applications'), 'miss colon')
92484Szelenkov@nginx.com
93495Szelenkov@nginx.com    def test_applications_miss_comma(self):
94504Szelenkov@nginx.com        self.assertIn('error', self.conf("""
95484Szelenkov@nginx.com            {
96484Szelenkov@nginx.com                "app": {
97484Szelenkov@nginx.com                    "type": "python"
98*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
99484Szelenkov@nginx.com                    "path": "/app",
100484Szelenkov@nginx.com                    "module": "wsgi"
101484Szelenkov@nginx.com                }
102484Szelenkov@nginx.com            }
103504Szelenkov@nginx.com            """, '/applications'), 'miss comma')
104484Szelenkov@nginx.com
105495Szelenkov@nginx.com    def test_applications_skip_spaces(self):
106504Szelenkov@nginx.com        self.assertIn('success', self.conf(b'{ \n\r\t}', '/applications'),
107495Szelenkov@nginx.com            'skip spaces')
108484Szelenkov@nginx.com
109495Szelenkov@nginx.com    def test_applications_relative_path(self):
110504Szelenkov@nginx.com        self.assertIn('success', self.conf({
111504Szelenkov@nginx.com            "app": {
112504Szelenkov@nginx.com                "type": "python",
113*507Smax.romanov@nginx.com                "processes": { "spare": 0 },
114504Szelenkov@nginx.com                "path": "../app",
115504Szelenkov@nginx.com                "module": "wsgi"
116484Szelenkov@nginx.com            }
117504Szelenkov@nginx.com        }, '/applications'), 'relative path')
118484Szelenkov@nginx.com
119495Szelenkov@nginx.com    @unittest.expectedFailure
120495Szelenkov@nginx.com    def test_listeners_empty(self):
121504Szelenkov@nginx.com        self.assertIn('error', self.conf({"*:7080":{}}, '/listeners'),
122495Szelenkov@nginx.com            'listener empty')
123484Szelenkov@nginx.com
124495Szelenkov@nginx.com    def test_listeners_no_app(self):
125504Szelenkov@nginx.com        self.assertIn('error', self.conf({"*:7080":{"application":"app"}},
126504Szelenkov@nginx.com            '/listeners'), 'listeners no app')
127484Szelenkov@nginx.com
128495Szelenkov@nginx.com    def test_listeners_wildcard(self):
129504Szelenkov@nginx.com        self.assertIn('success', self.conf({
130504Szelenkov@nginx.com            "listeners": {
131504Szelenkov@nginx.com                "*:7080": {
132504Szelenkov@nginx.com                    "application":"app"
133504Szelenkov@nginx.com                }
134504Szelenkov@nginx.com            },
135504Szelenkov@nginx.com            "applications": {
136504Szelenkov@nginx.com                "app": {
137504Szelenkov@nginx.com                    "type": "python",
138*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
139504Szelenkov@nginx.com                    "path": "/app",
140504Szelenkov@nginx.com                    "module": "wsgi"
141495Szelenkov@nginx.com                }
142495Szelenkov@nginx.com            }
143504Szelenkov@nginx.com        }), 'listeners wildcard')
144495Szelenkov@nginx.com
145495Szelenkov@nginx.com    def test_listeners_explicit(self):
146504Szelenkov@nginx.com        self.assertIn('success', self.conf({
147504Szelenkov@nginx.com            "listeners": {
148504Szelenkov@nginx.com                "127.0.0.1:7080": {
149504Szelenkov@nginx.com                    "application":"app"
150504Szelenkov@nginx.com                }
151504Szelenkov@nginx.com            },
152504Szelenkov@nginx.com            "applications": {
153504Szelenkov@nginx.com                "app": {
154504Szelenkov@nginx.com                    "type": "python",
155*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
156504Szelenkov@nginx.com                    "path": "/app",
157504Szelenkov@nginx.com                    "module": "wsgi"
158484Szelenkov@nginx.com                }
159484Szelenkov@nginx.com            }
160504Szelenkov@nginx.com        }), 'explicit')
161484Szelenkov@nginx.com
162495Szelenkov@nginx.com    def test_listeners_explicit_ipv6(self):
163504Szelenkov@nginx.com        self.assertIn('success', self.conf({
164504Szelenkov@nginx.com            "listeners": {
165504Szelenkov@nginx.com                "[::1]:7080": {
166504Szelenkov@nginx.com                    "application":"app"
167504Szelenkov@nginx.com                }
168504Szelenkov@nginx.com            },
169504Szelenkov@nginx.com            "applications": {
170504Szelenkov@nginx.com                "app": {
171504Szelenkov@nginx.com                    "type": "python",
172*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
173504Szelenkov@nginx.com                    "path": "/app",
174504Szelenkov@nginx.com                    "module": "wsgi"
175495Szelenkov@nginx.com                }
176495Szelenkov@nginx.com            }
177504Szelenkov@nginx.com        }), 'explicit ipv6')
178495Szelenkov@nginx.com
179495Szelenkov@nginx.com    def test_listeners_no_port(self):
180504Szelenkov@nginx.com        self.assertIn('error', self.conf({
181504Szelenkov@nginx.com            "listeners": {
182504Szelenkov@nginx.com                "127.0.0.1": {
183504Szelenkov@nginx.com                    "application":"app"
184504Szelenkov@nginx.com                }
185504Szelenkov@nginx.com            },
186504Szelenkov@nginx.com            "applications": {
187504Szelenkov@nginx.com                "app": {
188504Szelenkov@nginx.com                    "type": "python",
189*507Smax.romanov@nginx.com                    "processes": { "spare": 0 },
190504Szelenkov@nginx.com                    "path": "/app",
191504Szelenkov@nginx.com                    "module": "wsgi"
192495Szelenkov@nginx.com                }
193495Szelenkov@nginx.com            }
194504Szelenkov@nginx.com        }), 'no port')
195484Szelenkov@nginx.com
196484Szelenkov@nginx.comif __name__ == '__main__':
197484Szelenkov@nginx.com    unittest.main()
198