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