diff --git a/lms/djangoapps/courseware/tests/test_favicon.py b/lms/djangoapps/courseware/tests/test_favicon.py new file mode 100644 index 0000000000..d1c1e0570b --- /dev/null +++ b/lms/djangoapps/courseware/tests/test_favicon.py @@ -0,0 +1,57 @@ +from django.conf import settings +from django.core.urlresolvers import clear_url_caches, resolve + +from django.test import TestCase +from django.test.utils import override_settings + +from mock import patch + +import sys + + +class FaviconTestCase(TestCase): + + def setUp(self): + super(FaviconTestCase, self).setUp() + + def test_favicon_redirect(self): + resp = self.client.get("/favicon.ico") + self.assertEqual(resp.status_code, 301) + self.assertRedirects( + resp, + "/static/images/favicon.ico", + status_code=301, target_status_code=404 # @@@ how to avoid 404? + ) + + @override_settings(FAVICON_PATH="images/foo.ico") + def test_favicon_redirect_with_favicon_path_setting(self): + + # for some reason I had to put this inline rather than just using + # the UrlResetMixin + + urlconf = settings.ROOT_URLCONF + if urlconf in sys.modules: + reload(sys.modules[urlconf]) + clear_url_caches() + resolve("/") + + resp = self.client.get("/favicon.ico") + self.assertEqual(resp.status_code, 301) + self.assertRedirects( + resp, + "/static/images/foo.ico", + status_code=301, target_status_code=404 # @@@ how to avoid 404? + ) + + @patch.dict("django.conf.settings.FEATURES", {"USE_CUSTOM_THEME": True}) + @override_settings(THEME_NAME="bar") + def test_favicon_redirect_with_theme(self): + self.assertEqual(settings.FEATURES["USE_CUSTOM_THEME"], True) + + resp = self.client.get("/favicon.ico") + self.assertEqual(resp.status_code, 301) + self.assertRedirects( + resp, + "/static/images/foo.ico", + status_code=301, target_status_code=404 # @@@ how to avoid 404? + )