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 .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"),
"friend@example.com",
)
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()
post_page.wait_for_row_in_post_table("At your command, Disco King", 2)
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)