# vim:set ft= ts=4 sw=4 et fdm=marker: use Test::Nginx::Socket::Lua; #worker_connections(1014); #master_on(); #workers(2); #log_level('warn'); repeat_each(2); #repeat_each(1); plan tests => repeat_each() * (blocks() * 3); #no_diff(); no_long_string(); run_tests(); __DATA__ === TEST 1: get method name in main request --- config location /t { content_by_lua ' ngx.say("method: [", ngx.req.get_method(), "]") '; } --- request GET /t --- response_body method: [GET] --- no_error_log [error] === TEST 2: get method name in subrequest --- config location /t { echo_subrequest POST /sub; } location /sub { content_by_lua ' ngx.say("method: [", ngx.req.get_method(), "]") '; } --- request GET /t --- response_body method: [POST] --- no_error_log [error] === TEST 3: set GET to POST --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_POST) '; proxy_pass http://127.0.0.1:$server_port/echo; } location /echo { echo $request_method; } --- request GET /t --- response_body POST --- no_error_log [error] === TEST 4: set POST to GET --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_GET) '; proxy_pass http://127.0.0.1:$server_port/echo; } location /echo { echo $request_method; } --- request POST /t hello world --- response_body GET --- no_error_log [error] === TEST 5: set POST to DELETE --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_DELETE) '; proxy_pass http://127.0.0.1:$server_port/echo; } location /echo { echo $request_method; } --- request POST /t hello world --- response_body DELETE --- no_error_log [error] === TEST 6: set POST to PUT --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_PUT) '; proxy_pass http://127.0.0.1:$server_port/echo; } location /echo { echo $request_method; } --- request POST /t hello world --- response_body PUT --- no_error_log [error] === TEST 7: set POST to PUT (using $requeset_method) --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_PUT) '; echo $request_method; } --- request POST /t hello world --- response_body PUT --- no_error_log [error] === TEST 8: set GET to HEAD --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_HEAD) '; proxy_pass http://127.0.0.1:$server_port/echo; #proxy_pass http://127.0.0.1:8888/; } location /echo { echo $request_method; } --- request GET /t --- response_body --- no_error_log [error] === TEST 9: set method name in subrequest --- config location /t { echo_subrequest POST /sub; echo "main: $echo_request_method"; } location /sub { content_by_lua ' ngx.req.set_method(ngx.HTTP_PUT) ngx.say("sub: ", ngx.var.echo_request_method) '; } --- request GET /t --- response_body sub: PUT main: GET --- no_error_log [error] === TEST 10: set HEAD to GET --- config location /t { rewrite_by_lua ' ngx.req.set_method(ngx.HTTP_GET) '; echo "method: $echo_request_method"; } --- request HEAD /t --- response_body method: GET --- no_error_log [error] === TEST 11: set GET to WebDAV methods --- config location /t { content_by_lua ' local methods = { ngx.HTTP_MKCOL, ngx.HTTP_COPY, ngx.HTTP_MOVE, ngx.HTTP_PROPFIND, ngx.HTTP_PROPPATCH, ngx.HTTP_LOCK, ngx.HTTP_UNLOCK, ngx.HTTP_PATCH, ngx.HTTP_TRACE, } for i, method in ipairs(methods) do ngx.req.set_method(method) ngx.say("method: ", ngx.var.echo_request_method) end '; } --- request HEAD /t --- response_body method: MKCOL method: COPY method: MOVE method: PROPFIND method: PROPPATCH method: LOCK method: UNLOCK method: PATCH method: TRACE --- no_error_log [error]