diff options
author | Florian Bruhin <me@the-compiler.org> | 2020-11-23 19:20:45 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2020-11-23 20:18:12 +0100 |
commit | c1431ff55ec91d24e46abe3f2c1babbe42f4b079 (patch) | |
tree | 282fff2d80a8916085900e8a69f71bf19428413c | |
parent | 699a5a59f5c164d1cbe5093a9cd0f5b9afbcfe62 (diff) | |
download | qutebrowser-c1431ff55ec91d24e46abe3f2c1babbe42f4b079.tar.gz qutebrowser-c1431ff55ec91d24e46abe3f2c1babbe42f4b079.zip |
Add end2end test for referer settings
See #5892, #5903
-rw-r--r-- | tests/end2end/fixtures/webserver_sub.py | 6 | ||||
-rw-r--r-- | tests/end2end/templates/headers-link.html | 10 | ||||
-rw-r--r-- | tests/end2end/test_invocations.py | 34 |
3 files changed, 50 insertions, 0 deletions
diff --git a/tests/end2end/fixtures/webserver_sub.py b/tests/end2end/fixtures/webserver_sub.py index 1541c6075..e38d64bb8 100644 --- a/tests/end2end/fixtures/webserver_sub.py +++ b/tests/end2end/fixtures/webserver_sub.py @@ -244,6 +244,12 @@ def view_headers(): return flask.jsonify(headers=dict(flask.request.headers)) +@app.route('/headers-link/<int:port>') +def headers_link(port): + """Get a (possibly cross-origin) link to /headers.""" + return flask.render_template('headers-link.html', port=port) + + @app.route('/response-headers') def response_headers(): """Return a set of response headers from the query string.""" diff --git a/tests/end2end/templates/headers-link.html b/tests/end2end/templates/headers-link.html new file mode 100644 index 000000000..fece530b1 --- /dev/null +++ b/tests/end2end/templates/headers-link.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>Link to header page</title> + </head> + <body> + <a href="http://localhost:{{ port }}/headers" id="link">headers</a> + </body> +</html> diff --git a/tests/end2end/test_invocations.py b/tests/end2end/test_invocations.py index abffc9350..e34bd912d 100644 --- a/tests/end2end/test_invocations.py +++ b/tests/end2end/test_invocations.py @@ -23,6 +23,7 @@ import subprocess import sys import logging import re +import json import pytest from PyQt5.QtCore import QProcess @@ -383,3 +384,36 @@ def test_qute_settings_persistence(short_tmpdir, request, quteproc_new): quteproc_new.send_cmd(':quit') quteproc_new.wait_for_quit() + + +@pytest.mark.parametrize('value, expected', [ + ('always', 'http://localhost:(port2)/headers-link/(port)'), + ('never', None), + ('same-domain', 'http://localhost:(port2)/'), # None with QtWebKit +]) +def test_referrer(quteproc_new, server, server2, request, value, expected): + """Check referrer settings.""" + args = _base_args(request.config) + [ + '--temp-basedir', + '-s', 'content.headers.referer', value, + ] + quteproc_new.start(args) + + quteproc_new.open_path(f'headers-link/{server.port}', port=server2.port) + quteproc_new.send_cmd(':click-element id link') + quteproc_new.wait_for_load_finished('headers') + + content = quteproc_new.get_content() + data = json.loads(content) + print(data) + headers = data['headers'] + + if not request.config.webengine and value == 'same-domain': + # With QtWebKit and same-domain, we don't send a referer at all. + expected = None + + if expected is not None: + for key, val in [('(port)', server.port), ('(port2)', server2.port)]: + expected = expected.replace(key, str(val)) + + assert headers.get('Referer') == expected |