tests: Use CherryPy for HTTPS server

Not sure why we didn't do this initially, maybe it wasn't possible: https://webpy.org/cookbook/ssl

This means we don't need to (ab)use the Flask development server anymore.
This commit is contained in:
Florian Bruhin 2022-08-22 14:21:08 +02:00
parent 0dda1d41be
commit 41c4ee3e2f
2 changed files with 15 additions and 8 deletions

View File

@ -339,8 +339,10 @@ class WSGIServer(cheroot.wsgi.Server):
@ready.setter
def ready(self, value):
if value and not self._printed_ready:
print(' * Running on http://127.0.0.1:{}/ (Press CTRL+C to quit)'
.format(self.bind_addr[1]), file=sys.stderr, flush=True)
port = self.bind_addr[1]
scheme = 'http' if self.ssl_adapter is None else 'https'
print(f' * Running on {scheme}://127.0.0.1:{port}/ (Press CTRL+C to quit)',
file=sys.stderr, flush=True)
self._printed_ready = True
self._ready = value

View File

@ -30,6 +30,7 @@ import pathlib
import flask
import webserver_sub
import cheroot.ssl.builtin
app = flask.Flask(__name__)
@ -62,12 +63,16 @@ def turn_off_logging():
def main():
end2end_dir = pathlib.Path(__file__).resolve().parents[1]
ssl_dir = end2end_dir / 'data' / 'ssl'
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain((ssl_dir / 'cert.pem'),
(ssl_dir / 'key.pem'))
app.run(port=int(sys.argv[1]), debug=False, ssl_context=context)
port = int(sys.argv[1])
server = webserver_sub.WSGIServer(('127.0.0.1', port), app)
ssl_dir = webserver_sub.END2END_DIR / 'data' / 'ssl'
server.ssl_adapter = cheroot.ssl.builtin.BuiltinSSLAdapter(
certificate=ssl_dir / 'cert.pem',
private_key=ssl_dir / 'key.pem',
)
server.start()
if __name__ == '__main__':