From f2ed14a24aa75a269184b5ff81271a7b56f7de4b Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Tue, 8 Dec 2015 17:15:47 +0100 Subject: [PATCH] Add unit tests for browser.pdfjs --- tests/unit/browser/test_pdfjs.py | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 tests/unit/browser/test_pdfjs.py diff --git a/tests/unit/browser/test_pdfjs.py b/tests/unit/browser/test_pdfjs.py new file mode 100644 index 000000000..faaddcd21 --- /dev/null +++ b/tests/unit/browser/test_pdfjs.py @@ -0,0 +1,75 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2015 Daniel Schadt +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +"""Tests for qutebrowser.browser.pdfjs""" + +import textwrap + +import pytest +from PyQt5.QtCore import QUrl + +from qutebrowser.browser import pdfjs + + +# Note that we got double protection, once because we use QUrl.FullyEncoded and +# because we use qutebrowser.browser.webelem.javascript_escape. Characters +# like " are already replaced by QUrl. +@pytest.mark.parametrize('url, expected', [ + ('http://foo.bar', 'PDFView.open("http://foo.bar");\n'), + ('http://"', 'PDFView.open("");\n'), + ('\0', 'PDFView.open("%00");\n'), + ('http://foobar/");alert("attack!");', + 'PDFView.open("http://foobar/%22);alert(%22attack!%22);");\n'), +]) +def test_generate_pdfjs_script(url, expected): + url = QUrl(url) + actual = pdfjs._generate_pdfjs_script(url) + assert actual == expected + + +def test_fix_urls(): + page = textwrap.dedent(""" + + + + + + """).strip() + + expected = textwrap.dedent(""" + + + + + + """).strip() + + actual = pdfjs.fix_urls(page) + assert actual == expected + + +@pytest.mark.parametrize('path, expected', [ + ('web/viewer.js', 'viewer.js'), + ('build/locale/foo.bar', 'locale/foo.bar'), + ('viewer.js', 'viewer.js'), + ('foo/viewer.css', 'foo/viewer.css'), +]) +def test_remove_prefix(path, expected): + assert pdfjs._remove_prefix(path) == expected +