diff --git a/gamecard/tests.py b/gamecard/tests.py index a79ca8b..3fda2fb 100644 --- a/gamecard/tests.py +++ b/gamecard/tests.py @@ -1,3 +1,77 @@ -# from django.test import TestCase +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 -# Create your tests here. +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() diff --git a/teamsnap/dashboard/tests.py b/teamsnap/dashboard/tests.py index 0f48328..2c530c3 100644 --- a/teamsnap/dashboard/tests.py +++ b/teamsnap/dashboard/tests.py @@ -8,21 +8,28 @@ from django.contrib.auth import ( ) 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(): - # 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[SESSION_KEY] = USER.pk session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0] - session[HASH_SESSION_KEY] = user.get_session_auth_hash() + session[HASH_SESSION_KEY] = USER.get_session_auth_hash() session.save() # Finally, create the cookie dictionary @@ -35,7 +42,7 @@ def create_session_cookie(): return cookie -class TeamsnapDashboardTests(StaticLiveServerTestCase): +class TeamsnapTests(StaticLiveServerTestCase): fixtures = ["benchcoach/fixtures/dump.json"] @classmethod @@ -57,18 +64,10 @@ class TeamsnapDashboardTests(StaticLiveServerTestCase): self.selenium.refresh() pass - @vcr.use_cassette( - "teamsnap/dashboard/fixtures/tests.yaml", - ignore_localhost=True, - # record_mode="new_episodes", - decode_compressed_response=True, - allow_playback_repeats=True, - ) + @vcr.use_cassette(**vcr_options) def test_dashboard(self): - self.selenium.get( - "{url}/{team_id}/dashboard/".format( - url=self.live_server_url, - team_id=6882652, - ) - ) + 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() diff --git a/teamsnap/lineup/tests.py b/teamsnap/lineup/tests.py index a79ca8b..6561726 100644 --- a/teamsnap/lineup/tests.py +++ b/teamsnap/lineup/tests.py @@ -1,3 +1,77 @@ -# from django.test import TestCase +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 -# Create your tests here. +vcr_options = { + "user" "path": "teamsnap/lineup/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, +} + +USER = get_user_model().objects.get(pk=2) + + +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 TeamsnapLineupTests(StaticLiveServerTestCase): + fixtures = ["benchcoach/fixtures/dump.json", "gamechanger/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_teamsnap_lineup(self): + managed_team_id = USER.teamsnap_preferences.managed_team_id + event_id = 266446202 + url = reverse( + "teamsnap_edit_lineup", + kwargs=dict(team_id=managed_team_id, event_ids=event_id), + ) + self.selenium.get(url=self.live_server_url + url) + breakpoint() diff --git a/teamsnap/tests.py b/teamsnap/tests.py index 796ed16..2c530c3 100644 --- a/teamsnap/tests.py +++ b/teamsnap/tests.py @@ -8,21 +8,28 @@ from django.contrib.auth import ( ) 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(): - # 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[SESSION_KEY] = USER.pk session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0] - session[HASH_SESSION_KEY] = user.get_session_auth_hash() + session[HASH_SESSION_KEY] = USER.get_session_auth_hash() session.save() # Finally, create the cookie dictionary @@ -35,7 +42,7 @@ def create_session_cookie(): return cookie -class MySeleniumTests(StaticLiveServerTestCase): +class TeamsnapTests(StaticLiveServerTestCase): fixtures = ["benchcoach/fixtures/dump.json"] @classmethod @@ -57,17 +64,10 @@ class MySeleniumTests(StaticLiveServerTestCase): self.selenium.refresh() pass - @vcr.use_cassette( - "teamsnap/lineup/fixtures/test.yaml", - ignore_localhost=True, - # record_mode="new_episodes", - decode_compressed_response=True, - allow_playback_repeats=True, - ) - def test_login(self): - self.selenium.get( - "{url}/{team_id}/event/{event_ids}/edit_lineup/".format( - url=self.live_server_url, team_id=6882652, event_ids=266446202 - ) - ) + @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()