From 07ec6ff7ab048466cd87640f7b1d6b1d8b55f018 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Sat, 18 Feb 2023 15:26:09 -0800 Subject: [PATCH] Adds some quick testing of the IP logging during a failed login --- src/paperless/tests/test_signals.py | 80 +++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/paperless/tests/test_signals.py diff --git a/src/paperless/tests/test_signals.py b/src/paperless/tests/test_signals.py new file mode 100644 index 000000000..1a4d7892f --- /dev/null +++ b/src/paperless/tests/test_signals.py @@ -0,0 +1,80 @@ +from django.http import HttpRequest +from django.test import TestCase +from paperless.signals import handle_failed_login + + +class TestFailedLoginLogging(TestCase): + def setUp(self): + super().setUp() + + self.creds = { + "username": "john lennon", + } + + def test_none(self): + """ + GIVEN: + - Request with no IP possible + WHEN: + - Request provided to signal handler + THEN: + - Unable to determine logged + """ + request = HttpRequest() + request.META = {} + with self.assertLogs("paperless.auth") as logs: + handle_failed_login(None, self.creds, request) + + self.assertEqual( + logs.output, + [ + "INFO:paperless.auth:Login failed for user `john lennon`. Unable to determine IP address.", + ], + ) + + def test_public(self): + """ + GIVEN: + - Request with publicly routeable IP + WHEN: + - Request provided to signal handler + THEN: + - Expected IP is logged + """ + request = HttpRequest() + request.META = { + "HTTP_X_FORWARDED_FOR": "177.139.233.139", + } + with self.assertLogs("paperless.auth") as logs: + handle_failed_login(None, self.creds, request) + + self.assertEqual( + logs.output, + [ + "INFO:paperless.auth:Login failed for user `john lennon` from IP `177.139.233.139.`", + ], + ) + + def test_private(self): + """ + GIVEN: + - Request with private range IP + WHEN: + - Request provided to signal handler + THEN: + - Expected IP is logged + - IP is noted to be a private IP + """ + request = HttpRequest() + request.META = { + "HTTP_X_FORWARDED_FOR": "10.0.0.1", + } + with self.assertLogs("paperless.auth") as logs: + handle_failed_login(None, self.creds, request) + + self.assertEqual( + logs.output, + [ + "INFO:paperless.auth:Login failed for user `john lennon` from private IP `10.0.0.1.`", + ], + )