Files
python-tdd/src/functional_tests/test_sharing.py

75 lines
2.3 KiB
Python
Raw Normal View History

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 .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):
@tag("two-browser")
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)