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 django.urls import reverse from selenium import webdriver USER = get_user_model().objects.get(pk=2) vcr_options = { "path": "teamsnap/fixtures/tests.json", "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(): # 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 TeamsnapTests(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_dashboard(self): managed_team_id = USER.teamsnap_preferences.managed_team_id # event_id = 266446202 url = reverse("teamsnap_dashboard", kwargs=dict(team_id=managed_team_id)) self.selenium.get(url=self.live_server_url + url) breakpoint()