import vcr from django.conf import settings from django.contrib.auth import ( BACKEND_SESSION_KEY, HASH_SESSION_KEY, SESSION_KEY, get_user_model, ) from django.contrib.sessions.backends.db import SessionStore from django.contrib.staticfiles.testing import StaticLiveServerTestCase from selenium import webdriver def create_session_cookie(): # First, create a new test user user = get_user_model() # user.objects.create_user(username=username, password=password) user = get_user_model().objects.get(pk=2) # Then create the authenticated session using the new user credentials session = SessionStore() session[SESSION_KEY] = user.pk session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0] session[HASH_SESSION_KEY] = user.get_session_auth_hash() session.save() # Finally, create the cookie dictionary cookie = { "name": settings.SESSION_COOKIE_NAME, "value": session.session_key, "secure": False, "path": "/", } return cookie @vcr.use_cassette( "gamechanger/fixtures/tests.yaml", ignore_localhost=True, # record_mode="new_episodes", decode_compressed_response=True, allow_playback_repeats=True, ) class GameChangerTests(StaticLiveServerTestCase): fixtures = ["benchcoach/fixtures/dump.json"] @classmethod def setUpClass(cls): cls.port = 8000 super().setUpClass() cls.selenium = webdriver.Chrome("/opt/homebrew/bin/chromedriver") cls.selenium.implicitly_wait(10) @classmethod def tearDownClass(cls): cls.selenium.quit() super().tearDownClass() def setUp(self): session_cookie = create_session_cookie() self.selenium.get("{}{}".format(self.live_server_url, "/")) self.selenium.add_cookie(session_cookie) self.selenium.refresh() pass def test_gamechanger_teams(self): self.selenium.get( "{url}/gc/{page}".format(url=self.live_server_url, page="teams") ) breakpoint() def test_gamechanger_events(self): self.selenium.get( "{url}/gc/{page}".format(url=self.live_server_url, page="events") ) breakpoint() def test_gamechanger_roster(self): self.selenium.get( "{url}/gc/{page}".format(url=self.live_server_url, page="roster") ) breakpoint()