import os from django.conf import settings from django.test import tag from selenium import webdriver from selenium.webdriver.common.by import By from .base import FunctionalTest from .post_page import PostPage from .my_posts_page import MyPostsPage # Helper fns def quit_if_possible(browser): try: browser.quit() except: pass # Test mdls class SharingTest(FunctionalTest): @tag("two-browser") def test_can_share_a_post_with_another_user(self): self.create_pre_authenticated_session("disco@test.io") disco_browser = self.browser self.addCleanup(lambda: quit_if_possible(disco_browser)) options = webdriver.FirefoxOptions() if os.environ.get("HEADLESS"): options.add_argument("--headless") ali_browser = webdriver.Firefox(options=options) self.addCleanup(lambda: quit_if_possible(ali_browser)) self.browser = ali_browser self.create_pre_authenticated_session("alice@test.io") self.browser = disco_browser self.browser.get(self.live_server_url + '/billboard/') post_page = PostPage(self).add_post_line("Send help") share_box = post_page.get_share_box() self.assertEqual( share_box.get_attribute("placeholder"), "bud@example.com or username", ) post_page.share_post_with("alice@test.io") self.browser = ali_browser MyPostsPage(self).go_to_my_posts_page("alice@test.io") self.browser.find_element(By.LINK_TEXT, "Send help").click() self.wait_for( lambda: self.assertEqual(post_page.get_post_owner(), "disco@test.io") ) post_page.add_post_line("At your command, Disco King") self.browser = disco_browser self.browser.refresh() # Line numbering: 1) "Send help" 2) "Shared with alice@test.io …" # (auto-appended by share_post in C3.b) 3) Alice's reply. post_page.wait_for_row_in_post_table("At your command, Disco King", 3) class PostAccessTest(FunctionalTest): def test_stranger_cannot_access_owned_post(self): self.create_pre_authenticated_session("disco@test.io") self.browser.get(self.live_server_url + '/billboard/') PostPage(self).add_post_line("private eye") post_url = self.browser.current_url self.browser.delete_cookie(settings.SESSION_COOKIE_NAME) self.browser.get(post_url) self.assertNotEqual(self.browser.current_url, post_url)