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 vcr_options = { "path": "gamecard/fixtures/test.yaml", "ignore_localhost": True, "filter_headers": ["authorization"], "filter_query_parameters": ["email", "password"], # 'record_mode':"new_episodes", "decode_compressed_response": True, "allow_playback_repeats": True, } 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 class GamecardTests(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 @vcr.use_cassette(**vcr_options) def test_gamecard(self): self.selenium.get( "{url}/{team_id}/event/{event_id}/gamecard/".format( url=self.live_server_url, team_id=6882652, event_id=266446202 ) ) breakpoint()