aboutsummaryrefslogtreecommitdiff
path: root/desktop/tests
diff options
context:
space:
mode:
authorMiguel Jacq <mig@mig5.net>2021-05-11 08:15:35 +1000
committerMiguel Jacq <mig@mig5.net>2021-05-11 08:15:35 +1000
commita066c871a9b2b6eea14f7c1703e61e9ffa31496b (patch)
tree64ef0c4eac2b8673956a45a121f413837a91257c /desktop/tests
parentdc4eaffa97af88abd6862100ffa8f3c5a6cd1f90 (diff)
parent66b27b863e1c539bb5e285293414a3ad15adeafd (diff)
downloadonionshare-a066c871a9b2b6eea14f7c1703e61e9ffa31496b.tar.gz
onionshare-a066c871a9b2b6eea14f7c1703e61e9ffa31496b.zip
Merge branch 'develop' into fix_405_error_and_other_methods
Diffstat (limited to 'desktop/tests')
-rw-r--r--desktop/tests/gui_base_test.py13
-rwxr-xr-xdesktop/tests/run.sh3
-rw-r--r--desktop/tests/test_gui_chat.py75
-rw-r--r--desktop/tests/test_gui_tabs.py30
4 files changed, 115 insertions, 6 deletions
diff --git a/desktop/tests/gui_base_test.py b/desktop/tests/gui_base_test.py
index d630cdf0..acaa9739 100644
--- a/desktop/tests/gui_base_test.py
+++ b/desktop/tests/gui_base_test.py
@@ -14,6 +14,7 @@ from onionshare import Application, MainWindow, GuiCommon
from onionshare.tab.mode.share_mode import ShareMode
from onionshare.tab.mode.receive_mode import ReceiveMode
from onionshare.tab.mode.website_mode import WebsiteMode
+from onionshare.tab.mode.chat_mode import ChatMode
from onionshare import strings
@@ -133,6 +134,17 @@ class GuiBaseTest(unittest.TestCase):
return tab
+ def new_chat_tab(self):
+ tab = self.gui.tabs.widget(0)
+ self.verify_new_tab(tab)
+
+ # Chat
+ tab.chat_button.click()
+ self.assertFalse(tab.new_tab.isVisible())
+ self.assertTrue(tab.chat_mode.isVisible())
+
+ return tab
+
def close_all_tabs(self):
for _ in range(self.gui.tabs.count()):
tab = self.gui.tabs.widget(0)
@@ -361,6 +373,7 @@ class GuiBaseTest(unittest.TestCase):
and not tab.settings.get("share", "autostop_sharing")
)
or (type(tab.get_mode()) == WebsiteMode)
+ or (type(tab.get_mode()) == ChatMode)
):
tab.get_mode().server_status.server_button.click()
self.assertEqual(tab.get_mode().server_status.status, 0)
diff --git a/desktop/tests/run.sh b/desktop/tests/run.sh
index 833c1516..0f019b05 100755
--- a/desktop/tests/run.sh
+++ b/desktop/tests/run.sh
@@ -2,4 +2,5 @@
pytest -v tests/test_gui_tabs.py && \
pytest -v tests/test_gui_share.py && \
pytest -v tests/test_gui_receive.py && \
-pytest -v tests/test_gui_website.py
+pytest -v tests/test_gui_website.py && \
+pytest -v tests/test_gui_chat.py
diff --git a/desktop/tests/test_gui_chat.py b/desktop/tests/test_gui_chat.py
new file mode 100644
index 00000000..7a19168b
--- /dev/null
+++ b/desktop/tests/test_gui_chat.py
@@ -0,0 +1,75 @@
+import requests
+
+from PySide2 import QtTest
+
+from .gui_base_test import GuiBaseTest
+
+
+class TestChat(GuiBaseTest):
+ # Shared test methods
+
+ def view_chat(self, tab):
+ """Test that we can view the chat room"""
+ url = f"http://127.0.0.1:{tab.app.port}/"
+ if tab.settings.get("general", "public"):
+ r = requests.get(url)
+ else:
+ r = requests.get(
+ url,
+ auth=requests.auth.HTTPBasicAuth(
+ "onionshare", tab.get_mode().server_status.web.password
+ ),
+ )
+
+ QtTest.QTest.qWait(500, self.gui.qtapp)
+ self.assertTrue("Chat <b>requires JavaScript</b>" in r.text)
+
+ cookies_dict = requests.utils.dict_from_cookiejar(r.cookies)
+ self.assertTrue("session" in cookies_dict.keys())
+
+ def change_username(self, tab):
+ """Test that we can change our username"""
+ url = f"http://127.0.0.1:{tab.app.port}/update-session-username"
+ data = {"username":"oniontest"}
+ if tab.settings.get("general", "public"):
+ r = requests.post(url, json=data)
+ else:
+ r = requests.post(
+ url,
+ json=data,
+ auth=requests.auth.HTTPBasicAuth(
+ "onionshare", tab.get_mode().server_status.web.password
+ ),
+ )
+
+ QtTest.QTest.qWait(500, self.gui.qtapp)
+ jsonResponse = r.json()
+ self.assertTrue(jsonResponse["success"])
+ self.assertEqual(jsonResponse["username"], "oniontest")
+
+ def run_all_chat_mode_tests(self, tab):
+ """Tests in chat mode after starting a chat"""
+ self.server_working_on_start_button_pressed(tab)
+ self.server_status_indicator_says_starting(tab)
+ self.server_is_started(tab, startup_time=500)
+ self.web_server_is_running(tab)
+ self.have_a_password(tab)
+ self.url_description_shown(tab)
+ self.have_copy_url_button(tab)
+ self.have_show_qr_code_button(tab)
+ self.server_status_indicator_says_started(tab)
+ self.view_chat(tab)
+ self.change_username(tab)
+ self.server_is_stopped(tab)
+ self.web_server_is_stopped(tab)
+ self.server_status_indicator_says_closed(tab)
+
+ # Tests
+
+ def test_chat(self):
+ """
+ Test chat mode
+ """
+ tab = self.new_chat_tab()
+ self.run_all_chat_mode_tests(tab)
+ self.close_all_tabs()
diff --git a/desktop/tests/test_gui_tabs.py b/desktop/tests/test_gui_tabs.py
index 84558420..09f38bb4 100644
--- a/desktop/tests/test_gui_tabs.py
+++ b/desktop/tests/test_gui_tabs.py
@@ -153,11 +153,21 @@ class TestTabs(GuiBaseTest):
self.gui.status_bar.server_status_label.text(), "Ready to share"
)
+ # New tab, chat mode
+ self.gui.tabs.new_tab_button.click()
+ self.gui.tabs.widget(4).chat_button.click()
+ self.assertFalse(self.gui.tabs.widget(4).new_tab.isVisible())
+ self.assertTrue(self.gui.tabs.widget(4).chat_mode.isVisible())
+ self.assertEqual(
+ self.gui.status_bar.server_status_label.text(), "Ready to chat"
+ )
+
# Close tabs
self.gui.tabs.tabBar().tabButton(0, QtWidgets.QTabBar.RightSide).click()
self.gui.tabs.tabBar().tabButton(0, QtWidgets.QTabBar.RightSide).click()
self.gui.tabs.tabBar().tabButton(0, QtWidgets.QTabBar.RightSide).click()
self.gui.tabs.tabBar().tabButton(0, QtWidgets.QTabBar.RightSide).click()
+ self.gui.tabs.tabBar().tabButton(0, QtWidgets.QTabBar.RightSide).click()
def test_07_close_share_tab_while_server_started_should_warn(self):
"""Closing a share mode tab when the server is running should throw a warning"""
@@ -165,7 +175,7 @@ class TestTabs(GuiBaseTest):
self.close_tab_with_active_server(tab)
def test_08_close_receive_tab_while_server_started_should_warn(self):
- """Closing a recieve mode tab when the server is running should throw a warning"""
+ """Closing a receive mode tab when the server is running should throw a warning"""
tab = self.new_receive_tab()
self.close_tab_with_active_server(tab)
@@ -174,22 +184,32 @@ class TestTabs(GuiBaseTest):
tab = self.new_website_tab_with_files()
self.close_tab_with_active_server(tab)
- def test_10_close_persistent_share_tab_shows_warning(self):
+ def test_10_close_chat_tab_while_server_started_should_warn(self):
+ """Closing a chat mode tab when the server is running should throw a warning"""
+ tab = self.new_chat_tab()
+ self.close_tab_with_active_server(tab)
+
+ def test_11_close_persistent_share_tab_shows_warning(self):
"""Closing a share mode tab that's persistent should show a warning"""
tab = self.new_share_tab_with_files()
self.close_persistent_tab(tab)
- def test_11_close_persistent_receive_tab_shows_warning(self):
+ def test_12_close_persistent_receive_tab_shows_warning(self):
"""Closing a receive mode tab that's persistent should show a warning"""
tab = self.new_receive_tab()
self.close_persistent_tab(tab)
- def test_12_close_persistent_website_tab_shows_warning(self):
+ def test_13_close_persistent_website_tab_shows_warning(self):
"""Closing a website mode tab that's persistent should show a warning"""
tab = self.new_website_tab_with_files()
self.close_persistent_tab(tab)
- def test_13_quit_with_server_started_should_warn(self):
+ def test_14_close_persistent_chat_tab_shows_warning(self):
+ """Closing a chat mode tab that's persistent should show a warning"""
+ tab = self.new_chat_tab()
+ self.close_persistent_tab(tab)
+
+ def test_15_quit_with_server_started_should_warn(self):
"""Quitting OnionShare with any active servers should show a warning"""
tab = self.new_share_tab()