# vim:set ft= ts=4 sw=4 et fdm=marker: use lib 'lib'; use Test::Nginx::Socket; #worker_connections(1014); #master_process_enabled(1); #log_level('warn'); repeat_each(2); plan tests => repeat_each() * (4 * blocks()); #no_diff(); no_long_string(); run_tests(); __DATA__ === TEST 1: clear Opera user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.62 --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: opera: %d\n", $r->headers_in->opera) } F(ngx_http_core_content_phase) { printf("content: opera: %d\n", $r->headers_in->opera) } --- stap_out rewrite: opera: 1 content: opera: 0 --- response_body User-Agent: --- no_error_log [error] === TEST 2: clear MSIE 4 user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0) --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=1 msie6=1 content: msie=0 msie6=0 --- response_body User-Agent: --- no_error_log [error] === TEST 3: set custom MSIE 4 user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=0 msie6=0 content: msie=1 msie6=1 --- response_body User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0) --- no_error_log [error] === TEST 4: clear MSIE 5 user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; MSIECrawler) --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=1 msie6=1 content: msie=0 msie6=0 --- response_body User-Agent: --- no_error_log [error] === TEST 5: set custom MSIE 5 user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; MSIECrawler)"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=0 msie6=0 content: msie=1 msie6=1 --- response_body User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; MSIECrawler) --- no_error_log [error] === TEST 6: clear MSIE 6 (without SV1) user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;) --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=1 msie6=1 content: msie=0 msie6=0 --- response_body User-Agent: --- no_error_log [error] === TEST 7: set custom MSIE 6 (without SV1) user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=0 msie6=0 content: msie=1 msie6=1 --- response_body User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;) --- no_error_log [error] === TEST 8: clear MSIE 6 (with SV1) user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1) --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=1 msie6=0 content: msie=0 msie6=0 --- response_body User-Agent: --- no_error_log [error] === TEST 9: set custom MSIE 6 (with SV1) user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=0 msie6=0 content: msie=1 msie6=0 --- response_body User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1) --- no_error_log [error] === TEST 10: set custom MSIE 7 user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; winfx; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 2.0)"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } F(ngx_http_core_content_phase) { printf("content: msie=%d msie6=%d\n", $r->headers_in->msie, $r->headers_in->msie6) } --- stap_out rewrite: msie=0 msie6=0 content: msie=1 msie6=0 --- response_body User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; winfx; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 2.0) --- no_error_log [error] === TEST 11: clear Gecko user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0 --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: gecko: %d\n", $r->headers_in->gecko) } F(ngx_http_core_content_phase) { printf("content: gecko: %d\n", $r->headers_in->gecko) } --- stap_out rewrite: gecko: 1 content: gecko: 0 --- response_body User-Agent: --- no_error_log [error] === TEST 12: set custom Gecko user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: gecko: %d\n", $r->headers_in->gecko) } F(ngx_http_core_content_phase) { printf("content: gecko: %d\n", $r->headers_in->gecko) } --- stap_out rewrite: gecko: 0 content: gecko: 1 --- response_body User-Agent: Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0 --- no_error_log [error] === TEST 13: clear Chrome user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19 --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: chrome: %d\n", $r->headers_in->chrome) } F(ngx_http_core_content_phase) { printf("content: chrome: %d\n", $r->headers_in->chrome) } --- stap_out rewrite: chrome: 1 content: chrome: 0 --- response_body User-Agent: --- no_error_log [error] === TEST 14: set custom Chrome user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: chrome: %d\n", $r->headers_in->chrome) } F(ngx_http_core_content_phase) { printf("content: chrome: %d\n", $r->headers_in->chrome) } --- stap_out rewrite: chrome: 0 content: chrome: 1 --- response_body User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19 --- no_error_log [error] === TEST 15: clear Safari (Mac OS X) user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: safari: %d\n", $r->headers_in->safari) } F(ngx_http_core_content_phase) { printf("content: safari: %d\n", $r->headers_in->safari) } --- stap_out rewrite: safari: 1 content: safari: 0 --- response_body User-Agent: --- no_error_log [error] === TEST 16: set custom Safari user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: safari: %d\n", $r->headers_in->safari) } F(ngx_http_core_content_phase) { printf("content: safari: %d\n", $r->headers_in->safari) } --- stap_out rewrite: safari: 0 content: safari: 1 --- response_body User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 --- no_error_log [error] === TEST 17: clear Konqueror user-agent --- config location /t { more_clear_input_headers User-Agent; echo "User-Agent: $http_user_agent"; } --- request GET /t --- more_headers User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) (Kubuntu) --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: konqueror: %d\n", $r->headers_in->konqueror) } F(ngx_http_core_content_phase) { printf("content: konqueror: %d\n", $r->headers_in->konqueror) } --- stap_out rewrite: konqueror: 1 content: konqueror: 0 --- response_body User-Agent: --- no_error_log [error] === TEST 18: set custom Konqueror user-agent --- config location /t { more_set_input_headers "User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) (Kubuntu)"; echo "User-Agent: $http_user_agent"; } --- request GET /t --- stap F(ngx_http_headers_more_exec_input_cmd) { printf("rewrite: konqueror: %d\n", $r->headers_in->konqueror) } F(ngx_http_core_content_phase) { printf("content: konqueror: %d\n", $r->headers_in->konqueror) } --- stap_out rewrite: konqueror: 0 content: konqueror: 1 --- response_body User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) (Kubuntu) --- no_error_log [error]