aboutsummaryrefslogtreecommitdiff
path: root/desktop/tests/test_gui_chat.py
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/tests/test_gui_chat.py')
-rw-r--r--desktop/tests/test_gui_chat.py75
1 files changed, 75 insertions, 0 deletions
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()