Add new version email and info box then new version is available
This commit is contained in:
@ -97,3 +97,6 @@ USE_TZ = True
|
||||
# https://docs.djangoproject.com/en/1.9/howto/static-files/
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
|
||||
CAS_NEW_VERSION_HTML_WARNING = False
|
||||
CAS_NEW_VERSION_EMAIL_WARNING = False
|
||||
|
@ -16,7 +16,9 @@ import django
|
||||
from django.test import TestCase, Client
|
||||
from django.test.utils import override_settings
|
||||
from django.utils import timezone
|
||||
from django.core import mail
|
||||
|
||||
import mock
|
||||
from datetime import timedelta
|
||||
from importlib import import_module
|
||||
|
||||
@ -271,3 +273,39 @@ class TicketTestCase(TestCase, UserModels, BaseServicePattern):
|
||||
)
|
||||
self.assertIsNone(ticket._attributs)
|
||||
self.assertIsNone(ticket.attributs)
|
||||
|
||||
|
||||
@mock.patch("cas_server.utils.last_version", lambda:"1.2.3")
|
||||
@override_settings(ADMINS=[("Ano Nymous", "ano.nymous@example.net")])
|
||||
@override_settings(CAS_NEW_VERSION_EMAIL_WARNING=True)
|
||||
class NewVersionWarningTestCase(TestCase):
|
||||
"""tests for the new version warning model"""
|
||||
|
||||
@mock.patch("cas_server.models.VERSION", "0.1.2")
|
||||
def test_send_mails(self):
|
||||
models.NewVersionWarning.send_mails()
|
||||
|
||||
self.assertEqual(len(mail.outbox), 1)
|
||||
self.assertEqual(
|
||||
mail.outbox[0].subject,
|
||||
'%sA new version of django-cas-server is available' % settings.EMAIL_SUBJECT_PREFIX
|
||||
)
|
||||
|
||||
models.NewVersionWarning.send_mails()
|
||||
self.assertEqual(len(mail.outbox), 1)
|
||||
|
||||
@mock.patch("cas_server.models.VERSION", "1.2.3")
|
||||
def test_send_mails_same_version(self):
|
||||
models.NewVersionWarning.objects.create(version="0.1.2")
|
||||
models.NewVersionWarning.send_mails()
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
|
||||
@override_settings(ADMINS=[])
|
||||
def test_send_mails_no_admins(self):
|
||||
models.NewVersionWarning.send_mails()
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
|
||||
@override_settings(CAS_NEW_VERSION_EMAIL_WARNING=False)
|
||||
def test_send_mails_disabled(self):
|
||||
models.NewVersionWarning.send_mails()
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
|
@ -13,6 +13,7 @@
|
||||
from django.test import TestCase, RequestFactory
|
||||
|
||||
import six
|
||||
import warnings
|
||||
|
||||
from cas_server import utils
|
||||
|
||||
@ -208,3 +209,28 @@ class UtilsTestCase(TestCase):
|
||||
self.assertEqual(utils.get_tuple(test_tuple, 3), None)
|
||||
self.assertEqual(utils.get_tuple(test_tuple, 3, 'toto'), 'toto')
|
||||
self.assertEqual(utils.get_tuple(None, 3), None)
|
||||
|
||||
def test_last_version(self):
|
||||
"""
|
||||
test the function last_version. An internet connection is needed, if you do not have
|
||||
one, this test will fail and you should ignore it.
|
||||
"""
|
||||
try:
|
||||
# first check if pypi is available
|
||||
utils.requests.get("https://pypi.python.org/simple/django-cas-server/")
|
||||
except utils.requests.exceptions.RequestException:
|
||||
warnings.warn(
|
||||
(
|
||||
"Pypi seems not available, perhaps you do not have internet access. "
|
||||
"Consequently, the test cas_server.tests.test_utils.UtilsTestCase.test_last_"
|
||||
"version is ignored"
|
||||
),
|
||||
RuntimeWarning
|
||||
)
|
||||
else:
|
||||
version = utils.last_version()
|
||||
self.assertIsInstance(version, six.text_type)
|
||||
self.assertEqual(len(version.split('.')), 3)
|
||||
|
||||
# version is cached 24h so calling it a second time should return the save value
|
||||
self.assertEqual(version, utils.last_version())
|
||||
|
@ -20,6 +20,7 @@ from django.utils import timezone
|
||||
|
||||
import random
|
||||
import json
|
||||
import mock
|
||||
from lxml import etree
|
||||
from six.moves import range
|
||||
|
||||
@ -47,6 +48,28 @@ class LoginTestCase(TestCase, BaseServicePattern, CanLogin):
|
||||
# we prepare a bunch a service url and service patterns for tests
|
||||
self.setup_service_patterns()
|
||||
|
||||
@override_settings(CAS_NEW_VERSION_HTML_WARNING=True)
|
||||
@mock.patch("cas_server.utils.last_version", lambda:"1.2.3")
|
||||
@mock.patch("cas_server.utils.VERSION", "0.1.2")
|
||||
def test_new_version_available_ok(self):
|
||||
client = Client()
|
||||
response = client.get("/login")
|
||||
self.assertIn(b"A new version of the application is available", response.content)
|
||||
|
||||
@override_settings(CAS_NEW_VERSION_HTML_WARNING=True)
|
||||
@mock.patch("cas_server.utils.last_version", lambda:None)
|
||||
@mock.patch("cas_server.utils.VERSION", "0.1.2")
|
||||
def test_new_version_available_badpypi(self):
|
||||
client = Client()
|
||||
response = client.get("/login")
|
||||
self.assertNotIn(b"A new version of the application is available", response.content)
|
||||
|
||||
@override_settings(CAS_NEW_VERSION_HTML_WARNING=False)
|
||||
def test_new_version_available_disabled(self):
|
||||
client = Client()
|
||||
response = client.get("/login")
|
||||
self.assertNotIn(b"A new version of the application is available", response.content)
|
||||
|
||||
def test_login_view_post_goodpass_goodlt(self):
|
||||
"""Test a successul login"""
|
||||
# we get a client who fetch a frist time the login page and the login form default
|
||||
|
Reference in New Issue
Block a user