--- 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