summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2022-01-05Merge remote-tracking branch 'origin/pr/6626'Florian Bruhin
2022-01-04Use flake8-pytest-stylepytest-styleFlorian Bruhin
2021-12-23Add additional testsFlorian Bruhin
2021-12-06Drop unnecessary .keys()Florian Bruhin
2021-12-03Add more webelement selector unit testsFlorian Bruhin
2021-12-03pylint: Enable docparams checkerFlorian Bruhin
2021-12-03pylint: Enable for_any_all extensionFlorian Bruhin
2021-12-03pylint: Work around some minor false-positivesFlorian Bruhin
See #6857
2021-12-03pylint: Fix some legitimate issuesFlorian Bruhin
2021-12-02pylint: Remove bad-continuation supressionsFlorian Bruhin
Removed in https://github.com/PyCQA/pylint/pull/3571 - should use black instead
2021-12-02pylint: Remove now-useless suppressionsFlorian Bruhin
2021-12-02pylint: Handle consider-using-withFlorian Bruhin
2021-12-01Add hint test for tabindex-negativeFlorian Bruhin
2021-12-01tests: Move invisible.html to hints/htmlFlorian Bruhin
2021-12-01Merge remote-tracking branch 'origin/pr/6798'Florian Bruhin
2021-11-28Make interpreting number keys as counts configurablePhilipp Albrecht
By default numbers are interpreted as counts for bindings. Making this behavior configurable allows for emacs-like bindings, where number keys are passed through.
2021-11-22Merge remote-tracking branch 'origin/pr/6796'Florian Bruhin
2021-11-22Skip failing tests on WindowsTim Gadanidis
2021-11-21Add tests for closing last tab when giving/takingTim Gadanidis
2021-11-17tests: Fix test_real_git with different core.abbrevFlorian Bruhin
Fixes #6825
2021-11-13Rename --qute-bdd-backend and QUTE_BDD_BACKENDFlorian Bruhin
2021-11-13Update docs/changelogFlorian Bruhin
2021-11-13Merge remote-tracking branch 'origin/pr/6810'Florian Bruhin
2021-11-12Add docstring to _select_backend()Philipp Albrecht
2021-11-12Extract backend selection into functionsPhilipp Albrecht
In order to fix the issue of silently using QtWebEngine when e.g. --qute-bdd-backend=webkit is given, even though QtWebEngine is not available, I moved the selection logic into separate functions to clear things up a little. I tried to avoid the duplicate imports, in case the backend is auto-selected, but after a while of thinking I abandoned that idea in favor of moving forward with this.
2021-11-12Use config.webengine in pytest_report_header()Philipp Albrecht
2021-11-12Rename variablePhilipp Albrecht
Co-authored-by: Florian Bruhin <me@the-compiler.org>
2021-11-12Fix spellingPhilipp Albrecht
Co-authored-by: Florian Bruhin <me@the-compiler.org>
2021-11-11Fix Testsharish3124
2021-11-11Added Tests and Docs 📰harish3124
2021-11-08Additionally report backend's versionPhilipp Albrecht
To give more information we report the version additionally to the backend's name.
2021-11-05Enable overriding of backend auto-detectionPhilipp Albrecht
One can override the auto-detection mechanism by passing the backend via --qute-bdd-backend=<backend> or by setting the environment variable QUTE_BDD_BACKEND=<backend>.
2021-11-05Report backend in pytest_report_header()Philipp Albrecht
2021-11-05Consider auto-detection when setting config.webenginePhilipp Albrecht
Since config.webengine is widely used in the codebase, I decided to keep it instead of replacing it entirely by using config.backend.
2021-11-05Set config.backend in pytest_configure()Philipp Albrecht
For now this just serves the purpose of making the information available to the pytest_report_header() hook, where we want to report, which backend is used when running tests.
2021-11-05Fix lintFlorian Bruhin
2021-11-04Fix back-to-forward test search direction testTim Gadanidis
Test originally expected "Baz" instead of "baz", which is what should actually be found if starting at the bottom and then searching forward (wrapping around).
2021-11-04Fix lintFlorian Bruhin
2021-11-04Test resetting direction on duplicate searchesTim Gadanidis
2021-11-04tests: Set IDs for urlmatch testsFlorian Bruhin
This works around a VS Code bug with weird node IDs: https://github.com/microsoft/vscode-python/issues/17676
2021-11-02Update duplicate search testTim Gadanidis
2021-11-01Remove old PyInstaller handlingFlorian Bruhin
See #6792 and https://github.com/pyinstaller/pyinstaller/issues/1905 (fixed in PyInstaller 4.4)
2021-10-30Add flatpak hint to :spawn messageFlorian Bruhin
See https://www.reddit.com/r/qutebrowser/comments/qirb5k/editor_gvim_failed_to_start_execpv_no_such_file/
2021-10-21CVE-2021-41146: Add --untrusted-args to avoid argument injectionFlorian Bruhin
On Windows, if an application is registered as an URL handler like this: HKEY_CLASSES_ROOT https URL Protocol = "" [...] shell open command (Default) = ".../qutebrowser.exe" "%1" one would think that Windows takes care of making sure URLs can't inject arguments by containing a quote. However, this is not the case, as stated by the Microsoft docs: https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914(v=vs.85) Security Warning: Applications that handle URI schemes must consider how to respond to malicious data. Because handler applications can receive data from untrusted sources, the URI and other parameter values passed to the application may contain malicious data that attempts to exploit the handling application. and As noted above, the string that is passed to a pluggable protocol handler might be broken across multiple parameters. Malicious parties could use additional quote or backslash characters to pass additional command line parameters. For this reason, pluggable protocol handlers should assume that any parameters on the command line could come from malicious parties, and carefully validate them. Applications that could initiate dangerous actions based on external data must first confirm those actions with the user. In addition, handling applications should be tested with URIs that are overly long or contain unexpected (or undesirable) character sequences. Indeed it's trivial to pass a command to qutebrowser this way - given how trivial the exploit is to recreate given the information above, here's a PoC: https:x" ":spawn calc (or qutebrowserurl: instead of https: if qutebrowser isn't registered as a default browser) Some applications do escape the quote characters before calling qutebrowser - but others, like Outlook Desktop or .url files, do not. As a fix, we add an --untrusted-args flag and some early validation of the raw sys.argv, before parsing any arguments or e.g. creating a QApplication (which might already allow injecting Qt flags there). We assume that there's no way for an attacker to inject flags *before* the %1 placeholder in the registry, and add --untrusted-args as the last argument of the registry entry. This way, it'd still be possible for users to customize their invocation flags without having to remove --untrusted-args. After --untrusted-args, however, we have some rather strict checks: - There should be zero or one arguments, but not two (or more) - Any argument may not start with - (flag) or : (qutebrowser command) We also add the --untrusted-args flag to the Linux .desktop file, though it should not be needed there, as the specification there is sane: https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables Implementations must take care not to expand field codes into multiple arguments unless explicitly instructed by this specification. This means that name fields, filenames and other replacements that can contain spaces must be passed as a single argument to the executable program after expansion. There is no comparable mechanism on macOS, which opens the application without arguments and then sends an "open" event to it: https://doc.qt.io/qt-5/qfileopenevent.html This issue was introduced in qutebrowser v1.7.0 which started registering it as URL handler: baee2888907b260881d5831c68500941937261a0 / #4086 This is by no means an issue isolated to qutebrowser. Many other projects have had similar trouble with Windows' rather unexpected behavior: Electron / Exodus Bitcoin wallet: - http://web.archive.org/web/20190702112128/https://medium.com/0xcc/electrons-bug-shellexecute-to-blame-cacb433d0d62 - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000006 - https://medium.com/hackernoon/exploiting-electron-rce-in-exodus-wallet-d9e6db13c374 IE/Firefox: - https://bugzilla.mozilla.org/show_bug.cgi?id=384384 - https://bugzilla.mozilla.org/show_bug.cgi?id=1572838 Others: - http://web.archive.org/web/20210930203632/https://www.vdoo.com/blog/exploiting-custom-protocol-handlers-in-windows - https://parsiya.net/blog/2021-03-17-attack-surface-analysis-part-2-custom-protocol-handlers/ - etc. etc. See CVE-2021-41146 / GHSA-vw27-fwjf-5qxm: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41146 https://github.com/qutebrowser/qutebrowser/security/advisories/GHSA-vw27-fwjf-5qxm Thanks to Ping Fan (Zetta) Ke of Valkyrie-X Security Research Group (VXRL/@vxresearch) for finding and responsibly disclosing this issue.
2021-10-14tests: Adjust for PyYAML 6.0Florian Bruhin
2021-10-09Switch to tab when clicking on notificationCharlotte Van Petegem
2021-09-10Try to fix :tab-clone --private testNicholas Boyd Isacsson
2021-09-10Update test cases for :tab-clone --privateNicholas Boyd Isacsson
2021-09-08Fix lintFlorian Bruhin
2021-09-08tests: Skip problematic parts of test_system_default_renderingFlorian Bruhin