11355St.nateldemoura@f5.comimport io 21293St.nateldemoura@f5.comimport os 3977Smax.romanov@gmail.comimport time 4*1477Szelenkov@nginx.com 51019Szelenkov@nginx.comfrom unit.applications.lang.java import TestApplicationJava 6977Smax.romanov@gmail.com 71017Szelenkov@nginx.com 81019Szelenkov@nginx.comclass TestJavaApplication(TestApplicationJava): 91467Szelenkov@nginx.com prerequisites = {'modules': {'java': 'all'}} 10977Smax.romanov@gmail.com 111106Szelenkov@nginx.com def test_java_conf_error(self): 121106Szelenkov@nginx.com self.skip_alerts.extend( 131106Szelenkov@nginx.com [ 141106Szelenkov@nginx.com r'realpath.*failed', 151106Szelenkov@nginx.com r'failed to apply new conf', 161106Szelenkov@nginx.com ] 171106Szelenkov@nginx.com ) 181106Szelenkov@nginx.com self.assertIn( 191106Szelenkov@nginx.com 'error', 201106Szelenkov@nginx.com self.conf( 211106Szelenkov@nginx.com { 221106Szelenkov@nginx.com "listeners": {"*:7080": {"pass": "applications/app"}}, 231106Szelenkov@nginx.com "applications": { 241106Szelenkov@nginx.com "app": { 251106Szelenkov@nginx.com "type": "java", 261106Szelenkov@nginx.com "processes": 1, 271106Szelenkov@nginx.com "working_directory": self.current_dir 281106Szelenkov@nginx.com + "/java/empty", 291106Szelenkov@nginx.com "webapp": self.testdir + "/java", 301109Szelenkov@nginx.com "unit_jars": self.testdir + "/no_such_dir", 311106Szelenkov@nginx.com } 321106Szelenkov@nginx.com }, 331106Szelenkov@nginx.com } 341106Szelenkov@nginx.com ), 351106Szelenkov@nginx.com 'conf error', 361106Szelenkov@nginx.com ) 371106Szelenkov@nginx.com 381106Szelenkov@nginx.com def test_java_war(self): 391106Szelenkov@nginx.com self.load('empty_war') 401106Szelenkov@nginx.com 411106Szelenkov@nginx.com self.assertIn( 421106Szelenkov@nginx.com 'success', 431106Szelenkov@nginx.com self.conf( 441106Szelenkov@nginx.com '"' + self.testdir + '/java/empty.war"', 451106Szelenkov@nginx.com '/config/applications/empty_war/webapp', 461106Szelenkov@nginx.com ), 471106Szelenkov@nginx.com 'configure war', 481106Szelenkov@nginx.com ) 491106Szelenkov@nginx.com 501106Szelenkov@nginx.com self.assertEqual(self.get()['status'], 200, 'war') 511106Szelenkov@nginx.com 52977Smax.romanov@gmail.com def test_java_application_cookies(self): 53977Smax.romanov@gmail.com self.load('cookies') 54977Smax.romanov@gmail.com 551017Szelenkov@nginx.com headers = self.get( 561017Szelenkov@nginx.com headers={ 571017Szelenkov@nginx.com 'Cookie': 'var1=val1; var2=val2', 581017Szelenkov@nginx.com 'Host': 'localhost', 591017Szelenkov@nginx.com 'Connection': 'close', 601017Szelenkov@nginx.com } 611017Szelenkov@nginx.com )['headers'] 62977Smax.romanov@gmail.com 63977Smax.romanov@gmail.com self.assertEqual(headers['X-Cookie-1'], 'val1', 'cookie 1') 64977Smax.romanov@gmail.com self.assertEqual(headers['X-Cookie-2'], 'val2', 'cookie 2') 65977Smax.romanov@gmail.com 66977Smax.romanov@gmail.com def test_java_application_filter(self): 67977Smax.romanov@gmail.com self.load('filter') 68977Smax.romanov@gmail.com 69977Smax.romanov@gmail.com headers = self.get()['headers'] 70977Smax.romanov@gmail.com 71977Smax.romanov@gmail.com self.assertEqual(headers['X-Filter-Before'], '1', 'filter before') 72977Smax.romanov@gmail.com self.assertEqual(headers['X-Filter-After'], '1', 'filter after') 73977Smax.romanov@gmail.com 741017Szelenkov@nginx.com self.assertEqual( 751017Szelenkov@nginx.com self.get(url='/test')['headers']['X-Filter-After'], 761017Szelenkov@nginx.com '0', 771017Szelenkov@nginx.com 'filter after 2', 781017Szelenkov@nginx.com ) 79977Smax.romanov@gmail.com 80977Smax.romanov@gmail.com def test_java_application_get_variables(self): 81977Smax.romanov@gmail.com self.load('get_params') 82977Smax.romanov@gmail.com 831017Szelenkov@nginx.com headers = self.get(url='/?var1=val1&var2=&var4=val4&var4=foo')[ 841017Szelenkov@nginx.com 'headers' 851017Szelenkov@nginx.com ] 86977Smax.romanov@gmail.com 87977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-1'], 'val1', 'GET variables') 88977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-2'], 'true', 'GET variables 2') 89977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-3'], 'false', 'GET variables 3') 90977Smax.romanov@gmail.com 911017Szelenkov@nginx.com self.assertEqual( 921017Szelenkov@nginx.com headers['X-Param-Names'], 'var4 var2 var1 ', 'getParameterNames' 931017Szelenkov@nginx.com ) 941017Szelenkov@nginx.com self.assertEqual( 951017Szelenkov@nginx.com headers['X-Param-Values'], 'val4 foo ', 'getParameterValues' 961017Szelenkov@nginx.com ) 971017Szelenkov@nginx.com self.assertEqual( 981017Szelenkov@nginx.com headers['X-Param-Map'], 991017Szelenkov@nginx.com 'var2= var1=val1 var4=val4,foo ', 1001017Szelenkov@nginx.com 'getParameterMap', 1011017Szelenkov@nginx.com ) 102977Smax.romanov@gmail.com 103977Smax.romanov@gmail.com def test_java_application_post_variables(self): 104977Smax.romanov@gmail.com self.load('post_params') 105977Smax.romanov@gmail.com 1061017Szelenkov@nginx.com headers = self.post( 1071017Szelenkov@nginx.com headers={ 1081017Szelenkov@nginx.com 'Content-Type': 'application/x-www-form-urlencoded', 1091017Szelenkov@nginx.com 'Host': 'localhost', 1101017Szelenkov@nginx.com 'Connection': 'close', 1111017Szelenkov@nginx.com }, 1121017Szelenkov@nginx.com body='var1=val1&var2=', 1131017Szelenkov@nginx.com )['headers'] 114977Smax.romanov@gmail.com 115977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-1'], 'val1', 'POST variables') 116977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-2'], 'true', 'POST variables 2') 117977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-3'], 'false', 'POST variables 3') 118977Smax.romanov@gmail.com 119977Smax.romanov@gmail.com def test_java_application_session(self): 120977Smax.romanov@gmail.com self.load('session') 121977Smax.romanov@gmail.com 122977Smax.romanov@gmail.com headers = self.get(url='/?var1=val1')['headers'] 123977Smax.romanov@gmail.com session_id = headers['X-Session-Id'] 124977Smax.romanov@gmail.com 125977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-1'], 'null', 'variable empty') 126977Smax.romanov@gmail.com self.assertEqual(headers['X-Session-New'], 'true', 'session create') 127977Smax.romanov@gmail.com 1281017Szelenkov@nginx.com headers = self.get( 1291017Szelenkov@nginx.com headers={ 1301017Szelenkov@nginx.com 'Host': 'localhost', 1311017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 1321017Szelenkov@nginx.com 'Connection': 'close', 1331017Szelenkov@nginx.com }, 1341017Szelenkov@nginx.com url='/?var1=val2', 1351017Szelenkov@nginx.com )['headers'] 136977Smax.romanov@gmail.com 137977Smax.romanov@gmail.com self.assertEqual(headers['X-Var-1'], 'val1', 'variable') 138977Smax.romanov@gmail.com self.assertEqual(headers['X-Session-New'], 'false', 'session resume') 1391017Szelenkov@nginx.com self.assertEqual( 1401017Szelenkov@nginx.com session_id, headers['X-Session-Id'], 'session same id' 1411017Szelenkov@nginx.com ) 142977Smax.romanov@gmail.com 143977Smax.romanov@gmail.com def test_java_application_session_active(self): 144977Smax.romanov@gmail.com self.load('session_inactive') 145977Smax.romanov@gmail.com 1461088Szelenkov@nginx.com resp = self.get(headers={ 1471088Szelenkov@nginx.com 'X-Interval': '4', 1481088Szelenkov@nginx.com 'Host': 'localhost', 1491088Szelenkov@nginx.com 'Connection': 'close', 1501088Szelenkov@nginx.com }) 151977Smax.romanov@gmail.com session_id = resp['headers']['X-Session-Id'] 152977Smax.romanov@gmail.com 153977Smax.romanov@gmail.com self.assertEqual(resp['status'], 200, 'session init') 1541017Szelenkov@nginx.com self.assertEqual( 1551088Szelenkov@nginx.com resp['headers']['X-Session-Interval'], '4', 'session interval' 1561017Szelenkov@nginx.com ) 1571017Szelenkov@nginx.com self.assertLess( 1581017Szelenkov@nginx.com abs( 1591017Szelenkov@nginx.com self.date_to_sec_epoch( 1601017Szelenkov@nginx.com resp['headers']['X-Session-Last-Access-Time'] 1611017Szelenkov@nginx.com ) 1621017Szelenkov@nginx.com - self.sec_epoch() 1631017Szelenkov@nginx.com ), 1641017Szelenkov@nginx.com 5, 1651017Szelenkov@nginx.com 'session last access time', 1661017Szelenkov@nginx.com ) 167977Smax.romanov@gmail.com 168977Smax.romanov@gmail.com time.sleep(1) 169977Smax.romanov@gmail.com 1701017Szelenkov@nginx.com resp = self.get( 1711017Szelenkov@nginx.com headers={ 1721017Szelenkov@nginx.com 'Host': 'localhost', 1731017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 1741017Szelenkov@nginx.com 'Connection': 'close', 1751017Szelenkov@nginx.com } 1761017Szelenkov@nginx.com ) 177977Smax.romanov@gmail.com 1781017Szelenkov@nginx.com self.assertEqual( 1791017Szelenkov@nginx.com resp['headers']['X-Session-Id'], session_id, 'session active' 1801017Szelenkov@nginx.com ) 181977Smax.romanov@gmail.com 182977Smax.romanov@gmail.com session_id = resp['headers']['X-Session-Id'] 183977Smax.romanov@gmail.com 184977Smax.romanov@gmail.com time.sleep(1) 185977Smax.romanov@gmail.com 1861017Szelenkov@nginx.com resp = self.get( 1871017Szelenkov@nginx.com headers={ 1881017Szelenkov@nginx.com 'Host': 'localhost', 1891017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 1901017Szelenkov@nginx.com 'Connection': 'close', 1911017Szelenkov@nginx.com } 1921017Szelenkov@nginx.com ) 193977Smax.romanov@gmail.com 1941017Szelenkov@nginx.com self.assertEqual( 1951017Szelenkov@nginx.com resp['headers']['X-Session-Id'], session_id, 'session active 2' 1961017Szelenkov@nginx.com ) 197977Smax.romanov@gmail.com 1981088Szelenkov@nginx.com time.sleep(2) 199977Smax.romanov@gmail.com 2001017Szelenkov@nginx.com resp = self.get( 2011017Szelenkov@nginx.com headers={ 2021017Szelenkov@nginx.com 'Host': 'localhost', 2031017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 2041017Szelenkov@nginx.com 'Connection': 'close', 2051017Szelenkov@nginx.com } 2061017Szelenkov@nginx.com ) 207977Smax.romanov@gmail.com 2081017Szelenkov@nginx.com self.assertEqual( 2091017Szelenkov@nginx.com resp['headers']['X-Session-Id'], session_id, 'session active 3' 2101017Szelenkov@nginx.com ) 211977Smax.romanov@gmail.com 212977Smax.romanov@gmail.com def test_java_application_session_inactive(self): 213977Smax.romanov@gmail.com self.load('session_inactive') 214977Smax.romanov@gmail.com 2151088Szelenkov@nginx.com resp = self.get(headers={ 2161088Szelenkov@nginx.com 'X-Interval': '1', 2171088Szelenkov@nginx.com 'Host': 'localhost', 2181088Szelenkov@nginx.com 'Connection': 'close', 2191088Szelenkov@nginx.com }) 220977Smax.romanov@gmail.com session_id = resp['headers']['X-Session-Id'] 221977Smax.romanov@gmail.com 222977Smax.romanov@gmail.com time.sleep(3) 223977Smax.romanov@gmail.com 2241017Szelenkov@nginx.com resp = self.get( 2251017Szelenkov@nginx.com headers={ 2261017Szelenkov@nginx.com 'Host': 'localhost', 2271017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 2281017Szelenkov@nginx.com 'Connection': 'close', 2291017Szelenkov@nginx.com } 2301017Szelenkov@nginx.com ) 231977Smax.romanov@gmail.com 2321017Szelenkov@nginx.com self.assertNotEqual( 2331017Szelenkov@nginx.com resp['headers']['X-Session-Id'], session_id, 'session inactive' 2341017Szelenkov@nginx.com ) 235977Smax.romanov@gmail.com 236977Smax.romanov@gmail.com def test_java_application_session_invalidate(self): 237977Smax.romanov@gmail.com self.load('session_invalidate') 238977Smax.romanov@gmail.com 239977Smax.romanov@gmail.com resp = self.get() 240977Smax.romanov@gmail.com session_id = resp['headers']['X-Session-Id'] 241977Smax.romanov@gmail.com 2421017Szelenkov@nginx.com resp = self.get( 2431017Szelenkov@nginx.com headers={ 2441017Szelenkov@nginx.com 'Host': 'localhost', 2451017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 2461017Szelenkov@nginx.com 'Connection': 'close', 2471017Szelenkov@nginx.com } 2481017Szelenkov@nginx.com ) 249977Smax.romanov@gmail.com 2501017Szelenkov@nginx.com self.assertNotEqual( 2511017Szelenkov@nginx.com resp['headers']['X-Session-Id'], session_id, 'session invalidate' 2521017Szelenkov@nginx.com ) 253977Smax.romanov@gmail.com 254977Smax.romanov@gmail.com def test_java_application_session_listeners(self): 255977Smax.romanov@gmail.com self.load('session_listeners') 256977Smax.romanov@gmail.com 257977Smax.romanov@gmail.com headers = self.get(url='/test?var1=val1')['headers'] 258977Smax.romanov@gmail.com session_id = headers['X-Session-Id'] 259977Smax.romanov@gmail.com 2601017Szelenkov@nginx.com self.assertEqual( 2611017Szelenkov@nginx.com headers['X-Session-Created'], session_id, 'session create' 2621017Szelenkov@nginx.com ) 2631017Szelenkov@nginx.com self.assertEqual(headers['X-Attr-Added'], 'var1=val1', 'attribute add') 264977Smax.romanov@gmail.com 2651017Szelenkov@nginx.com headers = self.get( 2661017Szelenkov@nginx.com headers={ 2671017Szelenkov@nginx.com 'Host': 'localhost', 2681017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 2691017Szelenkov@nginx.com 'Connection': 'close', 2701017Szelenkov@nginx.com }, 2711017Szelenkov@nginx.com url='/?var1=val2', 2721017Szelenkov@nginx.com )['headers'] 273977Smax.romanov@gmail.com 2741017Szelenkov@nginx.com self.assertEqual( 2751017Szelenkov@nginx.com session_id, headers['X-Session-Id'], 'session same id' 2761017Szelenkov@nginx.com ) 2771017Szelenkov@nginx.com self.assertEqual( 2781017Szelenkov@nginx.com headers['X-Attr-Replaced'], 'var1=val1', 'attribute replace' 2791017Szelenkov@nginx.com ) 280977Smax.romanov@gmail.com 2811017Szelenkov@nginx.com headers = self.get( 2821017Szelenkov@nginx.com headers={ 2831017Szelenkov@nginx.com 'Host': 'localhost', 2841017Szelenkov@nginx.com 'Cookie': 'JSESSIONID=' + session_id, 2851017Szelenkov@nginx.com 'Connection': 'close', 2861017Szelenkov@nginx.com }, 2871017Szelenkov@nginx.com url='/', 2881017Szelenkov@nginx.com )['headers'] 289977Smax.romanov@gmail.com 2901017Szelenkov@nginx.com self.assertEqual( 2911017Szelenkov@nginx.com session_id, headers['X-Session-Id'], 'session same id' 2921017Szelenkov@nginx.com ) 2931017Szelenkov@nginx.com self.assertEqual( 2941017Szelenkov@nginx.com headers['X-Attr-Removed'], 'var1=val2', 'attribute remove' 2951017Szelenkov@nginx.com ) 296977Smax.romanov@gmail.com 297977Smax.romanov@gmail.com def test_java_application_jsp(self): 298977Smax.romanov@gmail.com self.load('jsp') 299977Smax.romanov@gmail.com 300977Smax.romanov@gmail.com headers = self.get(url='/index.jsp')['headers'] 301977Smax.romanov@gmail.com 302977Smax.romanov@gmail.com self.assertEqual(headers['X-Unit-JSP'], 'ok', 'JSP Ok header') 303977Smax.romanov@gmail.com 304977Smax.romanov@gmail.com def test_java_application_url_pattern(self): 305977Smax.romanov@gmail.com self.load('url_pattern') 306977Smax.romanov@gmail.com 307977Smax.romanov@gmail.com headers = self.get(url='/foo/bar/index.html')['headers'] 308977Smax.romanov@gmail.com 309977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet1', '#1 Servlet1 request') 3101017Szelenkov@nginx.com self.assertEqual( 3111017Szelenkov@nginx.com headers['X-Request-URI'], '/foo/bar/index.html', '#1 request URI' 3121017Szelenkov@nginx.com ) 3131017Szelenkov@nginx.com self.assertEqual( 3141017Szelenkov@nginx.com headers['X-Servlet-Path'], '/foo/bar', '#1 servlet path' 3151017Szelenkov@nginx.com ) 316977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], '/index.html', '#1 path info') 317977Smax.romanov@gmail.com 318977Smax.romanov@gmail.com headers = self.get(url='/foo/bar/index.bop')['headers'] 319977Smax.romanov@gmail.com 320977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet1', '#2 Servlet1 request') 3211017Szelenkov@nginx.com self.assertEqual( 3221017Szelenkov@nginx.com headers['X-Request-URI'], '/foo/bar/index.bop', '#2 request URI' 3231017Szelenkov@nginx.com ) 3241017Szelenkov@nginx.com self.assertEqual( 3251017Szelenkov@nginx.com headers['X-Servlet-Path'], '/foo/bar', '#2 servlet path' 3261017Szelenkov@nginx.com ) 327977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], '/index.bop', '#2 path info') 328977Smax.romanov@gmail.com 329977Smax.romanov@gmail.com headers = self.get(url='/baz')['headers'] 330977Smax.romanov@gmail.com 331977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet2', '#3 Servlet2 request') 332977Smax.romanov@gmail.com self.assertEqual(headers['X-Request-URI'], '/baz', '#3 request URI') 333977Smax.romanov@gmail.com self.assertEqual(headers['X-Servlet-Path'], '/baz', '#3 servlet path') 334977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#3 path info') 335977Smax.romanov@gmail.com 336977Smax.romanov@gmail.com headers = self.get(url='/baz/index.html')['headers'] 337977Smax.romanov@gmail.com 338977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet2', '#4 Servlet2 request') 3391017Szelenkov@nginx.com self.assertEqual( 3401017Szelenkov@nginx.com headers['X-Request-URI'], '/baz/index.html', '#4 request URI' 3411017Szelenkov@nginx.com ) 342977Smax.romanov@gmail.com self.assertEqual(headers['X-Servlet-Path'], '/baz', '#4 servlet path') 343977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], '/index.html', '#4 path info') 344977Smax.romanov@gmail.com 345977Smax.romanov@gmail.com headers = self.get(url='/catalog')['headers'] 346977Smax.romanov@gmail.com 347977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet3', '#5 Servlet3 request') 3481017Szelenkov@nginx.com self.assertEqual( 3491017Szelenkov@nginx.com headers['X-Request-URI'], '/catalog', '#5 request URI' 3501017Szelenkov@nginx.com ) 3511017Szelenkov@nginx.com self.assertEqual( 3521017Szelenkov@nginx.com headers['X-Servlet-Path'], '/catalog', '#5 servlet path' 3531017Szelenkov@nginx.com ) 354977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#5 path info') 355977Smax.romanov@gmail.com 356977Smax.romanov@gmail.com headers = self.get(url='/catalog/index.html')['headers'] 357977Smax.romanov@gmail.com 358977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'default', '#6 default request') 3591017Szelenkov@nginx.com self.assertEqual( 3601017Szelenkov@nginx.com headers['X-Request-URI'], '/catalog/index.html', '#6 request URI' 3611017Szelenkov@nginx.com ) 3621017Szelenkov@nginx.com self.assertEqual( 3631017Szelenkov@nginx.com headers['X-Servlet-Path'], '/catalog/index.html', '#6 servlet path' 3641017Szelenkov@nginx.com ) 365977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#6 path info') 366977Smax.romanov@gmail.com 367977Smax.romanov@gmail.com headers = self.get(url='/catalog/racecar.bop')['headers'] 368977Smax.romanov@gmail.com 369977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet4', '#7 servlet4 request') 3701017Szelenkov@nginx.com self.assertEqual( 3711017Szelenkov@nginx.com headers['X-Request-URI'], '/catalog/racecar.bop', '#7 request URI' 3721017Szelenkov@nginx.com ) 3731017Szelenkov@nginx.com self.assertEqual( 3741017Szelenkov@nginx.com headers['X-Servlet-Path'], 3751017Szelenkov@nginx.com '/catalog/racecar.bop', 3761017Szelenkov@nginx.com '#7 servlet path', 3771017Szelenkov@nginx.com ) 378977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#7 path info') 379977Smax.romanov@gmail.com 3801017Szelenkov@nginx.com headers = self.get(url='/index.bop')['headers'] 381977Smax.romanov@gmail.com 382977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet4', '#8 servlet4 request') 3831017Szelenkov@nginx.com self.assertEqual( 3841017Szelenkov@nginx.com headers['X-Request-URI'], '/index.bop', '#8 request URI' 3851017Szelenkov@nginx.com ) 3861017Szelenkov@nginx.com self.assertEqual( 3871017Szelenkov@nginx.com headers['X-Servlet-Path'], '/index.bop', '#8 servlet path' 3881017Szelenkov@nginx.com ) 389977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#8 path info') 390977Smax.romanov@gmail.com 391977Smax.romanov@gmail.com headers = self.get(url='/foo/baz')['headers'] 392977Smax.romanov@gmail.com 393977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'servlet0', '#9 servlet0 request') 3941017Szelenkov@nginx.com self.assertEqual( 3951017Szelenkov@nginx.com headers['X-Request-URI'], '/foo/baz', '#9 request URI' 3961017Szelenkov@nginx.com ) 397977Smax.romanov@gmail.com self.assertEqual(headers['X-Servlet-Path'], '/foo', '#9 servlet path') 398977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], '/baz', '#9 path info') 399977Smax.romanov@gmail.com 400977Smax.romanov@gmail.com headers = self.get()['headers'] 401977Smax.romanov@gmail.com 402977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'default', '#10 default request') 403977Smax.romanov@gmail.com self.assertEqual(headers['X-Request-URI'], '/', '#10 request URI') 404977Smax.romanov@gmail.com self.assertEqual(headers['X-Servlet-Path'], '/', '#10 servlet path') 405977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#10 path info') 406977Smax.romanov@gmail.com 407977Smax.romanov@gmail.com headers = self.get(url='/index.bop/')['headers'] 408977Smax.romanov@gmail.com 409977Smax.romanov@gmail.com self.assertEqual(headers['X-Id'], 'default', '#11 default request') 4101017Szelenkov@nginx.com self.assertEqual( 4111017Szelenkov@nginx.com headers['X-Request-URI'], '/index.bop/', '#11 request URI' 4121017Szelenkov@nginx.com ) 4131017Szelenkov@nginx.com self.assertEqual( 4141017Szelenkov@nginx.com headers['X-Servlet-Path'], '/index.bop/', '#11 servlet path' 4151017Szelenkov@nginx.com ) 416977Smax.romanov@gmail.com self.assertEqual(headers['X-Path-Info'], 'null', '#11 path info') 417977Smax.romanov@gmail.com 418977Smax.romanov@gmail.com def test_java_application_header(self): 419977Smax.romanov@gmail.com self.load('header') 420977Smax.romanov@gmail.com 421977Smax.romanov@gmail.com headers = self.get()['headers'] 422977Smax.romanov@gmail.com 4231017Szelenkov@nginx.com self.assertEqual( 4241017Szelenkov@nginx.com headers['X-Set-Utf8-Value'], '????', 'set Utf8 header value' 4251017Szelenkov@nginx.com ) 4261017Szelenkov@nginx.com self.assertEqual( 4271017Szelenkov@nginx.com headers['X-Set-Utf8-Name-???'], 'x', 'set Utf8 header name' 4281017Szelenkov@nginx.com ) 4291017Szelenkov@nginx.com self.assertEqual( 4301017Szelenkov@nginx.com headers['X-Add-Utf8-Value'], '????', 'add Utf8 header value' 4311017Szelenkov@nginx.com ) 4321017Szelenkov@nginx.com self.assertEqual( 4331017Szelenkov@nginx.com headers['X-Add-Utf8-Name-???'], 'y', 'add Utf8 header name' 4341017Szelenkov@nginx.com ) 435977Smax.romanov@gmail.com self.assertEqual(headers['X-Add-Test'], 'v1', 'add null header') 436977Smax.romanov@gmail.com self.assertEqual('X-Set-Test1' in headers, False, 'set null header') 437977Smax.romanov@gmail.com self.assertEqual(headers['X-Set-Test2'], '', 'set empty header') 438977Smax.romanov@gmail.com 439977Smax.romanov@gmail.com def test_java_application_content_type(self): 440977Smax.romanov@gmail.com self.load('content_type') 441977Smax.romanov@gmail.com 442977Smax.romanov@gmail.com headers = self.get(url='/1')['headers'] 443977Smax.romanov@gmail.com 4441017Szelenkov@nginx.com self.assertEqual( 4451017Szelenkov@nginx.com headers['Content-Type'], 4461017Szelenkov@nginx.com 'text/plain;charset=utf-8', 4471017Szelenkov@nginx.com '#1 Content-Type header', 4481017Szelenkov@nginx.com ) 4491017Szelenkov@nginx.com self.assertEqual( 4501017Szelenkov@nginx.com headers['X-Content-Type'], 4511017Szelenkov@nginx.com 'text/plain;charset=utf-8', 4521017Szelenkov@nginx.com '#1 response Content-Type', 4531017Szelenkov@nginx.com ) 4541017Szelenkov@nginx.com self.assertEqual( 4551017Szelenkov@nginx.com headers['X-Character-Encoding'], 'utf-8', '#1 response charset' 4561017Szelenkov@nginx.com ) 457977Smax.romanov@gmail.com 458977Smax.romanov@gmail.com headers = self.get(url='/2')['headers'] 459977Smax.romanov@gmail.com 4601017Szelenkov@nginx.com self.assertEqual( 4611017Szelenkov@nginx.com headers['Content-Type'], 4621017Szelenkov@nginx.com 'text/plain;charset=iso-8859-1', 4631017Szelenkov@nginx.com '#2 Content-Type header', 4641017Szelenkov@nginx.com ) 4651017Szelenkov@nginx.com self.assertEqual( 4661017Szelenkov@nginx.com headers['X-Content-Type'], 4671017Szelenkov@nginx.com 'text/plain;charset=iso-8859-1', 4681017Szelenkov@nginx.com '#2 response Content-Type', 4691017Szelenkov@nginx.com ) 4701017Szelenkov@nginx.com self.assertEqual( 4711017Szelenkov@nginx.com headers['X-Character-Encoding'], 4721017Szelenkov@nginx.com 'iso-8859-1', 4731017Szelenkov@nginx.com '#2 response charset', 4741017Szelenkov@nginx.com ) 475977Smax.romanov@gmail.com 476977Smax.romanov@gmail.com headers = self.get(url='/3')['headers'] 477977Smax.romanov@gmail.com 4781017Szelenkov@nginx.com self.assertEqual( 4791017Szelenkov@nginx.com headers['Content-Type'], 4801017Szelenkov@nginx.com 'text/plain;charset=windows-1251', 4811017Szelenkov@nginx.com '#3 Content-Type header', 4821017Szelenkov@nginx.com ) 4831017Szelenkov@nginx.com self.assertEqual( 4841017Szelenkov@nginx.com headers['X-Content-Type'], 4851017Szelenkov@nginx.com 'text/plain;charset=windows-1251', 4861017Szelenkov@nginx.com '#3 response Content-Type', 4871017Szelenkov@nginx.com ) 4881017Szelenkov@nginx.com self.assertEqual( 4891017Szelenkov@nginx.com headers['X-Character-Encoding'], 4901017Szelenkov@nginx.com 'windows-1251', 4911017Szelenkov@nginx.com '#3 response charset', 4921017Szelenkov@nginx.com ) 493977Smax.romanov@gmail.com 494977Smax.romanov@gmail.com headers = self.get(url='/4')['headers'] 495977Smax.romanov@gmail.com 4961017Szelenkov@nginx.com self.assertEqual( 4971017Szelenkov@nginx.com headers['Content-Type'], 4981017Szelenkov@nginx.com 'text/plain;charset=windows-1251', 4991017Szelenkov@nginx.com '#4 Content-Type header', 5001017Szelenkov@nginx.com ) 5011017Szelenkov@nginx.com self.assertEqual( 5021017Szelenkov@nginx.com headers['X-Content-Type'], 5031017Szelenkov@nginx.com 'text/plain;charset=windows-1251', 5041017Szelenkov@nginx.com '#4 response Content-Type', 5051017Szelenkov@nginx.com ) 5061017Szelenkov@nginx.com self.assertEqual( 5071017Szelenkov@nginx.com headers['X-Character-Encoding'], 5081017Szelenkov@nginx.com 'windows-1251', 5091017Szelenkov@nginx.com '#4 response charset', 5101017Szelenkov@nginx.com ) 511977Smax.romanov@gmail.com 512977Smax.romanov@gmail.com headers = self.get(url='/5')['headers'] 513977Smax.romanov@gmail.com 5141017Szelenkov@nginx.com self.assertEqual( 5151017Szelenkov@nginx.com headers['Content-Type'], 5161017Szelenkov@nginx.com 'text/plain;charset=iso-8859-1', 5171017Szelenkov@nginx.com '#5 Content-Type header', 5181017Szelenkov@nginx.com ) 5191017Szelenkov@nginx.com self.assertEqual( 5201017Szelenkov@nginx.com headers['X-Content-Type'], 5211017Szelenkov@nginx.com 'text/plain;charset=iso-8859-1', 5221017Szelenkov@nginx.com '#5 response Content-Type', 5231017Szelenkov@nginx.com ) 5241017Szelenkov@nginx.com self.assertEqual( 5251017Szelenkov@nginx.com headers['X-Character-Encoding'], 5261017Szelenkov@nginx.com 'iso-8859-1', 5271017Szelenkov@nginx.com '#5 response charset', 5281017Szelenkov@nginx.com ) 529977Smax.romanov@gmail.com 530977Smax.romanov@gmail.com headers = self.get(url='/6')['headers'] 531977Smax.romanov@gmail.com 5321017Szelenkov@nginx.com self.assertEqual( 5331017Szelenkov@nginx.com 'Content-Type' in headers, False, '#6 no Content-Type header' 5341017Szelenkov@nginx.com ) 5351017Szelenkov@nginx.com self.assertEqual( 5361017Szelenkov@nginx.com 'X-Content-Type' in headers, False, '#6 no response Content-Type' 5371017Szelenkov@nginx.com ) 5381017Szelenkov@nginx.com self.assertEqual( 5391017Szelenkov@nginx.com headers['X-Character-Encoding'], 'utf-8', '#6 response charset' 5401017Szelenkov@nginx.com ) 541977Smax.romanov@gmail.com 542977Smax.romanov@gmail.com headers = self.get(url='/7')['headers'] 543977Smax.romanov@gmail.com 5441017Szelenkov@nginx.com self.assertEqual( 5451017Szelenkov@nginx.com headers['Content-Type'], 5461017Szelenkov@nginx.com 'text/plain;charset=utf-8', 5471017Szelenkov@nginx.com '#7 Content-Type header', 5481017Szelenkov@nginx.com ) 5491017Szelenkov@nginx.com self.assertEqual( 5501017Szelenkov@nginx.com headers['X-Content-Type'], 5511017Szelenkov@nginx.com 'text/plain;charset=utf-8', 5521017Szelenkov@nginx.com '#7 response Content-Type', 5531017Szelenkov@nginx.com ) 5541017Szelenkov@nginx.com self.assertEqual( 5551017Szelenkov@nginx.com headers['X-Character-Encoding'], 'utf-8', '#7 response charset' 5561017Szelenkov@nginx.com ) 557977Smax.romanov@gmail.com 558977Smax.romanov@gmail.com headers = self.get(url='/8')['headers'] 559977Smax.romanov@gmail.com 5601017Szelenkov@nginx.com self.assertEqual( 5611017Szelenkov@nginx.com headers['Content-Type'], 5621017Szelenkov@nginx.com 'text/html;charset=utf-8', 5631017Szelenkov@nginx.com '#8 Content-Type header', 5641017Szelenkov@nginx.com ) 5651017Szelenkov@nginx.com self.assertEqual( 5661017Szelenkov@nginx.com headers['X-Content-Type'], 5671017Szelenkov@nginx.com 'text/html;charset=utf-8', 5681017Szelenkov@nginx.com '#8 response Content-Type', 5691017Szelenkov@nginx.com ) 5701017Szelenkov@nginx.com self.assertEqual( 5711017Szelenkov@nginx.com headers['X-Character-Encoding'], 'utf-8', '#8 response charset' 5721017Szelenkov@nginx.com ) 573977Smax.romanov@gmail.com 574977Smax.romanov@gmail.com def test_java_application_welcome_files(self): 575977Smax.romanov@gmail.com self.load('welcome_files') 576977Smax.romanov@gmail.com 577977Smax.romanov@gmail.com headers = self.get()['headers'] 578977Smax.romanov@gmail.com 579977Smax.romanov@gmail.com resp = self.get(url='/dir1') 580977Smax.romanov@gmail.com 581977Smax.romanov@gmail.com self.assertEqual(resp['status'], 302, 'dir redirect expected') 582977Smax.romanov@gmail.com 583977Smax.romanov@gmail.com resp = self.get(url='/dir1/') 584977Smax.romanov@gmail.com 5851017Szelenkov@nginx.com self.assertEqual( 5861017Szelenkov@nginx.com 'This is index.txt.' in resp['body'], True, 'dir1 index body' 5871017Szelenkov@nginx.com ) 5881017Szelenkov@nginx.com self.assertEqual( 5891017Szelenkov@nginx.com resp['headers']['X-TXT-Filter'], '1', 'TXT Filter header' 5901017Szelenkov@nginx.com ) 591977Smax.romanov@gmail.com 592977Smax.romanov@gmail.com headers = self.get(url='/dir2/')['headers'] 593977Smax.romanov@gmail.com 594977Smax.romanov@gmail.com self.assertEqual(headers['X-Unit-JSP'], 'ok', 'JSP Ok header') 595977Smax.romanov@gmail.com self.assertEqual(headers['X-JSP-Filter'], '1', 'JSP Filter header') 596977Smax.romanov@gmail.com 597977Smax.romanov@gmail.com headers = self.get(url='/dir3/')['headers'] 598977Smax.romanov@gmail.com 5991017Szelenkov@nginx.com self.assertEqual( 6001017Szelenkov@nginx.com headers['X-App-Servlet'], '1', 'URL pattern overrides welcome file' 6011017Szelenkov@nginx.com ) 602977Smax.romanov@gmail.com 603977Smax.romanov@gmail.com headers = self.get(url='/dir4/')['headers'] 604977Smax.romanov@gmail.com 6051017Szelenkov@nginx.com self.assertEqual( 6061017Szelenkov@nginx.com 'X-App-Servlet' in headers, 6071017Szelenkov@nginx.com False, 6081017Szelenkov@nginx.com 'Static welcome file served first', 6091017Szelenkov@nginx.com ) 610977Smax.romanov@gmail.com 611977Smax.romanov@gmail.com headers = self.get(url='/dir5/')['headers'] 612977Smax.romanov@gmail.com 6131017Szelenkov@nginx.com self.assertEqual( 6141017Szelenkov@nginx.com headers['X-App-Servlet'], 6151017Szelenkov@nginx.com '1', 6161017Szelenkov@nginx.com 'Servlet for welcome file served when no static file found', 6171017Szelenkov@nginx.com ) 618977Smax.romanov@gmail.com 619977Smax.romanov@gmail.com def test_java_application_request_listeners(self): 620977Smax.romanov@gmail.com self.load('request_listeners') 621977Smax.romanov@gmail.com 622977Smax.romanov@gmail.com headers = self.get(url='/test1')['headers'] 623977Smax.romanov@gmail.com 6241017Szelenkov@nginx.com self.assertEqual( 6251017Szelenkov@nginx.com headers['X-Request-Initialized'], 6261017Szelenkov@nginx.com '/test1', 6271017Szelenkov@nginx.com 'request initialized event', 6281017Szelenkov@nginx.com ) 6291017Szelenkov@nginx.com self.assertEqual( 6301017Szelenkov@nginx.com headers['X-Request-Destroyed'], '', 'request destroyed event' 6311017Szelenkov@nginx.com ) 6321017Szelenkov@nginx.com self.assertEqual(headers['X-Attr-Added'], '', 'attribute added event') 6331017Szelenkov@nginx.com self.assertEqual( 6341017Szelenkov@nginx.com headers['X-Attr-Removed'], '', 'attribute removed event' 6351017Szelenkov@nginx.com ) 6361017Szelenkov@nginx.com self.assertEqual( 6371017Szelenkov@nginx.com headers['X-Attr-Replaced'], '', 'attribute replaced event' 6381017Szelenkov@nginx.com ) 639977Smax.romanov@gmail.com 640977Smax.romanov@gmail.com headers = self.get(url='/test2?var1=1')['headers'] 641977Smax.romanov@gmail.com 6421017Szelenkov@nginx.com self.assertEqual( 6431017Szelenkov@nginx.com headers['X-Request-Initialized'], 6441017Szelenkov@nginx.com '/test2', 6451017Szelenkov@nginx.com 'request initialized event', 6461017Szelenkov@nginx.com ) 6471017Szelenkov@nginx.com self.assertEqual( 6481017Szelenkov@nginx.com headers['X-Request-Destroyed'], '/test1', 'request destroyed event' 6491017Szelenkov@nginx.com ) 6501017Szelenkov@nginx.com self.assertEqual( 6511017Szelenkov@nginx.com headers['X-Attr-Added'], 'var=1;', 'attribute added event' 6521017Szelenkov@nginx.com ) 6531017Szelenkov@nginx.com self.assertEqual( 6541017Szelenkov@nginx.com headers['X-Attr-Removed'], 'var=1;', 'attribute removed event' 6551017Szelenkov@nginx.com ) 6561017Szelenkov@nginx.com self.assertEqual( 6571017Szelenkov@nginx.com headers['X-Attr-Replaced'], '', 'attribute replaced event' 6581017Szelenkov@nginx.com ) 659977Smax.romanov@gmail.com 660977Smax.romanov@gmail.com headers = self.get(url='/test3?var1=1&var2=2')['headers'] 661977Smax.romanov@gmail.com 6621017Szelenkov@nginx.com self.assertEqual( 6631017Szelenkov@nginx.com headers['X-Request-Initialized'], 6641017Szelenkov@nginx.com '/test3', 6651017Szelenkov@nginx.com 'request initialized event', 6661017Szelenkov@nginx.com ) 6671017Szelenkov@nginx.com self.assertEqual( 6681017Szelenkov@nginx.com headers['X-Request-Destroyed'], '/test2', 'request destroyed event' 6691017Szelenkov@nginx.com ) 6701017Szelenkov@nginx.com self.assertEqual( 6711017Szelenkov@nginx.com headers['X-Attr-Added'], 'var=1;', 'attribute added event' 6721017Szelenkov@nginx.com ) 6731017Szelenkov@nginx.com self.assertEqual( 6741017Szelenkov@nginx.com headers['X-Attr-Removed'], 'var=2;', 'attribute removed event' 6751017Szelenkov@nginx.com ) 6761017Szelenkov@nginx.com self.assertEqual( 6771017Szelenkov@nginx.com headers['X-Attr-Replaced'], 'var=1;', 'attribute replaced event' 6781017Szelenkov@nginx.com ) 679977Smax.romanov@gmail.com 680977Smax.romanov@gmail.com headers = self.get(url='/test4?var1=1&var2=2&var3=3')['headers'] 681977Smax.romanov@gmail.com 6821017Szelenkov@nginx.com self.assertEqual( 6831017Szelenkov@nginx.com headers['X-Request-Initialized'], 6841017Szelenkov@nginx.com '/test4', 6851017Szelenkov@nginx.com 'request initialized event', 6861017Szelenkov@nginx.com ) 6871017Szelenkov@nginx.com self.assertEqual( 6881017Szelenkov@nginx.com headers['X-Request-Destroyed'], '/test3', 'request destroyed event' 6891017Szelenkov@nginx.com ) 6901017Szelenkov@nginx.com self.assertEqual( 6911017Szelenkov@nginx.com headers['X-Attr-Added'], 'var=1;', 'attribute added event' 6921017Szelenkov@nginx.com ) 6931017Szelenkov@nginx.com self.assertEqual( 6941017Szelenkov@nginx.com headers['X-Attr-Removed'], '', 'attribute removed event' 6951017Szelenkov@nginx.com ) 6961017Szelenkov@nginx.com self.assertEqual( 6971017Szelenkov@nginx.com headers['X-Attr-Replaced'], 6981017Szelenkov@nginx.com 'var=1;var=2;', 6991017Szelenkov@nginx.com 'attribute replaced event', 7001017Szelenkov@nginx.com ) 701977Smax.romanov@gmail.com 702977Smax.romanov@gmail.com def test_java_application_request_uri_forward(self): 703977Smax.romanov@gmail.com self.load('forward') 704977Smax.romanov@gmail.com 7051017Szelenkov@nginx.com resp = self.get( 7061017Szelenkov@nginx.com url='/fwd?uri=%2Fdata%2Ftest%3Furi%3Dnew_uri%26a%3D2%26b%3D3&a=1&c=4' 7071017Szelenkov@nginx.com ) 708977Smax.romanov@gmail.com headers = resp['headers'] 709977Smax.romanov@gmail.com 7101017Szelenkov@nginx.com self.assertEqual( 7111017Szelenkov@nginx.com headers['X-REQUEST-Id'], 'fwd', 'initial request servlet mapping' 7121017Szelenkov@nginx.com ) 7131017Szelenkov@nginx.com self.assertEqual( 7141017Szelenkov@nginx.com headers['X-Forward-To'], 7151017Szelenkov@nginx.com '/data/test?uri=new_uri&a=2&b=3', 7161017Szelenkov@nginx.com 'forwarding triggered', 7171017Szelenkov@nginx.com ) 7181017Szelenkov@nginx.com self.assertEqual( 7191017Szelenkov@nginx.com headers['X-REQUEST-Param-uri'], 7201017Szelenkov@nginx.com '/data/test?uri=new_uri&a=2&b=3', 7211017Szelenkov@nginx.com 'original uri parameter', 7221017Szelenkov@nginx.com ) 7231017Szelenkov@nginx.com self.assertEqual( 7241017Szelenkov@nginx.com headers['X-REQUEST-Param-a'], '1', 'original a parameter' 7251017Szelenkov@nginx.com ) 7261017Szelenkov@nginx.com self.assertEqual( 7271017Szelenkov@nginx.com headers['X-REQUEST-Param-c'], '4', 'original c parameter' 7281017Szelenkov@nginx.com ) 729977Smax.romanov@gmail.com 7301017Szelenkov@nginx.com self.assertEqual( 7311017Szelenkov@nginx.com headers['X-FORWARD-Id'], 'data', 'forward request servlet mapping' 7321017Szelenkov@nginx.com ) 7331017Szelenkov@nginx.com self.assertEqual( 7341017Szelenkov@nginx.com headers['X-FORWARD-Request-URI'], 7351017Szelenkov@nginx.com '/data/test', 7361017Szelenkov@nginx.com 'forward request uri', 7371017Szelenkov@nginx.com ) 7381017Szelenkov@nginx.com self.assertEqual( 7391017Szelenkov@nginx.com headers['X-FORWARD-Servlet-Path'], 7401017Szelenkov@nginx.com '/data', 7411017Szelenkov@nginx.com 'forward request servlet path', 7421017Szelenkov@nginx.com ) 7431017Szelenkov@nginx.com self.assertEqual( 7441017Szelenkov@nginx.com headers['X-FORWARD-Path-Info'], 7451017Szelenkov@nginx.com '/test', 7461017Szelenkov@nginx.com 'forward request path info', 7471017Szelenkov@nginx.com ) 7481017Szelenkov@nginx.com self.assertEqual( 7491017Szelenkov@nginx.com headers['X-FORWARD-Query-String'], 7501017Szelenkov@nginx.com 'uri=new_uri&a=2&b=3', 7511017Szelenkov@nginx.com 'forward request query string', 7521017Szelenkov@nginx.com ) 7531017Szelenkov@nginx.com self.assertEqual( 7541017Szelenkov@nginx.com headers['X-FORWARD-Param-uri'], 7551017Szelenkov@nginx.com 'new_uri,/data/test?uri=new_uri&a=2&b=3', 7561017Szelenkov@nginx.com 'forward uri parameter', 7571017Szelenkov@nginx.com ) 7581017Szelenkov@nginx.com self.assertEqual( 7591017Szelenkov@nginx.com headers['X-FORWARD-Param-a'], '2,1', 'forward a parameter' 7601017Szelenkov@nginx.com ) 7611017Szelenkov@nginx.com self.assertEqual( 7621017Szelenkov@nginx.com headers['X-FORWARD-Param-b'], '3', 'forward b parameter' 7631017Szelenkov@nginx.com ) 7641017Szelenkov@nginx.com self.assertEqual( 7651017Szelenkov@nginx.com headers['X-FORWARD-Param-c'], '4', 'forward c parameter' 7661017Szelenkov@nginx.com ) 767977Smax.romanov@gmail.com 7681017Szelenkov@nginx.com self.assertEqual( 7691017Szelenkov@nginx.com headers['X-javax.servlet.forward.request_uri'], 7701017Szelenkov@nginx.com '/fwd', 7711017Szelenkov@nginx.com 'original request uri', 7721017Szelenkov@nginx.com ) 7731017Szelenkov@nginx.com self.assertEqual( 7741017Szelenkov@nginx.com headers['X-javax.servlet.forward.context_path'], 7751017Szelenkov@nginx.com '', 7761017Szelenkov@nginx.com 'original request context path', 7771017Szelenkov@nginx.com ) 7781017Szelenkov@nginx.com self.assertEqual( 7791017Szelenkov@nginx.com headers['X-javax.servlet.forward.servlet_path'], 7801017Szelenkov@nginx.com '/fwd', 7811017Szelenkov@nginx.com 'original request servlet path', 7821017Szelenkov@nginx.com ) 7831017Szelenkov@nginx.com self.assertEqual( 7841017Szelenkov@nginx.com headers['X-javax.servlet.forward.path_info'], 7851017Szelenkov@nginx.com 'null', 7861017Szelenkov@nginx.com 'original request path info', 7871017Szelenkov@nginx.com ) 7881017Szelenkov@nginx.com self.assertEqual( 7891017Szelenkov@nginx.com headers['X-javax.servlet.forward.query_string'], 7901017Szelenkov@nginx.com 'uri=%2Fdata%2Ftest%3Furi%3Dnew_uri%26a%3D2%26b%3D3&a=1&c=4', 7911017Szelenkov@nginx.com 'original request query', 7921017Szelenkov@nginx.com ) 793977Smax.romanov@gmail.com 7941017Szelenkov@nginx.com self.assertEqual( 7951017Szelenkov@nginx.com 'Before forwarding' in resp['body'], 7961017Szelenkov@nginx.com False, 7971017Szelenkov@nginx.com 'discarded data added before forward() call', 7981017Szelenkov@nginx.com ) 7991017Szelenkov@nginx.com self.assertEqual( 8001017Szelenkov@nginx.com 'X-After-Forwarding' in headers, 8011017Szelenkov@nginx.com False, 8021017Szelenkov@nginx.com 'cannot add headers after forward() call', 8031017Szelenkov@nginx.com ) 8041017Szelenkov@nginx.com self.assertEqual( 8051017Szelenkov@nginx.com 'After forwarding' in resp['body'], 8061017Szelenkov@nginx.com False, 8071017Szelenkov@nginx.com 'cannot add data after forward() call', 8081017Szelenkov@nginx.com ) 809977Smax.romanov@gmail.com 810977Smax.romanov@gmail.com def test_java_application_named_dispatcher_forward(self): 811977Smax.romanov@gmail.com self.load('forward') 812977Smax.romanov@gmail.com 813977Smax.romanov@gmail.com resp = self.get(url='/fwd?disp=name&uri=data') 814977Smax.romanov@gmail.com headers = resp['headers'] 815977Smax.romanov@gmail.com 8161017Szelenkov@nginx.com self.assertEqual( 8171017Szelenkov@nginx.com headers['X-REQUEST-Id'], 'fwd', 'initial request servlet mapping' 8181017Szelenkov@nginx.com ) 8191017Szelenkov@nginx.com self.assertEqual( 8201017Szelenkov@nginx.com headers['X-Forward-To'], 'data', 'forwarding triggered' 8211017Szelenkov@nginx.com ) 822977Smax.romanov@gmail.com 8231017Szelenkov@nginx.com self.assertEqual( 8241017Szelenkov@nginx.com headers['X-FORWARD-Id'], 'data', 'forward request servlet mapping' 8251017Szelenkov@nginx.com ) 8261017Szelenkov@nginx.com self.assertEqual( 8271017Szelenkov@nginx.com headers['X-FORWARD-Request-URI'], '/fwd', 'forward request uri' 8281017Szelenkov@nginx.com ) 8291017Szelenkov@nginx.com self.assertEqual( 8301017Szelenkov@nginx.com headers['X-FORWARD-Servlet-Path'], 8311017Szelenkov@nginx.com '/fwd', 8321017Szelenkov@nginx.com 'forward request servlet path', 8331017Szelenkov@nginx.com ) 8341017Szelenkov@nginx.com self.assertEqual( 8351017Szelenkov@nginx.com headers['X-FORWARD-Path-Info'], 'null', 'forward request path info' 8361017Szelenkov@nginx.com ) 8371017Szelenkov@nginx.com self.assertEqual( 8381017Szelenkov@nginx.com headers['X-FORWARD-Query-String'], 8391017Szelenkov@nginx.com 'disp=name&uri=data', 8401017Szelenkov@nginx.com 'forward request query string', 8411017Szelenkov@nginx.com ) 842977Smax.romanov@gmail.com 8431017Szelenkov@nginx.com self.assertEqual( 8441017Szelenkov@nginx.com headers['X-javax.servlet.forward.request_uri'], 8451017Szelenkov@nginx.com 'null', 8461017Szelenkov@nginx.com 'original request uri', 8471017Szelenkov@nginx.com ) 8481017Szelenkov@nginx.com self.assertEqual( 8491017Szelenkov@nginx.com headers['X-javax.servlet.forward.context_path'], 8501017Szelenkov@nginx.com 'null', 8511017Szelenkov@nginx.com 'original request context path', 8521017Szelenkov@nginx.com ) 8531017Szelenkov@nginx.com self.assertEqual( 8541017Szelenkov@nginx.com headers['X-javax.servlet.forward.servlet_path'], 8551017Szelenkov@nginx.com 'null', 8561017Szelenkov@nginx.com 'original request servlet path', 8571017Szelenkov@nginx.com ) 8581017Szelenkov@nginx.com self.assertEqual( 8591017Szelenkov@nginx.com headers['X-javax.servlet.forward.path_info'], 8601017Szelenkov@nginx.com 'null', 8611017Szelenkov@nginx.com 'original request path info', 8621017Szelenkov@nginx.com ) 8631017Szelenkov@nginx.com self.assertEqual( 8641017Szelenkov@nginx.com headers['X-javax.servlet.forward.query_string'], 8651017Szelenkov@nginx.com 'null', 8661017Szelenkov@nginx.com 'original request query', 8671017Szelenkov@nginx.com ) 868977Smax.romanov@gmail.com 8691017Szelenkov@nginx.com self.assertEqual( 8701017Szelenkov@nginx.com 'Before forwarding' in resp['body'], 8711017Szelenkov@nginx.com False, 8721017Szelenkov@nginx.com 'discarded data added before forward() call', 8731017Szelenkov@nginx.com ) 8741017Szelenkov@nginx.com self.assertEqual( 8751017Szelenkov@nginx.com 'X-After-Forwarding' in headers, 8761017Szelenkov@nginx.com False, 8771017Szelenkov@nginx.com 'cannot add headers after forward() call', 8781017Szelenkov@nginx.com ) 8791017Szelenkov@nginx.com self.assertEqual( 8801017Szelenkov@nginx.com 'After forwarding' in resp['body'], 8811017Szelenkov@nginx.com False, 8821017Szelenkov@nginx.com 'cannot add data after forward() call', 8831017Szelenkov@nginx.com ) 884977Smax.romanov@gmail.com 885977Smax.romanov@gmail.com def test_java_application_request_uri_include(self): 886977Smax.romanov@gmail.com self.load('include') 887977Smax.romanov@gmail.com 888977Smax.romanov@gmail.com resp = self.get(url='/inc?uri=/data/test') 889977Smax.romanov@gmail.com headers = resp['headers'] 890977Smax.romanov@gmail.com body = resp['body'] 891977Smax.romanov@gmail.com 8921017Szelenkov@nginx.com self.assertEqual( 8931017Szelenkov@nginx.com headers['X-REQUEST-Id'], 'inc', 'initial request servlet mapping' 8941017Szelenkov@nginx.com ) 8951017Szelenkov@nginx.com self.assertEqual( 8961017Szelenkov@nginx.com headers['X-Include'], '/data/test', 'including triggered' 8971017Szelenkov@nginx.com ) 898977Smax.romanov@gmail.com 8991017Szelenkov@nginx.com self.assertEqual( 9001017Szelenkov@nginx.com 'X-INCLUDE-Id' in headers, 9011017Szelenkov@nginx.com False, 9021017Szelenkov@nginx.com 'unable to add headers in include request', 9031017Szelenkov@nginx.com ) 904977Smax.romanov@gmail.com 9051017Szelenkov@nginx.com self.assertEqual( 9061017Szelenkov@nginx.com 'javax.servlet.include.request_uri: /data/test' in body, 9071017Szelenkov@nginx.com True, 9081017Szelenkov@nginx.com 'include request uri', 9091017Szelenkov@nginx.com ) 9101017Szelenkov@nginx.com # self.assertEqual('javax.servlet.include.context_path: ' in body, 9111017Szelenkov@nginx.com # 'include request context path') 9121017Szelenkov@nginx.com self.assertEqual( 9131017Szelenkov@nginx.com 'javax.servlet.include.servlet_path: /data' in body, 9141017Szelenkov@nginx.com True, 9151017Szelenkov@nginx.com 'include request servlet path', 9161017Szelenkov@nginx.com ) 9171017Szelenkov@nginx.com self.assertEqual( 9181017Szelenkov@nginx.com 'javax.servlet.include.path_info: /test' in body, 9191017Szelenkov@nginx.com True, 9201017Szelenkov@nginx.com 'include request path info', 9211017Szelenkov@nginx.com ) 9221017Szelenkov@nginx.com self.assertEqual( 9231017Szelenkov@nginx.com 'javax.servlet.include.query_string: null' in body, 9241017Szelenkov@nginx.com True, 9251017Szelenkov@nginx.com 'include request query', 9261017Szelenkov@nginx.com ) 927977Smax.romanov@gmail.com 9281017Szelenkov@nginx.com self.assertEqual( 9291017Szelenkov@nginx.com 'Before include' in body, 9301017Szelenkov@nginx.com True, 9311017Szelenkov@nginx.com 'preserve data added before include() call', 9321017Szelenkov@nginx.com ) 9331017Szelenkov@nginx.com self.assertEqual( 9341017Szelenkov@nginx.com headers['X-After-Include'], 9351017Szelenkov@nginx.com 'you-should-see-this', 9361017Szelenkov@nginx.com 'add headers after include() call', 9371017Szelenkov@nginx.com ) 9381017Szelenkov@nginx.com self.assertEqual( 9391017Szelenkov@nginx.com 'After include' in body, True, 'add data after include() call' 9401017Szelenkov@nginx.com ) 941977Smax.romanov@gmail.com 942977Smax.romanov@gmail.com def test_java_application_named_dispatcher_include(self): 943977Smax.romanov@gmail.com self.load('include') 944977Smax.romanov@gmail.com 945977Smax.romanov@gmail.com resp = self.get(url='/inc?disp=name&uri=data') 946977Smax.romanov@gmail.com headers = resp['headers'] 947977Smax.romanov@gmail.com body = resp['body'] 948977Smax.romanov@gmail.com 9491017Szelenkov@nginx.com self.assertEqual( 9501017Szelenkov@nginx.com headers['X-REQUEST-Id'], 'inc', 'initial request servlet mapping' 9511017Szelenkov@nginx.com ) 9521017Szelenkov@nginx.com self.assertEqual(headers['X-Include'], 'data', 'including triggered') 953977Smax.romanov@gmail.com 9541017Szelenkov@nginx.com self.assertEqual( 9551017Szelenkov@nginx.com 'X-INCLUDE-Id' in headers, 9561017Szelenkov@nginx.com False, 9571017Szelenkov@nginx.com 'unable to add headers in include request', 9581017Szelenkov@nginx.com ) 959977Smax.romanov@gmail.com 9601017Szelenkov@nginx.com self.assertEqual( 9611017Szelenkov@nginx.com 'javax.servlet.include.request_uri: null' in body, 9621017Szelenkov@nginx.com True, 9631017Szelenkov@nginx.com 'include request uri', 9641017Szelenkov@nginx.com ) 9651017Szelenkov@nginx.com # self.assertEqual('javax.servlet.include.context_path: null' in body, 9661017Szelenkov@nginx.com # 'include request context path') 9671017Szelenkov@nginx.com self.assertEqual( 9681017Szelenkov@nginx.com 'javax.servlet.include.servlet_path: null' in body, 9691017Szelenkov@nginx.com True, 9701017Szelenkov@nginx.com 'include request servlet path', 9711017Szelenkov@nginx.com ) 9721017Szelenkov@nginx.com self.assertEqual( 9731017Szelenkov@nginx.com 'javax.servlet.include.path_info: null' in body, 9741017Szelenkov@nginx.com True, 9751017Szelenkov@nginx.com 'include request path info', 9761017Szelenkov@nginx.com ) 9771017Szelenkov@nginx.com self.assertEqual( 9781017Szelenkov@nginx.com 'javax.servlet.include.query_string: null' in body, 9791017Szelenkov@nginx.com True, 9801017Szelenkov@nginx.com 'include request query', 9811017Szelenkov@nginx.com ) 982977Smax.romanov@gmail.com 9831017Szelenkov@nginx.com self.assertEqual( 9841017Szelenkov@nginx.com 'Before include' in body, 9851017Szelenkov@nginx.com True, 9861017Szelenkov@nginx.com 'preserve data added before include() call', 9871017Szelenkov@nginx.com ) 9881017Szelenkov@nginx.com self.assertEqual( 9891017Szelenkov@nginx.com headers['X-After-Include'], 9901017Szelenkov@nginx.com 'you-should-see-this', 9911017Szelenkov@nginx.com 'add headers after include() call', 9921017Szelenkov@nginx.com ) 9931017Szelenkov@nginx.com self.assertEqual( 9941017Szelenkov@nginx.com 'After include' in body, True, 'add data after include() call' 9951017Szelenkov@nginx.com ) 996977Smax.romanov@gmail.com 997977Smax.romanov@gmail.com def test_java_application_path_translation(self): 998977Smax.romanov@gmail.com self.load('path_translation') 999977Smax.romanov@gmail.com 1000977Smax.romanov@gmail.com headers = self.get(url='/pt/test?path=/')['headers'] 1001977Smax.romanov@gmail.com 10021017Szelenkov@nginx.com self.assertEqual( 10031017Szelenkov@nginx.com headers['X-Servlet-Path'], '/pt', 'matched servlet path' 10041017Szelenkov@nginx.com ) 10051017Szelenkov@nginx.com self.assertEqual( 10061017Szelenkov@nginx.com headers['X-Path-Info'], '/test', 'the rest of the path' 10071017Szelenkov@nginx.com ) 10081017Szelenkov@nginx.com self.assertEqual( 10091017Szelenkov@nginx.com headers['X-Path-Translated'], 1010977Smax.romanov@gmail.com headers['X-Real-Path'] + headers['X-Path-Info'], 10111017Szelenkov@nginx.com 'translated path is the app root + path info', 10121017Szelenkov@nginx.com ) 1013977Smax.romanov@gmail.com self.assertEqual( 1014977Smax.romanov@gmail.com headers['X-Resource-Paths'].endswith('/WEB-INF/, /index.html]'), 10151017Szelenkov@nginx.com True, 10161017Szelenkov@nginx.com 'app root directory content', 10171017Szelenkov@nginx.com ) 10181017Szelenkov@nginx.com self.assertEqual( 10191017Szelenkov@nginx.com headers['X-Resource-As-Stream'], 10201017Szelenkov@nginx.com 'null', 10211017Szelenkov@nginx.com 'no resource stream for root path', 10221017Szelenkov@nginx.com ) 1023977Smax.romanov@gmail.com 1024977Smax.romanov@gmail.com headers = self.get(url='/test?path=/none')['headers'] 1025977Smax.romanov@gmail.com 10261017Szelenkov@nginx.com self.assertEqual( 10271017Szelenkov@nginx.com headers['X-Servlet-Path'], '/test', 'matched whole path' 10281017Szelenkov@nginx.com ) 10291017Szelenkov@nginx.com self.assertEqual( 10301017Szelenkov@nginx.com headers['X-Path-Info'], 10311017Szelenkov@nginx.com 'null', 10321017Szelenkov@nginx.com 'the rest of the path is null, whole path matched', 10331017Szelenkov@nginx.com ) 10341017Szelenkov@nginx.com self.assertEqual( 10351017Szelenkov@nginx.com headers['X-Path-Translated'], 10361017Szelenkov@nginx.com 'null', 10371017Szelenkov@nginx.com 'translated path is null because path info is null', 10381017Szelenkov@nginx.com ) 10391017Szelenkov@nginx.com self.assertEqual( 10401017Szelenkov@nginx.com headers['X-Real-Path'].endswith('/none'), 10411017Szelenkov@nginx.com True, 10421017Szelenkov@nginx.com 'read path is not null', 10431017Szelenkov@nginx.com ) 10441017Szelenkov@nginx.com self.assertEqual( 10451017Szelenkov@nginx.com headers['X-Resource-Paths'], 'null', 'no resource found' 10461017Szelenkov@nginx.com ) 10471017Szelenkov@nginx.com self.assertEqual( 10481017Szelenkov@nginx.com headers['X-Resource-As-Stream'], 'null', 'no resource stream' 10491017Szelenkov@nginx.com ) 1050977Smax.romanov@gmail.com 1051977Smax.romanov@gmail.com def test_java_application_query_string(self): 1052977Smax.romanov@gmail.com self.load('query_string') 1053977Smax.romanov@gmail.com 10541017Szelenkov@nginx.com self.assertEqual( 10551017Szelenkov@nginx.com self.get(url='/?a=b')['headers']['X-Query-String'], 10561017Szelenkov@nginx.com 'a=b', 10571017Szelenkov@nginx.com 'query string', 10581017Szelenkov@nginx.com ) 1059977Smax.romanov@gmail.com 1060977Smax.romanov@gmail.com def test_java_application_query_empty(self): 1061977Smax.romanov@gmail.com self.load('query_string') 1062977Smax.romanov@gmail.com 10631017Szelenkov@nginx.com self.assertEqual( 10641017Szelenkov@nginx.com self.get(url='/?')['headers']['X-Query-String'], 10651017Szelenkov@nginx.com '', 10661017Szelenkov@nginx.com 'query string empty', 10671017Szelenkov@nginx.com ) 1068977Smax.romanov@gmail.com 1069977Smax.romanov@gmail.com def test_java_application_query_absent(self): 1070977Smax.romanov@gmail.com self.load('query_string') 1071977Smax.romanov@gmail.com 10721017Szelenkov@nginx.com self.assertEqual( 10731017Szelenkov@nginx.com self.get()['headers']['X-Query-String'], 10741017Szelenkov@nginx.com 'null', 10751017Szelenkov@nginx.com 'query string absent', 10761017Szelenkov@nginx.com ) 1077977Smax.romanov@gmail.com 1078977Smax.romanov@gmail.com def test_java_application_empty(self): 1079977Smax.romanov@gmail.com self.load('empty') 1080977Smax.romanov@gmail.com 1081977Smax.romanov@gmail.com self.assertEqual(self.get()['status'], 200, 'empty') 1082977Smax.romanov@gmail.com 1083977Smax.romanov@gmail.com def test_java_application_keepalive_body(self): 1084977Smax.romanov@gmail.com self.load('mirror') 1085977Smax.romanov@gmail.com 10861029Szelenkov@nginx.com self.assertEqual(self.post()['status'], 200, 'init') 10871029Szelenkov@nginx.com 10881453Szelenkov@nginx.com body = '0123456789' * 500 10891017Szelenkov@nginx.com (resp, sock) = self.post( 10901017Szelenkov@nginx.com headers={ 10911017Szelenkov@nginx.com 'Connection': 'keep-alive', 10921017Szelenkov@nginx.com 'Content-Type': 'text/html', 10931017Szelenkov@nginx.com 'Host': 'localhost', 10941017Szelenkov@nginx.com }, 10951017Szelenkov@nginx.com start=True, 10961453Szelenkov@nginx.com body=body, 10971029Szelenkov@nginx.com read_timeout=1, 10981017Szelenkov@nginx.com ) 1099977Smax.romanov@gmail.com 11001453Szelenkov@nginx.com self.assertEqual(resp['body'], body, 'keep-alive 1') 1101977Smax.romanov@gmail.com 11021453Szelenkov@nginx.com body = '0123456789' 11031017Szelenkov@nginx.com resp = self.post( 11041017Szelenkov@nginx.com headers={ 11051017Szelenkov@nginx.com 'Connection': 'close', 11061017Szelenkov@nginx.com 'Content-Type': 'text/html', 11071017Szelenkov@nginx.com 'Host': 'localhost', 11081017Szelenkov@nginx.com }, 11091017Szelenkov@nginx.com sock=sock, 11101453Szelenkov@nginx.com body=body, 11111017Szelenkov@nginx.com ) 1112977Smax.romanov@gmail.com 11131453Szelenkov@nginx.com self.assertEqual(resp['body'], body, 'keep-alive 2') 1114977Smax.romanov@gmail.com 1115977Smax.romanov@gmail.com def test_java_application_http_10(self): 1116977Smax.romanov@gmail.com self.load('empty') 1117977Smax.romanov@gmail.com 1118977Smax.romanov@gmail.com self.assertEqual(self.get(http_10=True)['status'], 200, 'HTTP 1.0') 1119977Smax.romanov@gmail.com 1120977Smax.romanov@gmail.com def test_java_application_no_method(self): 1121977Smax.romanov@gmail.com self.load('empty') 1122977Smax.romanov@gmail.com 1123977Smax.romanov@gmail.com self.assertEqual(self.post()['status'], 405, 'no method') 1124977Smax.romanov@gmail.com 1125977Smax.romanov@gmail.com def test_java_application_get_header(self): 1126977Smax.romanov@gmail.com self.load('get_header') 1127977Smax.romanov@gmail.com 11281017Szelenkov@nginx.com self.assertEqual( 11291017Szelenkov@nginx.com self.get( 11301017Szelenkov@nginx.com headers={ 11311017Szelenkov@nginx.com 'X-Header': 'blah', 11321017Szelenkov@nginx.com 'Content-Type': 'text/html', 11331017Szelenkov@nginx.com 'Host': 'localhost', 11341018Szelenkov@nginx.com 'Connection': 'close', 11351017Szelenkov@nginx.com } 11361017Szelenkov@nginx.com )['headers']['X-Reply'], 11371017Szelenkov@nginx.com 'blah', 11381017Szelenkov@nginx.com 'get header', 11391017Szelenkov@nginx.com ) 1140977Smax.romanov@gmail.com 1141977Smax.romanov@gmail.com def test_java_application_get_header_empty(self): 1142977Smax.romanov@gmail.com self.load('get_header') 1143977Smax.romanov@gmail.com 1144977Smax.romanov@gmail.com self.assertNotIn('X-Reply', self.get()['headers'], 'get header empty') 1145977Smax.romanov@gmail.com 1146977Smax.romanov@gmail.com def test_java_application_get_headers(self): 1147977Smax.romanov@gmail.com self.load('get_headers') 1148977Smax.romanov@gmail.com 11491017Szelenkov@nginx.com headers = self.get( 11501017Szelenkov@nginx.com headers={ 11511017Szelenkov@nginx.com 'X-Header': ['blah', 'blah'], 11521017Szelenkov@nginx.com 'Content-Type': 'text/html', 11531017Szelenkov@nginx.com 'Host': 'localhost', 11541018Szelenkov@nginx.com 'Connection': 'close', 11551017Szelenkov@nginx.com } 11561017Szelenkov@nginx.com )['headers'] 1157977Smax.romanov@gmail.com 1158977Smax.romanov@gmail.com self.assertEqual(headers['X-Reply-0'], 'blah', 'get headers') 1159977Smax.romanov@gmail.com self.assertEqual(headers['X-Reply-1'], 'blah', 'get headers 2') 1160977Smax.romanov@gmail.com 1161977Smax.romanov@gmail.com def test_java_application_get_headers_empty(self): 1162977Smax.romanov@gmail.com self.load('get_headers') 1163977Smax.romanov@gmail.com 11641017Szelenkov@nginx.com self.assertNotIn( 11651017Szelenkov@nginx.com 'X-Reply-0', self.get()['headers'], 'get headers empty' 11661017Szelenkov@nginx.com ) 1167977Smax.romanov@gmail.com 1168977Smax.romanov@gmail.com def test_java_application_get_header_names(self): 1169977Smax.romanov@gmail.com self.load('get_header_names') 1170977Smax.romanov@gmail.com 1171977Smax.romanov@gmail.com headers = self.get()['headers'] 1172977Smax.romanov@gmail.com 11731017Szelenkov@nginx.com self.assertRegex( 11741017Szelenkov@nginx.com headers['X-Reply-0'], r'(?:Host|Connection)', 'get header names' 11751017Szelenkov@nginx.com ) 11761017Szelenkov@nginx.com self.assertRegex( 11771017Szelenkov@nginx.com headers['X-Reply-1'], r'(?:Host|Connection)', 'get header names 2' 11781017Szelenkov@nginx.com ) 11791017Szelenkov@nginx.com self.assertNotEqual( 11801017Szelenkov@nginx.com headers['X-Reply-0'], 11811017Szelenkov@nginx.com headers['X-Reply-1'], 11821017Szelenkov@nginx.com 'get header names not equal', 11831017Szelenkov@nginx.com ) 1184977Smax.romanov@gmail.com 1185977Smax.romanov@gmail.com def test_java_application_header_int(self): 1186977Smax.romanov@gmail.com self.load('header_int') 1187977Smax.romanov@gmail.com 11881017Szelenkov@nginx.com headers = self.get( 11891017Szelenkov@nginx.com headers={ 11901017Szelenkov@nginx.com 'X-Header': '2', 11911017Szelenkov@nginx.com 'Content-Type': 'text/html', 11921017Szelenkov@nginx.com 'Host': 'localhost', 11931018Szelenkov@nginx.com 'Connection': 'close', 11941017Szelenkov@nginx.com } 11951017Szelenkov@nginx.com )['headers'] 1196977Smax.romanov@gmail.com 1197977Smax.romanov@gmail.com self.assertEqual(headers['X-Set-Int'], '1', 'set int header') 1198977Smax.romanov@gmail.com self.assertEqual(headers['X-Get-Int'], '2', 'get int header') 1199977Smax.romanov@gmail.com 1200977Smax.romanov@gmail.com def test_java_application_header_date(self): 1201977Smax.romanov@gmail.com self.load('header_date') 1202977Smax.romanov@gmail.com 1203977Smax.romanov@gmail.com date = 'Fri, 15 Mar 2019 14:45:34 GMT' 1204977Smax.romanov@gmail.com 12051017Szelenkov@nginx.com headers = self.get( 12061017Szelenkov@nginx.com headers={ 12071017Szelenkov@nginx.com 'X-Header': date, 12081017Szelenkov@nginx.com 'Content-Type': 'text/html', 12091017Szelenkov@nginx.com 'Host': 'localhost', 12101018Szelenkov@nginx.com 'Connection': 'close', 12111017Szelenkov@nginx.com } 12121017Szelenkov@nginx.com )['headers'] 1213977Smax.romanov@gmail.com 12141017Szelenkov@nginx.com self.assertEqual( 12151017Szelenkov@nginx.com headers['X-Set-Date'], 12161017Szelenkov@nginx.com 'Thu, 01 Jan 1970 00:00:01 GMT', 12171017Szelenkov@nginx.com 'set date header', 12181017Szelenkov@nginx.com ) 1219977Smax.romanov@gmail.com self.assertEqual(headers['X-Get-Date'], date, 'get date header') 1220977Smax.romanov@gmail.com 12211117Szelenkov@nginx.com def test_java_application_multipart(self): 12221117Szelenkov@nginx.com self.load('multipart') 12231117Szelenkov@nginx.com 12241293St.nateldemoura@f5.com reldst = '/uploads' 12251293St.nateldemoura@f5.com fulldst = self.testdir + reldst 12261293St.nateldemoura@f5.com os.mkdir(fulldst) 12271293St.nateldemoura@f5.com self.public_dir(fulldst) 12281293St.nateldemoura@f5.com 12291355St.nateldemoura@f5.com fields = { 12301355St.nateldemoura@f5.com 'file': { 12311355St.nateldemoura@f5.com 'filename': 'sample.txt', 12321355St.nateldemoura@f5.com 'type': 'text/plain', 12331355St.nateldemoura@f5.com 'data': io.StringIO('Data from sample file'), 12341355St.nateldemoura@f5.com }, 12351355St.nateldemoura@f5.com 'destination': fulldst, 12361355St.nateldemoura@f5.com 'upload': 'Upload', 12371355St.nateldemoura@f5.com } 12381355St.nateldemoura@f5.com 12391355St.nateldemoura@f5.com encoded, content_type = self.multipart_encode(fields) 12401355St.nateldemoura@f5.com 12411355St.nateldemoura@f5.com preamble = 'Preamble. Should be ignored.' 12421355St.nateldemoura@f5.com epilogue = 'Epilogue. Should be ignored.' 12431355St.nateldemoura@f5.com body = "%s\r\n%s\r\n%s" % (preamble, encoded.decode(), epilogue) 12441117Szelenkov@nginx.com 12451117Szelenkov@nginx.com resp = self.post( 12461117Szelenkov@nginx.com headers={ 12471355St.nateldemoura@f5.com 'Content-Type': content_type, 12481117Szelenkov@nginx.com 'Host': 'localhost', 12491117Szelenkov@nginx.com 'Connection': 'close', 12501117Szelenkov@nginx.com }, 12511117Szelenkov@nginx.com body=body, 12521117Szelenkov@nginx.com ) 12531117Szelenkov@nginx.com 12541117Szelenkov@nginx.com self.assertEqual(resp['status'], 200, 'multipart status') 12551293St.nateldemoura@f5.com self.assertRegex( 12561293St.nateldemoura@f5.com resp['body'], r'sample\.txt created', 'multipart body' 12571293St.nateldemoura@f5.com ) 12581117Szelenkov@nginx.com self.assertIsNotNone( 12591293St.nateldemoura@f5.com self.search_in_log( 12601293St.nateldemoura@f5.com r'^Data from sample file$', name=reldst + '/sample.txt' 12611293St.nateldemoura@f5.com ), 12621117Szelenkov@nginx.com 'file created', 12631117Szelenkov@nginx.com ) 12641017Szelenkov@nginx.com 1265977Smax.romanov@gmail.comif __name__ == '__main__': 12661019Szelenkov@nginx.com TestJavaApplication.main() 1267