diff options
author | Micah Lee <micah@micahflee.com> | 2021-08-20 14:43:21 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-20 14:43:21 -0700 |
commit | b66e742bc20ae977232fc53f22d485c10173ac2f (patch) | |
tree | c6eb66c340c34b45bac5525350c5eb5c43fe33a6 /desktop/tests/test_gui_chat.py | |
parent | 76104671c3eacbef53ad96fffd8a57512ab2d093 (diff) | |
parent | 02254b13bb4818745193092f2144fd83726d79e7 (diff) | |
download | onionshare-b66e742bc20ae977232fc53f22d485c10173ac2f.tar.gz onionshare-b66e742bc20ae977232fc53f22d485c10173ac2f.zip |
Merge pull request #1395 from onionshare/developv2.3.3
Version 2.3.3, merge develop into stable
Diffstat (limited to 'desktop/tests/test_gui_chat.py')
-rw-r--r-- | desktop/tests/test_gui_chat.py | 98 |
1 files changed, 98 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..15ecaa44 --- /dev/null +++ b/desktop/tests/test_gui_chat.py @@ -0,0 +1,98 @@ +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_started_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) + + def run_all_chat_mode_stopping_tests(self, tab): + """Tests stopping a chat""" + 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_started_tests(tab) + self.view_chat(tab) + self.change_username(tab) + self.run_all_chat_mode_stopping_tests(tab) + self.close_all_tabs() + + def test_405_page_returned_for_invalid_methods(self): + """ + Our custom 405 page should return for invalid methods + """ + tab = self.new_chat_tab() + + tab.get_mode().mode_settings_widget.public_checkbox.click() + + self.run_all_chat_mode_started_tests(tab) + url = f"http://127.0.0.1:{tab.app.port}/" + self.hit_405( + url, + expected_resp="OnionShare: 405 Method Not Allowed", + data={"foo": "bar"}, + methods=["put", "post", "delete", "options"], + ) + self.run_all_chat_mode_stopping_tests(tab) + self.close_all_tabs() |