summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMiguel Jacq <mig@mig5.net>2019-09-03 11:19:42 +1000
committerMiguel Jacq <mig@mig5.net>2019-09-03 11:19:42 +1000
commitef78a9c7edc4e866fd32c8a5d2281498f523e312 (patch)
tree929d7ef37f16821dd2f7ab721e2e856eba59018d /tests
parent173b2d3f5ed1cf37fdb33e675e337eb4350498eb (diff)
downloadonionshare-ef78a9c7edc4e866fd32c8a5d2281498f523e312.tar.gz
onionshare-ef78a9c7edc4e866fd32c8a5d2281498f523e312.zip
Add tests to check that hyperlink to a shared file exists when in stay_open mode (and that the file is downloadable individually when so), and not if not
Diffstat (limited to 'tests')
-rw-r--r--tests/GuiShareTest.py47
-rw-r--r--tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py26
-rw-r--r--tests/local_onionshare_share_mode_individual_file_view_test.py26
3 files changed, 99 insertions, 0 deletions
diff --git a/tests/GuiShareTest.py b/tests/GuiShareTest.py
index 70ae43fd..b6f50a28 100644
--- a/tests/GuiShareTest.py
+++ b/tests/GuiShareTest.py
@@ -81,6 +81,35 @@ class GuiShareTest(GuiBaseTest):
QtTest.QTest.qWait(2000)
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)'''
+ 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))
+
+ if stay_open:
+ self.assertTrue('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))
+
+ tmp_file = tempfile.NamedTemporaryFile()
+ 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())
+ else:
+ self.assertFalse('a href="/test.txt"' in r.text)
+ 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'''
url = "http://127.0.0.1:{}/".format(self.gui.app.port)
@@ -147,6 +176,18 @@ class GuiShareTest(GuiBaseTest):
self.server_is_started(self.gui.share_mode)
self.history_indicator(self.gui.share_mode, public_mode)
+ 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.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)
+ self.web_server_is_stopped()
+ self.server_status_indicator_says_closed(self.gui.share_mode, stay_open)
+ self.add_button_visible()
+ self.server_working_on_start_button_pressed(self.gui.share_mode)
+ self.server_is_started(self.gui.share_mode)
+ self.history_indicator(self.gui.share_mode, public_mode)
def run_all_share_mode_tests(self, public_mode, stay_open):
"""End-to-end share tests"""
@@ -155,6 +196,12 @@ class GuiShareTest(GuiBaseTest):
self.run_all_share_mode_download_tests(public_mode, stay_open)
+ def run_all_share_mode_individual_file_tests(self, public_mode, stay_open):
+ """Tests in share mode when viewing an individual file"""
+ self.run_all_share_mode_setup_tests()
+ self.run_all_share_mode_started_tests(public_mode)
+ self.run_all_share_mode_individual_file_download_tests(public_mode, stay_open)
+
def run_all_large_file_tests(self, public_mode, stay_open):
"""Same as above but with a larger file"""
self.run_all_share_mode_setup_tests()
diff --git a/tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py b/tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py
new file mode 100644
index 00000000..4e026e16
--- /dev/null
+++ b/tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+import pytest
+import unittest
+
+from .GuiShareTest import GuiShareTest
+
+class LocalShareModeIndividualFileViewStayOpenTest(unittest.TestCase, GuiShareTest):
+ @classmethod
+ def setUpClass(cls):
+ test_settings = {
+ "close_after_first_download": False,
+ }
+ cls.gui = GuiShareTest.set_up(test_settings)
+
+ @classmethod
+ def tearDownClass(cls):
+ GuiShareTest.tear_down()
+
+ @pytest.mark.gui
+ @pytest.mark.skipif(pytest.__version__ < '2.9', reason="requires newer pytest")
+ def test_gui(self):
+ self.run_all_common_setup_tests()
+ self.run_all_share_mode_individual_file_tests(False, True)
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/local_onionshare_share_mode_individual_file_view_test.py b/tests/local_onionshare_share_mode_individual_file_view_test.py
new file mode 100644
index 00000000..2bdccaec
--- /dev/null
+++ b/tests/local_onionshare_share_mode_individual_file_view_test.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+import pytest
+import unittest
+
+from .GuiShareTest import GuiShareTest
+
+class LocalShareModeIndividualFileViewTest(unittest.TestCase, GuiShareTest):
+ @classmethod
+ def setUpClass(cls):
+ test_settings = {
+ "close_after_first_download": True,
+ }
+ cls.gui = GuiShareTest.set_up(test_settings)
+
+ @classmethod
+ def tearDownClass(cls):
+ GuiShareTest.tear_down()
+
+ @pytest.mark.gui
+ @pytest.mark.skipif(pytest.__version__ < '2.9', reason="requires newer pytest")
+ def test_gui(self):
+ self.run_all_common_setup_tests()
+ self.run_all_share_mode_individual_file_tests(False, False)
+
+if __name__ == "__main__":
+ unittest.main()