Deleted
Added
test_routing.py (1467:195fe0a92670) | test_routing.py (1475:991a3b589d9d) |
---|---|
1# -*- coding: utf-8 -*- 2 |
|
1import unittest 2from unit.applications.proto import TestApplicationProto 3 4 5class TestRouting(TestApplicationProto): 6 prerequisites = {'modules': {'python': 'any'}} 7 8 def setUp(self): --- 1055 unchanged lines hidden (view full) --- 1064 1065 self.assertEqual(self.get()['status'], 404, 'args') 1066 self.assertEqual(self.get(url='/?foo=bar')['status'], 200, 'args 2') 1067 self.assertEqual(self.get(url='/?foo=bar1')['status'], 404, 'args 3') 1068 self.assertEqual(self.get(url='/?1foo=bar')['status'], 404, 'args 4') 1069 self.assertEqual(self.get(url='/?Foo=bar')['status'], 404, 'case') 1070 self.assertEqual(self.get(url='/?foo=Bar')['status'], 404, 'case 2') 1071 | 3import unittest 4from unit.applications.proto import TestApplicationProto 5 6 7class TestRouting(TestApplicationProto): 8 prerequisites = {'modules': {'python': 'any'}} 9 10 def setUp(self): --- 1055 unchanged lines hidden (view full) --- 1066 1067 self.assertEqual(self.get()['status'], 404, 'args') 1068 self.assertEqual(self.get(url='/?foo=bar')['status'], 200, 'args 2') 1069 self.assertEqual(self.get(url='/?foo=bar1')['status'], 404, 'args 3') 1070 self.assertEqual(self.get(url='/?1foo=bar')['status'], 404, 'args 4') 1071 self.assertEqual(self.get(url='/?Foo=bar')['status'], 404, 'case') 1072 self.assertEqual(self.get(url='/?foo=Bar')['status'], 404, 'case 2') 1073 |
1074 def test_routes_match_arguments_chars(self): 1075 chars = ( 1076 " !\"%23$%25%26'()*%2B,-./0123456789:;<%3D>?@" 1077 "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" 1078 ) 1079 1080 chars_enc = "" 1081 for h1 in ["2", "3", "4", "5", "6", "7"]: 1082 for h2 in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", 1083 "B", "C", "D", "E", "F", 1084 ]: 1085 chars_enc += "%" + h1 + h2 1086 chars_enc = chars_enc[:-3] 1087 1088 def check_args(args, query): 1089 self.route_match({"arguments": args}) 1090 self.assertEqual(self.get(url='/?' + query)['status'], 200) 1091 1092 check_args({chars: chars}, chars + '=' + chars) 1093 check_args({chars: chars}, chars + '=' + chars_enc) 1094 check_args({chars: chars}, chars_enc + '=' + chars) 1095 check_args({chars: chars}, chars_enc + '=' + chars_enc) 1096 check_args({chars_enc: chars_enc}, chars + '=' + chars) 1097 check_args({chars_enc: chars_enc}, chars + '=' + chars_enc) 1098 check_args({chars_enc: chars_enc}, chars_enc + '=' + chars) 1099 check_args({chars_enc: chars_enc}, chars_enc + '=' + chars_enc) 1100 |
|
1072 def test_routes_match_arguments_empty(self): 1073 self.route_match({"arguments": {}}) 1074 self.assertEqual(self.get()['status'], 200, 'arguments empty') 1075 1076 self.route_match({"arguments": []}) 1077 self.assertEqual(self.get()['status'], 200, 'arguments empty 2') 1078 | 1101 def test_routes_match_arguments_empty(self): 1102 self.route_match({"arguments": {}}) 1103 self.assertEqual(self.get()['status'], 200, 'arguments empty') 1104 1105 self.route_match({"arguments": []}) 1106 self.assertEqual(self.get()['status'], 200, 'arguments empty 2') 1107 |
1079 def test_routes_match_arguments_invalid(self): 1080 self.route_match_invalid({"arguments": ["var"]}) 1081 self.route_match_invalid({"arguments": [{"var1": {}}]}) 1082 self.route_match_invalid({"arguments": {"": "bar"}}) 1083 1084 @unittest.skip('not yet') | |
1085 def test_routes_match_arguments_space(self): | 1108 def test_routes_match_arguments_space(self): |
1086 self.route_match({"arguments": {"foo": "bar "}}) | 1109 self.route_match({"arguments": {"+fo o%20": "%20b+a r"}}) 1110 self.assertEqual(self.get(url='/? fo o = b a r&')['status'], 200) 1111 self.assertEqual(self.get(url='/?+fo+o+=+b+a+r&')['status'], 200) 1112 self.assertEqual( 1113 self.get(url='/?%20fo%20o%20=%20b%20a%20r&')['status'], 200 1114 ) |
1087 | 1115 |
1088 self.assertEqual(self.get(url='/?foo=bar &')['status'], 200, 'sp') 1089 # FAIL 1090 self.assertEqual(self.get(url='/?foo=bar+&')['status'], 200, 'sp 2') 1091 # FAIL 1092 self.assertEqual(self.get(url='/?foo=bar%20&')['status'], 200, 'sp 3') | 1116 self.route_match({"arguments": {"%20foo": " bar"}}) 1117 self.assertEqual(self.get(url='/? foo= bar')['status'], 200) 1118 self.assertEqual(self.get(url='/?+foo=+bar')['status'], 200) 1119 self.assertEqual(self.get(url='/?%20foo=%20bar')['status'], 200) 1120 self.assertEqual(self.get(url='/?+foo= bar')['status'], 200) 1121 self.assertEqual(self.get(url='/?%20foo=+bar')['status'], 200) |
1093 | 1122 |
1094 @unittest.skip('not yet') 1095 def test_routes_match_arguments_plus(self): 1096 self.route_match({"arguments": [{"foo": "bar+"}]}) | 1123 def test_routes_match_arguments_equal(self): 1124 self.route_match({"arguments": {"=": "="}}) 1125 self.assertEqual(self.get(url='/?%3D=%3D')['status'], 200) 1126 self.assertEqual(self.get(url='/?%3D==')['status'], 200) 1127 self.assertEqual(self.get(url='/?===')['status'], 404) 1128 self.assertEqual(self.get(url='/?%3D%3D%3D')['status'], 404) 1129 self.assertEqual(self.get(url='/?==%3D')['status'], 404) |
1097 | 1130 |
1098 self.assertEqual(self.get(url='/?foo=bar+&')['status'], 200, 'plus') 1099 # FAIL 1100 self.assertEqual( 1101 self.get(url='/?foo=bar%2B&')['status'], 200, 'plus 2' 1102 ) | 1131 def test_routes_match_arguments_enc(self): 1132 self.route_match({"arguments": {"Ю": "н"}}) 1133 self.assertEqual(self.get(url='/?%D0%AE=%D0%BD')['status'], 200) 1134 self.assertEqual(self.get(url='/?%d0%ae=%d0%Bd')['status'], 200) |
1103 | 1135 |
1104 @unittest.skip('not yet') 1105 def test_routes_match_arguments_hex(self): 1106 self.route_match({"arguments": [{"foo": "bar"}]}) | 1136 def test_routes_match_arguments_hash(self): 1137 self.route_match({"arguments": {"#": "#"}}) 1138 self.assertEqual(self.get(url='/?%23=%23')['status'], 200) 1139 self.assertEqual(self.get(url='/?%23=%23#')['status'], 200) 1140 self.assertEqual(self.get(url='/?#=#')['status'], 404) 1141 self.assertEqual(self.get(url='/?%23=#')['status'], 404) |
1107 | 1142 |
1108 self.assertEqual( 1109 self.get(url='/?%66%6F%6f=%62%61%72&')['status'], 200, 'hex' 1110 ) | 1143 def test_routes_match_arguments_wildcard(self): 1144 self.route_match({"arguments": {"foo": "*"}}) 1145 self.assertEqual(self.get(url='/?foo')['status'], 200) 1146 self.assertEqual(self.get(url='/?foo=')['status'], 200) 1147 self.assertEqual(self.get(url='/?foo=blah')['status'], 200) 1148 self.assertEqual(self.get(url='/?blah=foo')['status'], 404) |
1111 | 1149 |
1112 def test_routes_match_arguments_chars(self): 1113 self.route_match({"arguments": {"foo": "-._()[],;"}}) | 1150 self.route_match({"arguments": {"foo": "%25*"}}) 1151 self.assertEqual(self.get(url='/?foo=%xx')['status'], 200) |
1114 | 1152 |
1115 self.assertEqual(self.get(url='/?foo=-._()[],;')['status'], 200, 'chs') | 1153 self.route_match({"arguments": {"foo": "%2A*"}}) 1154 self.assertEqual(self.get(url='/?foo=*xx')['status'], 200) 1155 self.assertEqual(self.get(url='/?foo=xx')['status'], 404) |
1116 | 1156 |
1157 self.route_match({"arguments": {"foo": "*%2A"}}) 1158 self.assertEqual(self.get(url='/?foo=xx*')['status'], 200) 1159 self.assertEqual(self.get(url='/?foo=xx*x')['status'], 404) 1160 1161 self.route_match({"arguments": {"foo": "1*2"}}) 1162 self.assertEqual(self.get(url='/?foo=12')['status'], 200) 1163 self.assertEqual(self.get(url='/?foo=1blah2')['status'], 200) 1164 self.assertEqual(self.get(url='/?foo=1%2A2')['status'], 200) 1165 self.assertEqual(self.get(url='/?foo=x12')['status'], 404) 1166 1167 self.route_match({"arguments": {"foo": "bar*", "%25": "%25"}}) 1168 self.assertEqual(self.get(url='/?foo=barxx&%=%')['status'], 200) 1169 self.assertEqual(self.get(url='/?foo=barxx&x%=%')['status'], 404) 1170 1171 def test_routes_match_arguments_negative(self): 1172 self.route_match({"arguments": {"foo": "!%25"}}) 1173 self.assertEqual(self.get(url='/?foo=blah')['status'], 200) 1174 self.assertEqual(self.get(url='/?foo=%')['status'], 404) 1175 1176 self.route_match({"arguments": {"foo": "%21blah"}}) 1177 self.assertEqual(self.get(url='/?foo=%21blah')['status'], 200) 1178 self.assertEqual(self.get(url='/?foo=!blah')['status'], 200) 1179 self.assertEqual(self.get(url='/?foo=bar')['status'], 404) 1180 1181 self.route_match({"arguments": {"foo": "!!%21*a"}}) 1182 self.assertEqual(self.get(url='/?foo=blah')['status'], 200) 1183 self.assertEqual(self.get(url='/?foo=!blah')['status'], 200) 1184 self.assertEqual(self.get(url='/?foo=!!a')['status'], 404) 1185 self.assertEqual(self.get(url='/?foo=!!bla')['status'], 404) 1186 1187 def test_routes_match_arguments_percent(self): 1188 self.route_match({"arguments": {"%25": "%25"}}) 1189 self.assertEqual(self.get(url='/?%=%')['status'], 200) 1190 self.assertEqual(self.get(url='/?%25=%25')['status'], 200) 1191 self.assertEqual(self.get(url='/?%25=%')['status'], 200) 1192 1193 self.route_match({"arguments": {"%251": "%252"}}) 1194 self.assertEqual(self.get(url='/?%1=%2')['status'], 200) 1195 self.assertEqual(self.get(url='/?%251=%252')['status'], 200) 1196 self.assertEqual(self.get(url='/?%251=%2')['status'], 200) 1197 1198 self.route_match({"arguments": {"%25%21%251": "%25%24%252"}}) 1199 self.assertEqual(self.get(url='/?%!%1=%$%2')['status'], 200) 1200 self.assertEqual(self.get(url='/?%25!%251=%25$%252')['status'], 200) 1201 self.assertEqual(self.get(url='/?%25!%1=%$%2')['status'], 200) 1202 1203 def test_routes_match_arguments_ampersand(self): 1204 self.route_match({"arguments": {"foo": "&"}}) 1205 self.assertEqual(self.get(url='/?foo=%26')['status'], 200) 1206 self.assertEqual(self.get(url='/?foo=%26&')['status'], 200) 1207 self.assertEqual(self.get(url='/?foo=%26%26')['status'], 404) 1208 self.assertEqual(self.get(url='/?foo=&')['status'], 404) 1209 1210 self.route_match({"arguments": {"&": ""}}) 1211 self.assertEqual(self.get(url='/?%26=')['status'], 200) 1212 self.assertEqual(self.get(url='/?%26=&')['status'], 200) 1213 self.assertEqual(self.get(url='/?%26=%26')['status'], 404) 1214 self.assertEqual(self.get(url='/?&=')['status'], 404) 1215 |
|
1117 def test_routes_match_arguments_complex(self): 1118 self.route_match({"arguments": {"foo": ""}}) 1119 1120 self.assertEqual(self.get(url='/?foo')['status'], 200, 'complex') 1121 self.assertEqual( 1122 self.get(url='/?blah=blah&foo=')['status'], 200, 'complex 2' 1123 ) 1124 self.assertEqual( --- 17 unchanged lines hidden (view full) --- 1142 1143 self.assertEqual(self.get()['status'], 404, 'multiple') 1144 self.assertEqual( 1145 self.get(url='/?foo=bar&blah=test')['status'], 200, 'multiple 2' 1146 ) 1147 self.assertEqual( 1148 self.get(url='/?foo=bar&blah')['status'], 404, 'multiple 3' 1149 ) | 1216 def test_routes_match_arguments_complex(self): 1217 self.route_match({"arguments": {"foo": ""}}) 1218 1219 self.assertEqual(self.get(url='/?foo')['status'], 200, 'complex') 1220 self.assertEqual( 1221 self.get(url='/?blah=blah&foo=')['status'], 200, 'complex 2' 1222 ) 1223 self.assertEqual( --- 17 unchanged lines hidden (view full) --- 1241 1242 self.assertEqual(self.get()['status'], 404, 'multiple') 1243 self.assertEqual( 1244 self.get(url='/?foo=bar&blah=test')['status'], 200, 'multiple 2' 1245 ) 1246 self.assertEqual( 1247 self.get(url='/?foo=bar&blah')['status'], 404, 'multiple 3' 1248 ) |
1249 self.assertEqual( 1250 self.get(url='/?foo=bar&blah=tes')['status'], 404, 'multiple 4' 1251 ) 1252 self.assertEqual( 1253 self.get(url='/?foo=b%61r&bl%61h=t%65st')['status'], 1254 200, 1255 'multiple 5', 1256 ) |
|
1150 1151 def test_routes_match_arguments_multiple_rules(self): 1152 self.route_match({"arguments": {"foo": ["bar", "blah"]}}) 1153 1154 self.assertEqual(self.get()['status'], 404, 'rules') 1155 self.assertEqual(self.get(url='/?foo=bar')['status'], 200, 'rules 2') 1156 self.assertEqual(self.get(url='/?foo=blah')['status'], 200, 'rules 3') 1157 self.assertEqual( --- 30 unchanged lines hidden (view full) --- 1188 'success', 1189 self.conf_delete('routes/0/match/arguments/1'), 1190 'match arguments array configure 2', 1191 ) 1192 1193 self.assertEqual(self.get(url='/?var2=val2')['status'], 404, 'arr 7') 1194 self.assertEqual(self.get(url='/?var3=foo')['status'], 200, 'arr 8') 1195 | 1257 1258 def test_routes_match_arguments_multiple_rules(self): 1259 self.route_match({"arguments": {"foo": ["bar", "blah"]}}) 1260 1261 self.assertEqual(self.get()['status'], 404, 'rules') 1262 self.assertEqual(self.get(url='/?foo=bar')['status'], 200, 'rules 2') 1263 self.assertEqual(self.get(url='/?foo=blah')['status'], 200, 'rules 3') 1264 self.assertEqual( --- 30 unchanged lines hidden (view full) --- 1295 'success', 1296 self.conf_delete('routes/0/match/arguments/1'), 1297 'match arguments array configure 2', 1298 ) 1299 1300 self.assertEqual(self.get(url='/?var2=val2')['status'], 404, 'arr 7') 1301 self.assertEqual(self.get(url='/?var3=foo')['status'], 200, 'arr 8') 1302 |
1303 def test_routes_match_arguments_invalid(self): 1304 # TODO remove it after controller fixed 1305 self.skip_alerts.append(r'failed to apply new conf') 1306 1307 self.route_match_invalid({"arguments": ["var"]}) 1308 self.route_match_invalid({"arguments": [{"var1": {}}]}) 1309 self.route_match_invalid({"arguments": {"": "bar"}}) 1310 self.route_match_invalid({"arguments": {"foo": "*ba*r"}}) 1311 self.route_match_invalid({"arguments": {"foo": "%"}}) 1312 self.route_match_invalid({"arguments": {"foo": "%1G"}}) 1313 self.route_match_invalid({"arguments": {"%": "bar"}}) 1314 self.route_match_invalid({"arguments": {"foo": "%0"}}) 1315 self.route_match_invalid({"arguments": {"foo": "%%1F"}}) 1316 self.route_match_invalid({"arguments": {"%%1F": ""}}) 1317 self.route_match_invalid({"arguments": {"%7%F": ""}}) 1318 |
|
1196 def test_routes_match_cookies(self): 1197 self.route_match({"cookies": {"foO": "bar"}}) 1198 1199 self.assertEqual(self.get()['status'], 404, 'cookie') 1200 self.cookie('foO=bar', 200) 1201 self.cookie('foO=bar;1', 200) 1202 self.cookie(['foO=bar', 'blah=blah'], 200) 1203 self.cookie('foO=bar; blah=blah', 200) --- 549 unchanged lines hidden --- | 1319 def test_routes_match_cookies(self): 1320 self.route_match({"cookies": {"foO": "bar"}}) 1321 1322 self.assertEqual(self.get()['status'], 404, 'cookie') 1323 self.cookie('foO=bar', 200) 1324 self.cookie('foO=bar;1', 200) 1325 self.cookie(['foO=bar', 'blah=blah'], 200) 1326 self.cookie('foO=bar; blah=blah', 200) --- 549 unchanged lines hidden --- |