added functional_tests to installed apps in core.settings (but only when debug is true); created management dir to contain new django cmds & listed in .dockerignore; created management.create_session cmd; recreated container.db.sqlite3; tweaked test_server setup in functional_tests.base; added test_server failsafe to magic link login testing in .test_login

This commit is contained in:
Disco DeDisco
2026-02-03 14:54:37 -05:00
parent 3fdd07e003
commit 55bb589f61
9 changed files with 37 additions and 5 deletions

View File

@@ -51,6 +51,9 @@ INSTALLED_APPS = [
# Depend apps
]
if 'DJANGO_DEBUG_FALSE' not in os.environ:
INSTALLED_APPS += ['functional_tests']
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
@@ -149,7 +152,7 @@ LOGGING = {
# Email Settings
EMAIL_HOST = "smtp.mailgun.org"
EMAIL_HOST_USER = os.environ["EMAIL_HOST_USER"]
EMAIL_HOST_PASSWORD = os.environ["EMAIL_HOST_PASSWORD"]
EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER") # switch back to .environ[] when collectstatic moved outside docker build process
EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD") # switch back to .environ[]
EMAIL_PORT = 587
EMAIL_USER_TLS = True

View File

@@ -27,8 +27,9 @@ class FunctionalTest(StaticLiveServerTestCase):
# Helper methods
def setUp(self):
self.browser = webdriver.Firefox()
if test_server := os.environ.get('TEST_SERVER'):
self.live_server_url = 'http://' + test_server
self.test_server = os.environ.get("TEST_SERVER")
if self.test_server:
self.live_server_url = 'http://' + self.test_server
def tearDown(self):
self.browser.quit()

View File

@@ -0,0 +1,23 @@
from django.conf import settings
from django.contrib.auth import BACKEND_SESSION_KEY, SESSION_KEY, get_user_model
from django.contrib.sessions.backends.db import SessionStore
from django.core.management.base import BaseCommand
User = get_user_model()
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("email")
def handle(self, *args, **options):
session_key = create_pre_authenticated_session(options["email"])
self.stdout.write(session_key)
def create_pre_authenticated_session(email):
user = User.objects.create(email=email)
session = SessionStore()
session[SESSION_KEY] = user.pk
session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
session.save()
return session.session_key

View File

@@ -21,6 +21,9 @@ class LoginTest(FunctionalTest):
)
)
if self.test_server:
return
email = mail.outbox.pop()
self.assertIn(TEST_EMAIL, email.to)
self.assertEqual(email.subject, SUBJECT)