tests/test-http-api.t
changeset 48526 04688c51f81f
parent 48525 d6c53b40b078
child 48527 bf5dc156bb4c
--- a/tests/test-http-api.t	Thu Dec 30 13:25:44 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,299 +0,0 @@
-#require no-chg
-
-  $ send() {
-  >   hg --verbose debugwireproto --peer raw http://$LOCALIP:$HGPORT/
-  > }
-
-  $ hg init server
-  $ hg -R server serve -p $HGPORT -d --pid-file hg.pid
-  $ cat hg.pid > $DAEMON_PIDS
-
-Request to /api fails unless web.apiserver is enabled
-
-  $ get-with-headers.py $LOCALIP:$HGPORT api
-  400 no such method: api
-  
-  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
-  <head>
-  <link rel="icon" href="/static/hgicon.png" type="image/png" />
-  <meta name="robots" content="index, nofollow" />
-  <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
-  <script type="text/javascript" src="/static/mercurial.js"></script>
-  
-  <title>$TESTTMP/server: error</title>
-  </head>
-  <body>
-  
-  <div class="container">
-  <div class="menu">
-  <div class="logo">
-  <a href="https://mercurial-scm.org/">
-  <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
-  </div>
-  <ul>
-  <li><a href="/shortlog">log</a></li>
-  <li><a href="/graph">graph</a></li>
-  <li><a href="/tags">tags</a></li>
-  <li><a href="/bookmarks">bookmarks</a></li>
-  <li><a href="/branches">branches</a></li>
-  </ul>
-  <ul>
-  <li><a href="/help">help</a></li>
-  </ul>
-  </div>
-  
-  <div class="main">
-  
-  <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
-  <h3>error</h3>
-  
-  
-  <form class="search" action="/log">
-  
-  <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
-  <div id="hint">Find changesets by keywords (author, files, the commit message), revision
-  number or hash, or <a href="/help/revsets">revset expression</a>.</div>
-  </form>
-  
-  <div class="description">
-  <p>
-  An error occurred while processing your request:
-  </p>
-  <p>
-  no such method: api
-  </p>
-  </div>
-  </div>
-  </div>
-  
-  
-  
-  </body>
-  </html>
-  
-  [1]
-
-  $ get-with-headers.py $LOCALIP:$HGPORT api/
-  400 no such method: api
-  
-  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
-  <head>
-  <link rel="icon" href="/static/hgicon.png" type="image/png" />
-  <meta name="robots" content="index, nofollow" />
-  <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
-  <script type="text/javascript" src="/static/mercurial.js"></script>
-  
-  <title>$TESTTMP/server: error</title>
-  </head>
-  <body>
-  
-  <div class="container">
-  <div class="menu">
-  <div class="logo">
-  <a href="https://mercurial-scm.org/">
-  <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
-  </div>
-  <ul>
-  <li><a href="/shortlog">log</a></li>
-  <li><a href="/graph">graph</a></li>
-  <li><a href="/tags">tags</a></li>
-  <li><a href="/bookmarks">bookmarks</a></li>
-  <li><a href="/branches">branches</a></li>
-  </ul>
-  <ul>
-  <li><a href="/help">help</a></li>
-  </ul>
-  </div>
-  
-  <div class="main">
-  
-  <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
-  <h3>error</h3>
-  
-  
-  <form class="search" action="/log">
-  
-  <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
-  <div id="hint">Find changesets by keywords (author, files, the commit message), revision
-  number or hash, or <a href="/help/revsets">revset expression</a>.</div>
-  </form>
-  
-  <div class="description">
-  <p>
-  An error occurred while processing your request:
-  </p>
-  <p>
-  no such method: api
-  </p>
-  </div>
-  </div>
-  </div>
-  
-  
-  
-  </body>
-  </html>
-  
-  [1]
-
-Restart server with support for API server
-
-  $ killdaemons.py
-  $ cat > server/.hg/hgrc << EOF
-  > [experimental]
-  > web.apiserver = true
-  > EOF
-
-  $ hg -R server serve -p $HGPORT -d --pid-file hg.pid
-  $ cat hg.pid > $DAEMON_PIDS
-
-/api lists available APIs (empty since none are available by default)
-
-  $ send << EOF
-  > httprequest GET api
-  >     user-agent: test
-  > EOF
-  using raw connection to peer
-  s> setsockopt(6, 1, 1) -> None (?)
-  s>     GET /api 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 200 OK\r\n
-  s>     Server: testing stub value\r\n
-  s>     Date: $HTTP_DATE$\r\n
-  s>     Content-Type: text/plain\r\n
-  s>     Content-Length: 100\r\n
-  s>     \r\n
-  s>     APIs can be accessed at /api/<name>, where <name> can be one of the following:\n
-  s>     \n
-  s>     (no available APIs)\n
-
-  $ send << EOF
-  > httprequest GET api/
-  >     user-agent: test
-  > EOF
-  using raw connection to peer
-  s> setsockopt(6, 1, 1) -> None (?)
-  s>     GET /api/ 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 200 OK\r\n
-  s>     Server: testing stub value\r\n
-  s>     Date: $HTTP_DATE$\r\n
-  s>     Content-Type: text/plain\r\n
-  s>     Content-Length: 100\r\n
-  s>     \r\n
-  s>     APIs can be accessed at /api/<name>, where <name> can be one of the following:\n
-  s>     \n
-  s>     (no available APIs)\n
-
-Accessing an unknown API yields a 404
-
-  $ send << EOF
-  > httprequest GET api/unknown
-  >     user-agent: test
-  > EOF
-  using raw connection to peer
-  s> setsockopt(6, 1, 1) -> None (?)
-  s>     GET /api/unknown 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 404 Not Found\r\n
-  s>     Server: testing stub value\r\n
-  s>     Date: $HTTP_DATE$\r\n
-  s>     Content-Type: text/plain\r\n
-  s>     Content-Length: 33\r\n
-  s>     \r\n
-  s>     Unknown API: unknown\n
-  s>     Known APIs: 
-
-Accessing a known but not enabled API yields a different error
-
-  $ send << EOF
-  > httprequest GET api/exp-http-v2-0003
-  >     user-agent: test
-  > EOF
-  using raw connection to peer
-  s> setsockopt(6, 1, 1) -> None (?)
-  s>     GET /api/exp-http-v2-0003 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 404 Not Found\r\n
-  s>     Server: testing stub value\r\n
-  s>     Date: $HTTP_DATE$\r\n
-  s>     Content-Type: text/plain\r\n
-  s>     Content-Length: 33\r\n
-  s>     \r\n
-  s>     API exp-http-v2-0003 not enabled\n
-
-Restart server with support for HTTP v2 API
-
-  $ killdaemons.py
-  $ cat > server/.hg/hgrc << EOF
-  > [experimental]
-  > web.apiserver = true
-  > web.api.http-v2 = true
-  > EOF
-
-  $ hg -R server serve -p $HGPORT -d --pid-file hg.pid
-  $ cat hg.pid > $DAEMON_PIDS
-
-/api lists the HTTP v2 protocol as available
-
-  $ send << EOF
-  > httprequest GET api
-  >     user-agent: test
-  > EOF
-  using raw connection to peer
-  s> setsockopt(6, 1, 1) -> None (?)
-  s>     GET /api 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 200 OK\r\n
-  s>     Server: testing stub value\r\n
-  s>     Date: $HTTP_DATE$\r\n
-  s>     Content-Type: text/plain\r\n
-  s>     Content-Length: 96\r\n
-  s>     \r\n
-  s>     APIs can be accessed at /api/<name>, where <name> can be one of the following:\n
-  s>     \n
-  s>     exp-http-v2-0003
-
-  $ send << EOF
-  > httprequest GET api/
-  >     user-agent: test
-  > EOF
-  using raw connection to peer
-  s> setsockopt(6, 1, 1) -> None (?)
-  s>     GET /api/ 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 200 OK\r\n
-  s>     Server: testing stub value\r\n
-  s>     Date: $HTTP_DATE$\r\n
-  s>     Content-Type: text/plain\r\n
-  s>     Content-Length: 96\r\n
-  s>     \r\n
-  s>     APIs can be accessed at /api/<name>, where <name> can be one of the following:\n
-  s>     \n
-  s>     exp-http-v2-0003