Files
dl-router/app/test_flask_app.py
MichaIng 906d9862ee Add proto/scheme header test for /status entpoint (#20)
When the X-Forwarded-Proto request header is set, the /status endpoint is expected to send the related X-Request-Scheme response header.

Additionally this commit removes unused imports and two trailing spaces.
2021-09-17 16:07:51 -04:00

68 lines
1.7 KiB
Python
Executable File

from json import loads
import pytest
from main import app
TEST_IPS = [
"10.0.0.1",
"1.2.3.4",
"123.254.123.233",
"5.254.123.233",
]
@pytest.fixture
def client():
with app.test_client() as client:
yield client
def test_status(client):
""" test the status endpoint """
rv = client.get('/status')
assert rv.data == b'OK'
def test_mirrors(client):
""" test the mirrors endpoint """
rv = client.get('/mirrors')
jsondata = rv.data.decode('utf-8')
assert isinstance(loads(jsondata), dict)
def test_regions(client):
""" test the regions endpoint """
rv = client.get('/regions')
jsondata = rv.data.decode('utf-8')
assert isinstance(loads(jsondata), list)
def test_regions_proxied(client):
""" test the regions endpoint, but send x-forwarded-for headers """
for address in TEST_IPS:
test_headers = {
"X-Forwarded-For" : address,
}
rv = client.get('/regions', headers=test_headers)
jsondata = rv.data.decode('utf-8')
assert isinstance(loads(jsondata), list)
def test_status_proxied(client):
""" test the status endpoint, but send X-Forwarded-For and X-Forwarded-Proto headers
the status endpoint sends X-Client-IP and X-Request-Scheme headers in the response
"""
for address in TEST_IPS:
test_headers = {
"X-Forwarded-For" : address,
"X-Forwarded-Proto" : "some",
}
rv = client.get('/status', headers=test_headers)
assert 'X-Client-IP' in rv.headers
assert rv.headers.get('X-Client-IP') == address
assert 'X-Request-Scheme' in rv.headers
assert rv.headers.get('X-Request-Scheme') == "some"