Skip to content

Commit

Permalink
Add a feature test for encrypted PDF
Browse files Browse the repository at this point in the history
  • Loading branch information
jeromerobert authored and dreua committed Apr 14, 2021
1 parent 522da53 commit 6ca5574
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 9 deletions.
71 changes: 62 additions & 9 deletions tests/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
* gsettings set org.gnome.desktop.interface toolkit-accessibility true
Tests need to be run with default window size (i.e rm ~/.config/pdfarranger/config.ini)
Some tips:
* Use to print widget tree (names and roles) self._app().dump()
"""


Expand Down Expand Up @@ -172,6 +176,18 @@ def _popupmenu(self, page, action):
def _process(self):
return self.__class__.pdfarranger.process

def _import_file(self, filename):
"""Try to import a file with a file chooser and return that file chooser object"""
self._mainmenu("Import")
filechooser = self._app().child(roleName='file chooser')
treeview = filechooser.child(roleName="table", name="Files")
treeview.keyCombo("<ctrl>L")
treeview.typeText(os.path.abspath(filename))
ob = filechooser.button("Open")
self._wait_cond(lambda: ob.sensitive)
ob.click()
return filechooser

@classmethod
def setUpClass(cls):
cls.pdfarranger = None
Expand Down Expand Up @@ -323,7 +339,6 @@ def test_11_quit(self):


class TestBatch2(PdfArrangerTest):
LAST=True
def test_01_open_empty(self):
from dogtail.config import config
config.searchBackoffDuration = 1
Expand All @@ -335,14 +350,7 @@ def test_01_open_empty(self):
config.searchBackoffDuration = 0.1

def test_02_import(self):
self._mainmenu("Import")
filechooser = self._app().child(roleName='file chooser')
treeview = filechooser.child(roleName="table", name="Files")
treeview.keyCombo("<ctrl>L")
treeview.typeText(os.path.abspath("tests/test.pdf"))
ob = filechooser.button("Open")
self._wait_cond(lambda: ob.sensitive)
ob.click()
filechooser = self._import_file("tests/test.pdf")
self._wait_cond(lambda: filechooser.dead)
self.assertEqual(len(self._icons()), 2)

Expand Down Expand Up @@ -377,3 +385,48 @@ def test_07_quit(self):
dialog.child(name="Don’t Save").click()
# check that process actually exit
self._process().wait(timeout=22)


class TestBatch3(PdfArrangerTest):
# Kill X11 after that batch
LAST=True
def test_01_open_encrypted(self):
from dogtail.config import config
config.searchBackoffDuration = 1
filename = os.path.join(self.__class__.tmp, "other_encrypted.pdf")
shutil.copyfile("tests/test_encrypted.pdf", filename)
self.__class__.pdfarranger = PdfArrangerManager([filename])
# check that process is actually running
self.assertIsNone(self._process().poll())
app = self._app()
# Now let's go faster
config.searchBackoffDuration = 0.1
dialog = app.child(roleName="dialog")
passfield = dialog.child(roleName="password text")
passfield.text = "foobar"
dialog.child(name="OK").click()
self._wait_cond(lambda: dialog.dead)

def test_02_import_wrong_pass(self):
filechooser = self._import_file("tests/test_encrypted.pdf")
dialog = self._app().child(roleName="dialog")
passfield = dialog.child(roleName="password text")
passfield.text = "wrong"
dialog.child(name="OK").click()
dialog = self._app().child(roleName="dialog")
passfield = dialog.child(roleName="password text")
dialog.child(name="Cancel").click()
self._wait_cond(lambda: dialog.dead)
self._wait_cond(lambda: filechooser.dead)
self.assertEqual(len(self._icons()), 2)

def test_03_quit(self):
self._app().child(roleName="layered pane").keyCombo("<ctrl>q")
dialog = self._app().child(roleName="alert")
dialog.child(name="Save").click()
filechooser = self._app().child(roleName="file chooser")
filechooser.button("Save").click()
dialog = self._app().child(roleName="alert")
dialog.child(name="Replace").click()
# check that process actually exit
self._process().wait(timeout=22)
Binary file added tests/test_encrypted.pdf
Binary file not shown.

0 comments on commit 6ca5574

Please sign in to comment.