| # vim:set ft= ts=4 sw=4 et fdm=marker: |
| use lib 'lib'; |
| use Test::Nginx::Socket::Lua; |
| |
| #worker_connections(1014); |
| #master_process_enabled(1); |
| #log_level('warn'); |
| #no_nginx_manager(); |
| |
| #repeat_each(1); |
| repeat_each(2); |
| |
| plan tests => repeat_each() * (blocks() * 2 + 1); |
| |
| #no_diff(); |
| no_long_string(); |
| run_tests(); |
| |
| __DATA__ |
| |
| === TEST 1: basic test passing |
| --- config |
| location /lua { |
| lua_need_request_body on; |
| client_max_body_size 100k; |
| client_body_buffer_size 100k; |
| |
| access_by_lua ' |
| -- check the client IP addr is in our black list |
| if ngx.var.remote_addr == "132.5.72.3" then |
| ngx.exit(ngx.HTTP_FORBIDDEN) |
| end |
| |
| -- check if the request body contains bad words |
| if ngx.var.request_body and string.match(ngx.var.request_body, "fuck") then |
| return ngx.redirect("/terms_of_use.html") |
| end |
| |
| -- tests passed |
| '; |
| |
| echo Logged in; |
| } |
| --- request |
| GET /lua |
| --- response_body |
| Logged in |
| |
| |
| |
| === TEST 2: bad words in request body |
| --- config |
| location /lua { |
| lua_need_request_body on; |
| client_max_body_size 100k; |
| client_body_buffer_size 100k; |
| |
| access_by_lua ' |
| -- check the client IP addr is in our black list |
| if ngx.var.remote_addr == "132.5.72.3" then |
| ngx.exit(ngx.HTTP_FORBIDDEN) |
| end |
| |
| -- check if the request body contains bad words |
| if ngx.var.request_body and string.match(ngx.var.request_body, "fuck") then |
| return ngx.redirect("/terms_of_use.html") |
| end |
| |
| -- tests passed |
| '; |
| |
| echo Logged in; |
| } |
| --- request |
| POST /lua |
| He fucks himself! |
| --- response_body_like: 302 Found |
| --- response_headers_like |
| Location: http://[^:]+:\d+/terms_of_use\.html |
| --- error_code: 302 |
| |
| |
| |
| === TEST 3: client IP |
| --- config |
| location /lua { |
| lua_need_request_body on; |
| client_max_body_size 100k; |
| client_body_buffer_size 100k; |
| |
| access_by_lua ' |
| -- check the client IP addr is in our black list |
| if ngx.var.remote_addr == "127.0.0.1" then |
| ngx.exit(ngx.HTTP_FORBIDDEN) |
| end |
| |
| -- check if the request body contains bad words |
| if ngx.var.request_body and string.match(ngx.var.request_body, "fuck") then |
| return ngx.redirect("/terms_of_use.html") |
| end |
| |
| -- tests passed |
| '; |
| |
| echo Logged in; |
| } |
| --- request |
| GET /lua |
| --- response_body_like: 403 Forbidden |
| --- error_code: 403 |
| |