import os from django.conf import settings from selenium import webdriver from selenium.webdriver.common.by import By from .base import FunctionalTest from .note_page import NotePage from .my_notes_page import MyNotesPage # Helper fns def quit_if_possible(browser): try: browser.quit() except: pass # Test mdls class SharingTest(FunctionalTest): def test_can_share_a_note_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) note_page = NotePage(self).add_note_item("Send help") share_box = note_page.get_share_box() self.assertEqual( share_box.get_attribute("placeholder"), "friend@example.com", ) note_page.share_note_with("alice@test.io") self.browser = ali_browser MyNotesPage(self).go_to_my_notes_page("alice@test.io") self.browser.find_element(By.LINK_TEXT, "Send help").click() self.wait_for( lambda: self.assertEqual(note_page.get_note_owner(), "disco@test.io") ) note_page.add_note_item("At your command, Disco King") self.browser = disco_browser self.browser.refresh() note_page.wait_for_row_in_note_table("At your command, Disco King", 2) class NoteAccessTest(FunctionalTest): def test_stranger_cannot_access_owned_note(self): self.create_pre_authenticated_session("disco@test.io") self.browser.get(self.live_server_url) note_page = NotePage(self).add_note_item("private eye") note_url = self.browser.current_url self.browser.delete_cookie(settings.SESSION_COOKIE_NAME) self.browser.get(note_url) self.assertNotEqual(self.browser.current_url, note_url)