Skip to content
Snippets Groups Projects
Commit 1fd4b302 authored by Bryan BRANCOTTE's avatar Bryan BRANCOTTE
Browse files

rework import, remove dependency to strass_app

parent 2c0a370a
No related branches found
No related tags found
1 merge request!220Enable CSP
Pipeline #138713 failed
import json
import logging
from typing import Dict
from django.core import mail
from django.test import override_settings
from django.urls import reverse, reverse_lazy
from django.core import mail
from django.test import TestCase, override_settings
from django.urls import reverse
from django.urls import reverse_lazy
from cspmailreports import apps
from cspmailreports.conf import app_settings
from strass_app.tests.test_base_test_case import TooledTestCase
import cspmailreports.apps
import cspmailreports.conf
logger = logging.getLogger(__name__)
class CSPTooledTestCase(TooledTestCase):
class CSPTooledTestCase(TestCase):
url = reverse_lazy('cspmailreports:csp-report')
def setUp(self):
super().setUp()
app_settings._reset_cache()
cspmailreports.conf.app_settings._reset_cache()
@staticmethod
def fake_report(referrer="http://127.0.0.1:8080") -> Dict:
......@@ -77,7 +77,7 @@ class TestDOS(CSPTooledTestCase):
mail_count = len(mail.outbox)
self.client.defaults['REMOTE_ADDR'] = '1.2.3.4'
# trigger dos
for i in range(app_settings.max_report_before_cooldown):
for i in range(cspmailreports.conf.app_settings.max_report_before_cooldown):
self.assertIn(self.report().status_code, [200])
mail_count += 1
self.assertEqual(mail_count, len(mail.outbox))
......@@ -118,8 +118,8 @@ class TestMailNoAdmin(CSPTooledTestCase):
)
class TestCheck1(CSPTooledTestCase):
def test_it(self):
app_settings._reset_cache()
self.assertEqual(len(apps.check_settings(None)), 1)
cspmailreports.conf.app_settings._reset_cache()
self.assertEqual(len(cspmailreports.apps.check_settings(None)), 1)
@override_settings(
......@@ -127,8 +127,8 @@ class TestCheck1(CSPTooledTestCase):
)
class TestCheck2(CSPTooledTestCase):
def test_it(self):
app_settings._reset_cache()
self.assertEqual(len(apps.check_settings(None)), 1)
cspmailreports.conf.app_settings._reset_cache()
self.assertEqual(len(cspmailreports.apps.check_settings(None)), 1)
@override_settings(
......@@ -137,5 +137,5 @@ class TestCheck2(CSPTooledTestCase):
)
class TestCheckAll(CSPTooledTestCase):
def test_it(self):
app_settings._reset_cache()
self.assertEqual(len(apps.check_settings(None)), 2)
cspmailreports.conf.app_settings._reset_cache()
self.assertEqual(len(cspmailreports.apps.check_settings(None)), 2)
from django.urls import re_path
from views import report_csp
import cspmailreports.views
app_name = 'cspmailreports'
urlpatterns = [
re_path(r'^report/$', report_csp, name='csp-report'),
re_path(r'^report/$', cspmailreports.views.report_csp, name='csp-report'),
]
......@@ -5,8 +5,8 @@ from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
from cspmailreports import utils
from cspmailreports.conf import app_settings
import cspmailreports.conf
import cspmailreports.utils
logger = logging.getLogger(__name__)
......@@ -16,10 +16,10 @@ logger = logging.getLogger(__name__)
def report_csp(request):
if request.content_type != 'application/csp-report':
return HttpResponse(status=415)
if utils.is_flagged_as_dos(request):
return HttpResponse(status=429, headers=[("Retry-After", app_settings.dos_cooldown)])
report = utils.create_report(request)
if app_settings.print_in_log:
if cspmailreports.utils.is_flagged_as_dos(request):
return HttpResponse(status=429, headers=[("Retry-After", cspmailreports.conf.app_settings.dos_cooldown)])
report = cspmailreports.utils.create_report(request)
if cspmailreports.conf.app_settings.print_in_log:
logger.warning(f'CSP violation report:\n{report}')
mail_admins("CSP violation report", report)
return HttpResponse()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment