diff -r fddcb51b5084 -r fc5e261915b9 tests/test-http-api-httpv2.t --- a/tests/test-http-api-httpv2.t Mon Mar 19 16:43:47 2018 -0700 +++ b/tests/test-http-api-httpv2.t Tue Mar 13 11:57:43 2018 -0700 @@ -63,11 +63,11 @@ Request to read-only command works out of the box $ send << EOF - > httprequest GET api/$HTTPV2/ro/customreadonly + > httprequest POST api/$HTTPV2/ro/customreadonly > user-agent: test > EOF using raw connection to peer - s> GET /api/exp-http-v2-0001/ro/customreadonly HTTP/1.1\r\n + s> POST /api/exp-http-v2-0001/ro/customreadonly HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> user-agent: test\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) @@ -84,11 +84,11 @@ Request to unknown command yields 404 $ send << EOF - > httprequest GET api/$HTTPV2/ro/badcommand + > httprequest POST api/$HTTPV2/ro/badcommand > user-agent: test > EOF using raw connection to peer - s> GET /api/exp-http-v2-0001/ro/badcommand HTTP/1.1\r\n + s> POST /api/exp-http-v2-0001/ro/badcommand HTTP/1.1\r\n s> Accept-Encoding: identity\r\n s> user-agent: test\r\n s> host: $LOCALIP:$HGPORT\r\n (glob) @@ -102,9 +102,30 @@ s> \r\n s> unknown wire protocol command: badcommand\n +GET to read-only command yields a 405 + + $ send << EOF + > httprequest GET api/$HTTPV2/ro/customreadonly + > user-agent: test + > EOF + using raw connection to peer + s> GET /api/exp-http-v2-0001/ro/customreadonly HTTP/1.1\r\n + s> Accept-Encoding: identity\r\n + s> user-agent: test\r\n + s> host: $LOCALIP:$HGPORT\r\n (glob) + s> \r\n + s> makefile('rb', None) + s> HTTP/1.1 405 Method Not Allowed\r\n + s> Server: testing stub value\r\n + s> Date: $HTTP_DATE$\r\n + s> Allow: POST\r\n + s> Content-Length: 30\r\n + s> \r\n + s> commands require POST requests + Request to read-write command fails because server is read-only by default -GET to read-write request not allowed +GET to read-write request yields 405 $ send << EOF > httprequest GET api/$HTTPV2/rw/customreadonly @@ -117,12 +138,13 @@ s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> HTTP/1.1 405 push requires POST request\r\n + s> HTTP/1.1 405 Method Not Allowed\r\n s> Server: testing stub value\r\n s> Date: $HTTP_DATE$\r\n - s> Content-Length: 17\r\n + s> Allow: POST\r\n + s> Content-Length: 30\r\n s> \r\n - s> permission denied + s> commands require POST requests Even for unknown commands @@ -137,12 +159,13 @@ s> host: $LOCALIP:$HGPORT\r\n (glob) s> \r\n s> makefile('rb', None) - s> HTTP/1.1 405 push requires POST request\r\n + s> HTTP/1.1 405 Method Not Allowed\r\n s> Server: testing stub value\r\n s> Date: $HTTP_DATE$\r\n - s> Content-Length: 17\r\n + s> Allow: POST\r\n + s> Content-Length: 30\r\n s> \r\n - s> permission denied + s> commands require POST requests SSL required by default @@ -173,38 +196,6 @@ > web.api.http-v2 = true > [web] > push_ssl = false - > EOF - - $ hg -R server serve -p $HGPORT -d --pid-file hg.pid - $ cat hg.pid > $DAEMON_PIDS - -Server insists on POST for read-write commands - - $ send << EOF - > httprequest GET api/$HTTPV2/rw/customreadonly - > user-agent: test - > EOF - using raw connection to peer - s> GET /api/exp-http-v2-0001/rw/customreadonly HTTP/1.1\r\n - s> Accept-Encoding: identity\r\n - s> user-agent: test\r\n - s> host: $LOCALIP:$HGPORT\r\n (glob) - s> \r\n - s> makefile('rb', None) - s> HTTP/1.1 405 push requires POST request\r\n - s> Server: testing stub value\r\n - s> Date: $HTTP_DATE$\r\n - s> Content-Length: 17\r\n - s> \r\n - s> permission denied - - $ killdaemons.py - $ cat > server/.hg/hgrc << EOF - > [experimental] - > web.apiserver = true - > web.api.http-v2 = true - > [web] - > push_ssl = false > allow-push = * > EOF