1*1567Szelenkov@nginx.comfrom unit.applications.proto import TestApplicationProto 2*1567Szelenkov@nginx.com 3*1567Szelenkov@nginx.com 4*1567Szelenkov@nginx.comclass TestVariables(TestApplicationProto): 5*1567Szelenkov@nginx.com prerequisites = {} 6*1567Szelenkov@nginx.com 7*1567Szelenkov@nginx.com def setUp(self): 8*1567Szelenkov@nginx.com super().setUp() 9*1567Szelenkov@nginx.com 10*1567Szelenkov@nginx.com self.assertIn( 11*1567Szelenkov@nginx.com 'success', 12*1567Szelenkov@nginx.com self.conf( 13*1567Szelenkov@nginx.com { 14*1567Szelenkov@nginx.com "listeners": {"*:7080": {"pass": "routes/$method"}}, 15*1567Szelenkov@nginx.com "routes": { 16*1567Szelenkov@nginx.com "GET": [{"action": {"return": 201}}], 17*1567Szelenkov@nginx.com "POST": [{"action": {"return": 202}}], 18*1567Szelenkov@nginx.com "3": [{"action": {"return": 203}}], 19*1567Szelenkov@nginx.com "4": [{"action": {"return": 204}}], 20*1567Szelenkov@nginx.com "blahGET}": [{"action": {"return": 205}}], 21*1567Szelenkov@nginx.com "5GET": [{"action": {"return": 206}}], 22*1567Szelenkov@nginx.com "GETGET": [{"action": {"return": 207}}], 23*1567Szelenkov@nginx.com }, 24*1567Szelenkov@nginx.com }, 25*1567Szelenkov@nginx.com ), 26*1567Szelenkov@nginx.com 'configure routes', 27*1567Szelenkov@nginx.com ) 28*1567Szelenkov@nginx.com 29*1567Szelenkov@nginx.com def conf_routes(self, routes): 30*1567Szelenkov@nginx.com self.assertIn( 31*1567Szelenkov@nginx.com 'success', 32*1567Szelenkov@nginx.com self.conf(routes, 'listeners/*:7080/pass') 33*1567Szelenkov@nginx.com ) 34*1567Szelenkov@nginx.com 35*1567Szelenkov@nginx.com def test_variables_method(self): 36*1567Szelenkov@nginx.com self.assertEqual(self.get()['status'], 201, 'method GET') 37*1567Szelenkov@nginx.com self.assertEqual(self.post()['status'], 202, 'method POST') 38*1567Szelenkov@nginx.com 39*1567Szelenkov@nginx.com def test_variables_uri(self): 40*1567Szelenkov@nginx.com self.conf_routes("\"routes$uri\"") 41*1567Szelenkov@nginx.com 42*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/3')['status'], 203, 'uri') 43*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/4')['status'], 204, 'uri 2') 44*1567Szelenkov@nginx.com 45*1567Szelenkov@nginx.com def test_variables_many(self): 46*1567Szelenkov@nginx.com self.conf_routes("\"routes$uri$method\"") 47*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/5')['status'], 206, 'many') 48*1567Szelenkov@nginx.com 49*1567Szelenkov@nginx.com self.conf_routes("\"routes${uri}${method}\"") 50*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/5')['status'], 206, 'many 2') 51*1567Szelenkov@nginx.com 52*1567Szelenkov@nginx.com self.conf_routes("\"routes${uri}$method\"") 53*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/5')['status'], 206, 'many 3') 54*1567Szelenkov@nginx.com 55*1567Szelenkov@nginx.com self.conf_routes("\"routes/$method$method\"") 56*1567Szelenkov@nginx.com self.assertEqual(self.get()['status'], 207, 'many 4') 57*1567Szelenkov@nginx.com 58*1567Szelenkov@nginx.com self.conf_routes("\"routes/$method$uri\"") 59*1567Szelenkov@nginx.com self.assertEqual(self.get()['status'], 404, 'no route') 60*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/blah')['status'], 404, 'no route 2') 61*1567Szelenkov@nginx.com 62*1567Szelenkov@nginx.com def test_variables_replace(self): 63*1567Szelenkov@nginx.com self.assertEqual(self.get()['status'], 201) 64*1567Szelenkov@nginx.com 65*1567Szelenkov@nginx.com self.conf_routes("\"routes$uri\"") 66*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/3')['status'], 203) 67*1567Szelenkov@nginx.com 68*1567Szelenkov@nginx.com self.conf_routes("\"routes/${method}\"") 69*1567Szelenkov@nginx.com self.assertEqual(self.post()['status'], 202) 70*1567Szelenkov@nginx.com 71*1567Szelenkov@nginx.com self.conf_routes("\"routes${uri}\"") 72*1567Szelenkov@nginx.com self.assertEqual(self.get(url='/4')['status'], 204) 73*1567Szelenkov@nginx.com 74*1567Szelenkov@nginx.com self.conf_routes("\"routes/blah$method}\"") 75*1567Szelenkov@nginx.com self.assertEqual(self.get()['status'], 205) 76*1567Szelenkov@nginx.com 77*1567Szelenkov@nginx.com def test_variables_invalid(self): 78*1567Szelenkov@nginx.com def check_variables(routes): 79*1567Szelenkov@nginx.com self.assertIn( 80*1567Szelenkov@nginx.com 'error', 81*1567Szelenkov@nginx.com self.conf(routes, 'listeners/*:7080/pass'), 82*1567Szelenkov@nginx.com 'invalid variables', 83*1567Szelenkov@nginx.com ) 84*1567Szelenkov@nginx.com 85*1567Szelenkov@nginx.com check_variables("\"routes$\"") 86*1567Szelenkov@nginx.com check_variables("\"routes${\"") 87*1567Szelenkov@nginx.com check_variables("\"routes${}\"") 88*1567Szelenkov@nginx.com check_variables("\"routes$ur\"") 89*1567Szelenkov@nginx.com check_variables("\"routes$uriblah\"") 90*1567Szelenkov@nginx.com check_variables("\"routes${uri\"") 91*1567Szelenkov@nginx.com check_variables("\"routes${{uri}\"") 92*1567Szelenkov@nginx.com 93*1567Szelenkov@nginx.comif __name__ == '__main__': 94*1567Szelenkov@nginx.com TestVariables.main() 95