diff options
Diffstat (limited to 'tests/GuiShareTest.py')
-rw-r--r-- | tests/GuiShareTest.py | 171 |
1 files changed, 115 insertions, 56 deletions
diff --git a/tests/GuiShareTest.py b/tests/GuiShareTest.py index 6925defa..630d0562 100644 --- a/tests/GuiShareTest.py +++ b/tests/GuiShareTest.py @@ -6,89 +6,137 @@ import tempfile from PyQt5 import QtCore, QtTest from .GuiBaseTest import GuiBaseTest + class GuiShareTest(GuiBaseTest): # Persistence tests def have_same_password(self, password): - '''Test that we have the same password''' + """Test that we have the same password""" self.assertEqual(self.gui.share_mode.server_status.web.password, password) # Share-specific tests def file_selection_widget_has_files(self, num=2): - '''Test that the number of items in the list is as expected''' - self.assertEqual(self.gui.share_mode.server_status.file_selection.get_num_files(), num) - + """Test that the number of items in the list is as expected""" + self.assertEqual( + self.gui.share_mode.server_status.file_selection.get_num_files(), num + ) def deleting_all_files_hides_delete_button(self): - '''Test that clicking on the file item shows the delete button. Test that deleting the only item in the list hides the delete button''' - rect = self.gui.share_mode.server_status.file_selection.file_list.visualItemRect(self.gui.share_mode.server_status.file_selection.file_list.item(0)) - QtTest.QTest.mouseClick(self.gui.share_mode.server_status.file_selection.file_list.viewport(), QtCore.Qt.LeftButton, pos=rect.center()) + """Test that clicking on the file item shows the delete button. Test that deleting the only item in the list hides the delete button""" + rect = self.gui.share_mode.server_status.file_selection.file_list.visualItemRect( + self.gui.share_mode.server_status.file_selection.file_list.item(0) + ) + QtTest.QTest.mouseClick( + self.gui.share_mode.server_status.file_selection.file_list.viewport(), + QtCore.Qt.LeftButton, + pos=rect.center(), + ) # Delete button should be visible - self.assertTrue(self.gui.share_mode.server_status.file_selection.delete_button.isVisible()) + self.assertTrue( + self.gui.share_mode.server_status.file_selection.delete_button.isVisible() + ) # Click delete, delete button should still be visible since we have one more file - QtTest.QTest.mouseClick(self.gui.share_mode.server_status.file_selection.delete_button, QtCore.Qt.LeftButton) - - rect = self.gui.share_mode.server_status.file_selection.file_list.visualItemRect(self.gui.share_mode.server_status.file_selection.file_list.item(0)) - QtTest.QTest.mouseClick(self.gui.share_mode.server_status.file_selection.file_list.viewport(), QtCore.Qt.LeftButton, pos=rect.center()) - self.assertTrue(self.gui.share_mode.server_status.file_selection.delete_button.isVisible()) - QtTest.QTest.mouseClick(self.gui.share_mode.server_status.file_selection.delete_button, QtCore.Qt.LeftButton) + QtTest.QTest.mouseClick( + self.gui.share_mode.server_status.file_selection.delete_button, + QtCore.Qt.LeftButton, + ) + + rect = self.gui.share_mode.server_status.file_selection.file_list.visualItemRect( + self.gui.share_mode.server_status.file_selection.file_list.item(0) + ) + QtTest.QTest.mouseClick( + self.gui.share_mode.server_status.file_selection.file_list.viewport(), + QtCore.Qt.LeftButton, + pos=rect.center(), + ) + self.assertTrue( + self.gui.share_mode.server_status.file_selection.delete_button.isVisible() + ) + QtTest.QTest.mouseClick( + self.gui.share_mode.server_status.file_selection.delete_button, + QtCore.Qt.LeftButton, + ) # No more files, the delete button should be hidden - self.assertFalse(self.gui.share_mode.server_status.file_selection.delete_button.isVisible()) - + self.assertFalse( + self.gui.share_mode.server_status.file_selection.delete_button.isVisible() + ) def add_a_file_and_delete_using_its_delete_widget(self): - '''Test that we can also delete a file by clicking on its [X] widget''' - self.gui.share_mode.server_status.file_selection.file_list.add_file('/etc/hosts') - QtTest.QTest.mouseClick(self.gui.share_mode.server_status.file_selection.file_list.item(0).item_button, QtCore.Qt.LeftButton) + """Test that we can also delete a file by clicking on its [X] widget""" + self.gui.share_mode.server_status.file_selection.file_list.add_file( + "/etc/hosts" + ) + QtTest.QTest.mouseClick( + self.gui.share_mode.server_status.file_selection.file_list.item( + 0 + ).item_button, + QtCore.Qt.LeftButton, + ) self.file_selection_widget_has_files(0) - def file_selection_widget_read_files(self): - '''Re-add some files to the list so we can share''' - self.gui.share_mode.server_status.file_selection.file_list.add_file('/etc/hosts') - self.gui.share_mode.server_status.file_selection.file_list.add_file('/tmp/test.txt') + """Re-add some files to the list so we can share""" + self.gui.share_mode.server_status.file_selection.file_list.add_file( + "/etc/hosts" + ) + self.gui.share_mode.server_status.file_selection.file_list.add_file( + "/tmp/test.txt" + ) self.file_selection_widget_has_files(2) - def add_large_file(self): - '''Add a large file to the share''' - size = 1024*1024*155 - with open('/tmp/large_file', 'wb') as fout: + """Add a large file to the share""" + size = 1024 * 1024 * 155 + with open("/tmp/large_file", "wb") as fout: fout.write(os.urandom(size)) - self.gui.share_mode.server_status.file_selection.file_list.add_file('/tmp/large_file') - + self.gui.share_mode.server_status.file_selection.file_list.add_file( + "/tmp/large_file" + ) def add_delete_buttons_hidden(self): - '''Test that the add and delete buttons are hidden when the server starts''' - self.assertFalse(self.gui.share_mode.server_status.file_selection.add_button.isVisible()) - self.assertFalse(self.gui.share_mode.server_status.file_selection.delete_button.isVisible()) - + """Test that the add and delete buttons are hidden when the server starts""" + self.assertFalse( + self.gui.share_mode.server_status.file_selection.add_button.isVisible() + ) + self.assertFalse( + self.gui.share_mode.server_status.file_selection.delete_button.isVisible() + ) def download_share(self, public_mode): - '''Test that we can download the share''' + """Test that we can download the share""" url = "http://127.0.0.1:{}/download".format(self.gui.app.port) if public_mode: r = requests.get(url) else: - r = requests.get(url, auth=requests.auth.HTTPBasicAuth('onionshare', self.gui.share_mode.server_status.web.password)) + r = requests.get( + url, + auth=requests.auth.HTTPBasicAuth( + "onionshare", self.gui.share_mode.server_status.web.password + ), + ) tmp_file = tempfile.NamedTemporaryFile() - with open(tmp_file.name, 'wb') as f: + with open(tmp_file.name, "wb") as f: f.write(r.content) zip = zipfile.ZipFile(tmp_file.name) QtTest.QTest.qWait(2000) - self.assertEqual('onionshare', zip.read('test.txt').decode('utf-8')) + self.assertEqual("onionshare", zip.read("test.txt").decode("utf-8")) def individual_file_is_viewable_or_not(self, public_mode, stay_open): - '''Test whether an individual file is viewable (when in stay_open mode) and that it isn't (when not in stay_open mode)''' + """Test whether an individual file is viewable (when in stay_open mode) and that it isn't (when not in stay_open mode)""" url = "http://127.0.0.1:{}".format(self.gui.app.port) download_file_url = "http://127.0.0.1:{}/test.txt".format(self.gui.app.port) if public_mode: r = requests.get(url) else: - r = requests.get(url, auth=requests.auth.HTTPBasicAuth('onionshare', self.gui.share_mode.server_status.web.password)) + r = requests.get( + url, + auth=requests.auth.HTTPBasicAuth( + "onionshare", self.gui.share_mode.server_status.web.password + ), + ) if stay_open: self.assertTrue('a href="test.txt"' in r.text) @@ -96,32 +144,44 @@ class GuiShareTest(GuiBaseTest): if public_mode: r = requests.get(download_file_url) else: - r = requests.get(download_file_url, auth=requests.auth.HTTPBasicAuth('onionshare', self.gui.share_mode.server_status.web.password)) + r = requests.get( + download_file_url, + auth=requests.auth.HTTPBasicAuth( + "onionshare", self.gui.share_mode.server_status.web.password + ), + ) tmp_file = tempfile.NamedTemporaryFile() - with open(tmp_file.name, 'wb') as f: + with open(tmp_file.name, "wb") as f: f.write(r.content) - with open(tmp_file.name, 'r') as f: - self.assertEqual('onionshare', f.read()) + with open(tmp_file.name, "r") as f: + self.assertEqual("onionshare", f.read()) else: self.assertFalse('a href="/test.txt"' in r.text) if public_mode: r = requests.get(download_file_url) else: - r = requests.get(download_file_url, auth=requests.auth.HTTPBasicAuth('onionshare', self.gui.share_mode.server_status.web.password)) + r = requests.get( + download_file_url, + auth=requests.auth.HTTPBasicAuth( + "onionshare", self.gui.share_mode.server_status.web.password + ), + ) self.assertEqual(r.status_code, 404) self.download_share(public_mode) QtTest.QTest.qWait(2000) def hit_401(self, public_mode): - '''Test that the server stops after too many 401s, or doesn't when in public_mode''' + """Test that the server stops after too many 401s, or doesn't when in public_mode""" url = "http://127.0.0.1:{}/".format(self.gui.app.port) for _ in range(20): password_guess = self.gui.common.build_password() - r = requests.get(url, auth=requests.auth.HTTPBasicAuth('onionshare', password_guess)) + r = requests.get( + url, auth=requests.auth.HTTPBasicAuth("onionshare", password_guess) + ) # A nasty hack to avoid the Alert dialog that blocks the rest of the test if not public_mode: @@ -134,7 +194,6 @@ class GuiShareTest(GuiBaseTest): else: self.web_server_is_stopped() - # 'Grouped' tests follow from here def run_all_share_mode_setup_tests(self): @@ -148,7 +207,6 @@ class GuiShareTest(GuiBaseTest): self.add_a_file_and_delete_using_its_delete_widget() self.file_selection_widget_read_files() - def run_all_share_mode_started_tests(self, public_mode, startup_time=2000): """Tests in share mode after starting a share""" self.server_working_on_start_button_pressed(self.gui.share_mode) @@ -162,10 +220,9 @@ class GuiShareTest(GuiBaseTest): self.have_copy_url_button(self.gui.share_mode, public_mode) self.server_status_indicator_says_started(self.gui.share_mode) - def run_all_share_mode_download_tests(self, public_mode, stay_open): """Tests in share mode after downloading a share""" - self.web_page(self.gui.share_mode, 'Total size', public_mode) + self.web_page(self.gui.share_mode, "Total size", public_mode) self.download_share(public_mode) self.history_widgets_present(self.gui.share_mode) self.server_is_stopped(self.gui.share_mode, stay_open) @@ -179,7 +236,7 @@ class GuiShareTest(GuiBaseTest): def run_all_share_mode_individual_file_download_tests(self, public_mode, stay_open): """Tests in share mode after downloading a share""" - self.web_page(self.gui.share_mode, 'Total size', public_mode) + self.web_page(self.gui.share_mode, "Total size", public_mode) self.individual_file_is_viewable_or_not(public_mode, stay_open) self.history_widgets_present(self.gui.share_mode) self.server_is_stopped(self.gui.share_mode, stay_open) @@ -222,7 +279,6 @@ class GuiShareTest(GuiBaseTest): self.web_server_is_stopped() self.server_status_indicator_says_closed(self.gui.share_mode, stay_open) - def run_all_share_mode_persistent_tests(self, public_mode, stay_open): """Same as end-to-end share tests but also test the password is the same on multiple shared""" self.run_all_share_mode_setup_tests() @@ -231,7 +287,6 @@ class GuiShareTest(GuiBaseTest): self.run_all_share_mode_download_tests(public_mode, stay_open) self.have_same_password(password) - def run_all_share_mode_timer_tests(self, public_mode): """Auto-stop timer tests in share mode""" self.run_all_share_mode_setup_tests() @@ -258,12 +313,16 @@ class GuiShareTest(GuiBaseTest): self.set_autostart_timer(self.gui.share_mode, 15) self.set_timeout(self.gui.share_mode, 5) QtCore.QTimer.singleShot(4000, self.accept_dialog) - QtTest.QTest.mouseClick(self.gui.share_mode.server_status.server_button, QtCore.Qt.LeftButton) + QtTest.QTest.mouseClick( + self.gui.share_mode.server_status.server_button, QtCore.Qt.LeftButton + ) self.server_is_stopped(self.gui.share_mode, False) def run_all_share_mode_unreadable_file_tests(self): - '''Attempt to share an unreadable file''' + """Attempt to share an unreadable file""" self.run_all_share_mode_setup_tests() QtCore.QTimer.singleShot(1000, self.accept_dialog) - self.gui.share_mode.server_status.file_selection.file_list.add_file('/tmp/nonexistent.txt') + self.gui.share_mode.server_status.file_selection.file_list.add_file( + "/tmp/nonexistent.txt" + ) self.file_selection_widget_has_files(2) |