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:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
0
src/functional_tests/management/__init__.py
Normal file
0
src/functional_tests/management/__init__.py
Normal file
23
src/functional_tests/management/commands/create_session.py
Normal file
23
src/functional_tests/management/commands/create_session.py
Normal 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
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user