from django.test import SimpleTestCase, TestCase, RequestFactory, override_settings
from django.http import HttpRequest
from ..views import SignupView
from app import settings
from api.tests.test_config import setenv
@override_settings(STATICFILES_STORAGE='django.contrib.staticfiles.storage.StaticFilesStorage')
class AddCSSTemplateTagTest(SimpleTestCase):
def test_rendered(self):
with setenv('ALLOW_SIGNUP', 'True'):
request = HttpRequest()
request.method = 'GET'
needle = ''
self.assertInHTML(needle, str(SignupView.as_view()(request, as_string=True).content))
@override_settings(STATICFILES_STORAGE='django.contrib.staticfiles.storage.StaticFilesStorage')
class ViewsTest(SimpleTestCase):
"""Class for testing views"""
def test_mail_not_set_up(self):
with setenv('ALLOW_SIGNUP', 'True'):
if hasattr(settings, 'EMAIL_HOST'):
has_EMAIL_HOST = True
EMAIL_HOST = settings.EMAIL_HOST
delattr(settings, 'EMAIL_HOST')
else:
has_EMAIL_HOST = False
if hasattr(settings, 'EMAIL_BACKEND'):
has_EMAIL_BACKEND = True
EMAIL_BACKEND = settings.EMAIL_BACKEND
delattr(settings, 'EMAIL_BACKEND')
else:
has_EMAIL_BACKEND = False
request = HttpRequest()
request.method = 'POST'
response = SignupView.as_view()(request, as_string=True)
if has_EMAIL_HOST:
settings.EMAIL_HOST = EMAIL_HOST
if has_EMAIL_BACKEND:
settings.EMAIL_BACKEND = EMAIL_BACKEND
needle = "has not set up any emails"
self.assertInHTML(needle, str(response.content))
def test_signup_not_allowed(self):
with setenv('ALLOW_SIGNUP', 'True'):
ALLOW_SIGNUP = settings.ALLOW_SIGNUP
settings.ALLOW_SIGNUP = False
request = HttpRequest()
request.method = 'POST'
response = SignupView.as_view()(request, as_string=True)
settings.ALLOW_SIGNUP = ALLOW_SIGNUP
self.assertEqual(response.status_code, 302)
@override_settings(STATICFILES_STORAGE='django.contrib.staticfiles.storage.StaticFilesStorage')
class ViewsDBTest(TestCase):
"""Class for testing views with DB queries"""
def test_form_submission(self):
with setenv('ALLOW_SIGNUP', 'True'):
self.factory = RequestFactory()
if hasattr(settings, 'EMAIL_BACKEND'):
EMAIL_BACKEND = settings.EMAIL_BACKEND
else:
EMAIL_BACKEND = False
settings.EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
request = self.factory.post('/signup')
request.POST = {'username': 'username5648',
'email': 'email@example.com',
'password1': 'pwd0000Y00$$',
'password2': 'pwd0000Y00$$'
}
response = SignupView.as_view()(request)
needle = 'emailed you instructions to activate your account'
if not EMAIL_BACKEND:
delattr(settings, 'EMAIL_BACKEND')
else:
settings.EMAIL_BACKEND = EMAIL_BACKEND
self.assertInHTML(needle, str(response.content))