TESTS: the web image can now handle concurrent connections
Using the python web framework [Flask](http://flask.pocoo.org/). As a side effect, headers printed out from the `/headers` end point get capitalized.
This commit is contained in:
parent
563cfedb98
commit
d282c2481b
4 changed files with 20 additions and 24 deletions
|
@ -1,6 +1,7 @@
|
|||
# Docker Image running one (or multiple) webservers listening on all given ports from WEB_PORTS environment variable
|
||||
|
||||
FROM python:3
|
||||
RUN pip install flask==0.12
|
||||
COPY ./webserver.py /
|
||||
COPY ./entrypoint.sh /
|
||||
WORKDIR /opt
|
||||
|
|
|
@ -1,31 +1,26 @@
|
|||
#!/usr/bin/env python3
|
||||
import os
|
||||
|
||||
import os, sys
|
||||
import http.server
|
||||
import socketserver
|
||||
import sys
|
||||
from flask import Flask, Response, request
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
class Handler(http.server.SimpleHTTPRequestHandler):
|
||||
def do_GET(self):
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "text/plain")
|
||||
self.end_headers()
|
||||
@app.route("/")
|
||||
def root():
|
||||
return Response("I'm %s\n" % os.environ['HOSTNAME'], mimetype="text/plain")
|
||||
|
||||
if self.path == "/headers":
|
||||
self.wfile.write(self.headers.as_string().encode())
|
||||
elif self.path == "/port":
|
||||
response = "answer from port %s\n" % PORT
|
||||
self.wfile.write(response.encode())
|
||||
elif self.path == "/":
|
||||
response = "I'm %s\n" % os.environ['HOSTNAME']
|
||||
self.wfile.write(response.encode())
|
||||
else:
|
||||
self.wfile.write("No route for this path!\n".encode())
|
||||
|
||||
@app.route("/headers")
|
||||
def headers():
|
||||
return Response("".join(["%s: %s\n" % (header, value) for header, value in request.headers.items()]), mimetype="text/plain")
|
||||
|
||||
|
||||
@app.route("/port")
|
||||
def port():
|
||||
return Response("answer from port %s\n" % PORT, mimetype="text/plain")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
PORT = int(sys.argv[1])
|
||||
socketserver.TCPServer.allow_reuse_address = True
|
||||
httpd = socketserver.TCPServer(('0.0.0.0', PORT), Handler)
|
||||
httpd.serve_forever()
|
||||
app.run(host="0.0.0.0", port=PORT)
|
||||
|
|
|
@ -63,7 +63,7 @@ def test_X_Forwarded_Ssl_is_overwritten(docker_compose, nginxproxy):
|
|||
def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("http://web.nginx-proxy.tld/headers")
|
||||
assert r.status_code == 200
|
||||
assert "X-Real-IP: " in r.text
|
||||
assert "X-Real-IP: ".upper() in r.text.upper()
|
||||
|
||||
def test_Host_is_passed_on(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("http://web.nginx-proxy.tld/headers")
|
||||
|
|
|
@ -64,7 +64,7 @@ def test_X_Forwarded_Ssl_is_overwritten(docker_compose, nginxproxy):
|
|||
def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
|
||||
assert r.status_code == 200
|
||||
assert "X-Real-IP: " in r.text
|
||||
assert "X-Real-IP: ".upper() in r.text.upper()
|
||||
|
||||
def test_Host_is_passed_on(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
|
||||
|
|
Loading…
Reference in a new issue