--- Revision None +++ Revision 666432313633 @@ -0,0 +1,378 @@ + +This is my testing setup: I created a new database (test) that doesn't use any VHost rules. + +Inside it I created a design document that only has rewrites field. There are three different rewrite configurations I used and 4 commands that I ran. For each command run I provide exact command I used, the output, my comment +of the output and relevant log from couch.log. + +I always sent the same document contained in file "example" - namely: +{ + "type": "comment" +} + +Below are the test results: +---------------------------------------------------------------------------------------------------- +## Test 1: +# rewrites config: +[ + { + "to": "../..", + "from": ":db" + } +] + +--------------------- + +# Executed command 1.1: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/ +{"ok":true,"id":"ce8b504d63666c9257cc07537c00aa70","rev":"1-505a221d0aef5d664f29d6afdae01293"} + +# Comment: expected result - everything is fine. + +--------------------- + +# Executed command 1.2: +$ curl -X PUT -d @example -H "Content-type:application/json" http://localhost:5984/test/_design/test/_rewrite/test/randomid324324 +{"error":"not_found","reason":"missing"} + +# Comment: result expected since there is no ID parameter passed through - due to the rewrite rule + +#LOG: +[Mon, 10 Jan 2011 21:42:17 GMT] [debug] [<0.8844.3>] 'PUT' /test/_design/test/_rewrite/test/randomid324324 {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 21:42:17 GMT] [debug] [<0.8844.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 21:42:17 GMT] [debug] [<0.8844.3>] Minor error in HTTP request: not_found + +[Mon, 10 Jan 2011 21:42:17 GMT] [debug] [<0.8844.3>] Stacktrace: [{couch_httpd_rewrite,handle_rewrite_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 21:42:17 GMT] [info] [<0.8844.3>] 127.0.0.1 - - 'PUT' /test/_design/test/_rewrite/test/randomid324324 404 + +[Mon, 10 Jan 2011 21:42:17 GMT] [debug] [<0.8844.3>] httpd 404 error response: + {"error":"not_found","reason":"missing"} + +--------------------- + + +# Executed command 1.3: +$curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/_design/test/_rewrite/test/ +{"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +# Comment: Rewrite is wrong - also peculiar it won't take application/json content type. + +# LOG: +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] 'POST' /test/_design/test/_rewrite/test/ {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] rewrite to "/test/_design/..?db=test" + + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] 'POST' /test/_design/..?db=test {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] OAuth Params: [{"db","test"}] + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] Minor error in HTTP request: {bad_ctype, + + "Content-Type must be multipart/form-data"} + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] Stacktrace: [{couch_httpd,validate_ctype,2}, + {couch_httpd_db,db_doc_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 21:51:55 GMT] [info] [<0.9453.3>] 127.0.0.1 - - 'POST' /test/_design/..?db=test 415 + +[Mon, 10 Jan 2011 21:51:55 GMT] [debug] [<0.9453.3>] httpd 415 error response: + {"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +--------------------- + +# Executed command 1.4: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/randomid32420 +{"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +# Comment: I did this one just because - and I noticed that when you post with and ID - it wont accept JSON content type + +# LOG: +[Mon, 10 Jan 2011 21:54:23 GMT] [debug] [<0.9490.3>] 'POST' /test/randomid32420 {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 21:54:23 GMT] [debug] [<0.9490.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 21:54:23 GMT] [debug] [<0.9490.3>] Minor error in HTTP request: {bad_ctype, + + "Content-Type must be multipart/form-data"} + +[Mon, 10 Jan 2011 21:54:23 GMT] [debug] [<0.9490.3>] Stacktrace: [{couch_httpd,validate_ctype,2}, + {couch_httpd_db,db_doc_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 21:54:23 GMT] [info] [<0.9490.3>] 127.0.0.1 - - 'POST' /test/randomid32420 415 + +[Mon, 10 Jan 2011 21:54:23 GMT] [debug] [<0.9490.3>] httpd 415 error response: + {"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + + + +---------------------------------------------------------------------------------------------------- + + +## Test 2: + +# Rewrites config: +[ + { + "to": "../../*", + "from": ":db/*" + } +] + +# Executed command 2.1: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/ +{"ok":true,"id":"ce8b504d63666c9257cc07537c00af99","rev":"1-505a221d0aef5d664f29d6afdae01293"} + +# Comment: OK, everything is fine + +--------------------- + +#Executed command 2.2: +$ curl -X PUT -d @example -H "Content-type:application/json" http://localhost:5984/test/_design/test/_rewrite/test/randomid3125 +{"ok":true,"id":"randomid3125","rev":"1-505a221d0aef5d664f29d6afdae01293"} + +# Comment: OK, everything is fine - since now rewrite rule appropriately handles the ID. + +--------------------- + +#Executed command 2.3: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/_design/test/_rewrite/test/ +{"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +# Comment: Routing and content type are wrong (routing in PUT request - command 2.2 was done right!) + +# LOG: +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] 'POST' /test/_design/test/_rewrite/test/ {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] rewrite to "/test/_design/..?db=test" + + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] 'POST' /test/_design/..?db=test {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] OAuth Params: [{"db","test"}] + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] Minor error in HTTP request: {bad_ctype, + + "Content-Type must be multipart/form-data"} + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] Stacktrace: [{couch_httpd,validate_ctype,2}, + {couch_httpd_db,db_doc_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 22:06:17 GMT] [info] [<0.10262.3>] 127.0.0.1 - - 'POST' /test/_design/..?db=test 415 + +[Mon, 10 Jan 2011 22:06:17 GMT] [debug] [<0.10262.3>] httpd 415 error response: + {"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +--------------------- + +#Executed command 2.4: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/randomid32843 +{"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +#Comment: No routing information in log, got Cotent type error. + +#LOG: +[Mon, 10 Jan 2011 22:11:53 GMT] [debug] [<0.10377.3>] 'POST' /test/randomid32843 {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 22:11:53 GMT] [debug] [<0.10377.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 22:11:53 GMT] [debug] [<0.10377.3>] Minor error in HTTP request: {bad_ctype, + + "Content-Type must be multipart/form-data"} + +[Mon, 10 Jan 2011 22:11:53 GMT] [debug] [<0.10377.3>] Stacktrace: [{couch_httpd,validate_ctype,2}, + {couch_httpd_db,db_doc_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 22:11:53 GMT] [info] [<0.10377.3>] 127.0.0.1 - - 'POST' /test/randomid32843 415 + +[Mon, 10 Jan 2011 22:11:53 GMT] [debug] [<0.10377.3>] httpd 415 error response: + {"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +---------------------------------------------------------------------------------------------------- + + +## Test 3: + +# Rewrites config: +[ + { + "to": "../../*", + "from": ":db/*" + }, + { + "to": "../..", + "from": ":db" + } +] + +--------------------- + +# Executed command 3.1: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/ +{"ok":true,"id":"ce8b504d63666c9257cc07537c00bbe3","rev":"1-505a221d0aef5d664f29d6afdae01293"} + +# Comment: OK! works as expected + +--------------------- + +#Executed command 3.2: +$ curl -X PUT -d @example -H "Content-type:application/json" http://localhost:5984/test/_design/test/_rewrite/test/randomid43242 +{"ok":true,"id":"randomid43242","rev":"1-505a221d0aef5d664f29d6afdae01293"} + +# Comment: OK! works as expected + +--------------------- + +#Executed command 3.3: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/_design/test/_rewrite/test/ +{"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +# Comment: Rewrite issue and content type issue + +# LOG: +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] 'POST' /test/_design/test/_rewrite/test/ {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] rewrite to "/test/_design/..?db=test" + + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] 'POST' /test/_design/..?db=test {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] OAuth Params: [{"db","test"}] + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] Minor error in HTTP request: {bad_ctype, + + "Content-Type must be multipart/form-data"} + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] Stacktrace: [{couch_httpd,validate_ctype,2}, + {couch_httpd_db,db_doc_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 22:19:55 GMT] [info] [<0.11199.3>] 127.0.0.1 - - 'POST' /test/_design/..?db=test 415 + +[Mon, 10 Jan 2011 22:19:55 GMT] [debug] [<0.11199.3>] httpd 415 error response: + {"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +--------------------- + +#Executed command 3.4: +$ curl -d @example -H "Content-type:application/json" -e http://localhost:5984/test http://localhost:5984/test/randomid432432 +{"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"} + +#Comment: Obviously no rewrite issue, however content type problem is there + +#LOG: +[Mon, 10 Jan 2011 22:21:24 GMT] [debug] [<0.11220.3>] 'POST' /test/randomid432432 {1,1} +Headers: [{'Accept',"*/*"}, + {'Content-Length',"23"}, + {'Content-Type',"application/json"}, + {'Host',"localhost:5984"}, + {'Referer',"http://localhost:5984/test"}, + {'User-Agent',"curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"}] + +[Mon, 10 Jan 2011 22:21:24 GMT] [debug] [<0.11220.3>] OAuth Params: [] + +[Mon, 10 Jan 2011 22:21:24 GMT] [debug] [<0.11220.3>] Minor error in HTTP request: {bad_ctype, + + "Content-Type must be multipart/form-data"} + +[Mon, 10 Jan 2011 22:21:24 GMT] [debug] [<0.11220.3>] Stacktrace: [{couch_httpd,validate_ctype,2}, + {couch_httpd_db,db_doc_req,3}, + {couch_httpd_db,do_db_req,2}, + {couch_httpd,handle_request_int,5}, + {mochiweb_http,headers,5}, + {proc_lib,init_p_do_apply,3}] + +[Mon, 10 Jan 2011 22:21:24 GMT] [info] [<0.11220.3>] 127.0.0.1 - - 'POST' /test/randomid432432 415 + +[Mon, 10 Jan 2011 22:21:24 GMT] [debug] [<0.11220.3>] httpd 415 error response: + {"error":"bad_content_type","reason":"Content-Type must be multipart/form-data"}