summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-11-23 19:20:45 +0100
committerFlorian Bruhin <me@the-compiler.org>2020-11-23 20:18:12 +0100
commitc1431ff55ec91d24e46abe3f2c1babbe42f4b079 (patch)
tree282fff2d80a8916085900e8a69f71bf19428413c
parent699a5a59f5c164d1cbe5093a9cd0f5b9afbcfe62 (diff)
downloadqutebrowser-c1431ff55ec91d24e46abe3f2c1babbe42f4b079.tar.gz
qutebrowser-c1431ff55ec91d24e46abe3f2c1babbe42f4b079.zip
Add end2end test for referer settings
See #5892, #5903
-rw-r--r--tests/end2end/fixtures/webserver_sub.py6
-rw-r--r--tests/end2end/templates/headers-link.html10
-rw-r--r--tests/end2end/test_invocations.py34
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