diff options
Diffstat (limited to 'ngx_postgres-1.0/t/methods.t')
-rw-r--r-- | ngx_postgres-1.0/t/methods.t | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/ngx_postgres-1.0/t/methods.t b/ngx_postgres-1.0/t/methods.t new file mode 100644 index 0000000..93b80e8 --- /dev/null +++ b/ngx_postgres-1.0/t/methods.t @@ -0,0 +1,335 @@ +# vi:filetype=perl + +use lib 'lib'; +use Test::Nginx::Socket; + +repeat_each(2); + +plan tests => repeat_each() * (blocks() * 3 - 2 * 2); + +$ENV{TEST_NGINX_POSTGRESQL_HOST} ||= '127.0.0.1'; +$ENV{TEST_NGINX_POSTGRESQL_PORT} ||= 5432; + +our $http_config = <<'_EOC_'; + upstream database { + postgres_server $TEST_NGINX_POSTGRESQL_HOST:$TEST_NGINX_POSTGRESQL_PORT + dbname=ngx_test user=ngx_test password=ngx_test; + } +_EOC_ + +run_tests(); + +__DATA__ + +=== TEST 1: default query +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query "select 'default' as echo"; + } +--- request +GET /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{07}\x{00}\x{00}\x{00}". # field len +"default". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 2: method-specific query +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query LOCK GET UNLOCK "select 'GET' as echo"; + } +--- request +GET /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{03}\x{00}\x{00}\x{00}". # field len +"GET". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 3: method-specific complex query (check 1) +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + } +--- request +GET /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{03}\x{00}\x{00}\x{00}". # field len +"GET". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 4: method-specific complex query (check 2) +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + } +--- request +LOCK /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{04}\x{00}\x{00}\x{00}". # field len +"LOCK". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 5: method-specific complex query (using not allowed method) +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + } +--- request +HEAD /postgres +--- error_code: 405 +--- timeout: 10 + + + +=== TEST 6: method-specific query and default query (using defined method) +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query "select 'default' as echo"; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + } +--- request +GET /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{03}\x{00}\x{00}\x{00}". # field len +"GET". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 7: method-specific query and default query (using other method) +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query "select 'default' as echo"; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + } +--- request +POST /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{07}\x{00}\x{00}\x{00}". # field len +"default". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 8: inheritance +--- http_config eval: $::http_config +--- config + postgres_query "select 'default' as echo"; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + + location /postgres { + postgres_pass database; + } +--- request +GET /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{03}\x{00}\x{00}\x{00}". # field len +"GET". # field data +"\x{00}" # row list terminator +--- timeout: 10 + + + +=== TEST 9: inheritance (mixed, don't inherit) +--- http_config eval: $::http_config +--- config + postgres_query "select 'default' as echo"; + + location /postgres { + postgres_pass database; + postgres_query LOCK GET UNLOCK "select '$request_method' as echo"; + } +--- request +HEAD /postgres +--- error_code: 405 +--- timeout: 10 + + + +=== TEST 10: HTTP PATCH request method +--- http_config eval: $::http_config +--- config + location /postgres { + postgres_pass database; + postgres_query PATCH "select '$request_method' as echo"; + } +--- request +PATCH /postgres +--- error_code: 200 +--- response_headers +Content-Type: application/x-resty-dbd-stream +--- response_body eval +"\x{00}". # endian +"\x{03}\x{00}\x{00}\x{00}". # format version 0.0.3 +"\x{00}". # result type +"\x{00}\x{00}". # std errcode +"\x{02}\x{00}". # driver errcode +"\x{00}\x{00}". # driver errstr len +"". # driver errstr data +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # rows affected +"\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}\x{00}". # insert id +"\x{01}\x{00}". # col count +"\x{00}\x{80}". # std col type (unknown/str) +"\x{c1}\x{02}". # driver col type +"\x{04}\x{00}". # col name len +"echo". # col name data +"\x{01}". # valid row flag +"\x{05}\x{00}\x{00}\x{00}". # field len +"PATCH". # field data +"\x{00}" # row list terminator +--- timeout: 10 +--- skip_nginx: 3: < 0.8.41 |