Make tests work on modern Django

This commit is contained in:
Quantum 2022-10-30 18:37:18 -04:00
parent 97791d9bb1
commit 5e96556474
2 changed files with 15 additions and 17 deletions

View file

@ -2,12 +2,12 @@ from collections import OrderedDict
from django.core.exceptions import MiddlewareNotUsed from django.core.exceptions import MiddlewareNotUsed
from django.http import HttpResponse from django.http import HttpResponse
from django.test import SimpleTestCase, RequestFactory, override_settings from django.test import RequestFactory, SimpleTestCase, override_settings
from django.utils.decorators import decorator_from_middleware_with_args from django.utils.decorators import decorator_from_middleware
from csp_advanced.csp import CSPCompiler, InvalidCSPError from csp_advanced.csp import CSPCompiler, InvalidCSPError
from csp_advanced.middleware import AdvancedCSPMiddleware from csp_advanced.middleware import AdvancedCSPMiddleware
from csp_advanced.utils import call_csp_dict, merge_csp_dict, is_callable_csp_dict from csp_advanced.utils import call_csp_dict, is_callable_csp_dict, merge_csp_dict
class CSPCompileTest(SimpleTestCase): class CSPCompileTest(SimpleTestCase):
@ -147,13 +147,11 @@ class MergeCSPDictTest(SimpleTestCase):
class TestMiddleware(SimpleTestCase): class TestMiddleware(SimpleTestCase):
decorator_factory = decorator_from_middleware_with_args(AdvancedCSPMiddleware)
def setUp(self): def setUp(self):
self.factory = RequestFactory() self.factory = RequestFactory()
def make_ok_view(self): def make_ok_view(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
return HttpResponse('ok') return HttpResponse('ok')
return view return view
@ -162,7 +160,7 @@ class TestMiddleware(SimpleTestCase):
return self.factory.get('/') return self.factory.get('/')
def test_no_csp(self): def test_no_csp(self):
self.assertRaises(MiddlewareNotUsed, self.decorator_factory) self.assertRaises(MiddlewareNotUsed, AdvancedCSPMiddleware)
@override_settings(ADVANCED_CSP={'script-src': ['self']}) @override_settings(ADVANCED_CSP={'script-src': ['self']})
def test_new_style(self): def test_new_style(self):
@ -179,7 +177,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP={'script-src': ['self']}) @override_settings(ADVANCED_CSP={'script-src': ['self']})
def test_csp_exists(self): def test_csp_exists(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response['Content-Security-Policy'] = 'verbatim bad csp' response['Content-Security-Policy'] = 'verbatim bad csp'
@ -204,7 +202,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP={'script-src': ['self']}) @override_settings(ADVANCED_CSP={'script-src': ['self']})
def test_merge_csp_same(self): def test_merge_csp_same(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp = {'script-src': ['https://dmoj.ca']} response.csp = {'script-src': ['https://dmoj.ca']}
@ -213,7 +211,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP={'script-src': ['self']}) @override_settings(ADVANCED_CSP={'script-src': ['self']})
def test_merge_csp_different(self): def test_merge_csp_different(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp = {'style-src': ['https://dmoj.ca']} response.csp = {'style-src': ['https://dmoj.ca']}
@ -223,7 +221,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP={'script-src': ['self']}) @override_settings(ADVANCED_CSP={'script-src': ['self']})
def test_override_csp_explicit(self): def test_override_csp_explicit(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp = {'style-src': ['none'], 'override': True} response.csp = {'style-src': ['none'], 'override': True}
@ -232,7 +230,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP={'script-src': ['self']}) @override_settings(ADVANCED_CSP={'script-src': ['self']})
def test_remove_csp(self): def test_remove_csp(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp = {'override': True} response.csp = {'override': True}
@ -241,7 +239,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP_REPORT_ONLY={'script-src': ['self']}) @override_settings(ADVANCED_CSP_REPORT_ONLY={'script-src': ['self']})
def test_override_csp_to_report_explicit(self): def test_override_csp_to_report_explicit(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp = {'style-src': ['none'], 'override': True} response.csp = {'style-src': ['none'], 'override': True}
@ -250,7 +248,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP_REPORT_ONLY={'script-src': ['self']}) @override_settings(ADVANCED_CSP_REPORT_ONLY={'script-src': ['self']})
def test_override_csp_report_both_explicit(self): def test_override_csp_report_both_explicit(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp = {'style-src': ['none'], 'override': True} response.csp = {'style-src': ['none'], 'override': True}
@ -263,7 +261,7 @@ class TestMiddleware(SimpleTestCase):
@override_settings(ADVANCED_CSP_REPORT_ONLY={'script-src': ['self']}) @override_settings(ADVANCED_CSP_REPORT_ONLY={'script-src': ['self']})
def test_override_csp_report_only_explicit(self): def test_override_csp_report_only_explicit(self):
@self.decorator_factory() @decorator_from_middleware(AdvancedCSPMiddleware)
def view(request): def view(request):
response = HttpResponse() response = HttpResponse()
response.csp_report = {'script-src': ['none'], 'override': True} response.csp_report = {'script-src': ['none'], 'override': True}

View file

@ -13,9 +13,9 @@ Including another URLconf
1. Import the include() function: from django.conf.urls import url, include 1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
""" """
from django.conf.urls import url from django.urls import path
from django.contrib import admin from django.contrib import admin
urlpatterns = [ urlpatterns = [
url(r'^admin/', admin.site.urls), path('admin/', admin.site.urls),
] ]