]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Adds testing for unauthenticated API calls, simplify logging logic 3516/head
authorshamoon <4887959+shamoon@users.noreply.github.com>
Sat, 3 Jun 2023 15:50:54 +0000 (08:50 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Sat, 3 Jun 2023 15:50:54 +0000 (08:50 -0700)
src/paperless/signals.py
src/paperless/tests/test_signals.py

index 9dc3383e3868d2df066b181b25ee5a71495b0551..f6dccd7a6cd69e90f3b0fb85e78359138ca89229 100644 (file)
@@ -12,21 +12,21 @@ def handle_failed_login(sender, credentials, request, **kwargs):
     client_ip, _ = ipware.get_client_ip(
         meta=request.META,
     )
-    username = credentials.get("username") or "anonymous"
+    username = credentials.get("username")
+    log_output = (
+        "No authentication provided"
+        if username is None
+        else f"Login failed for user `{username}`"
+    )
 
     if client_ip is None:
-        logger.info(
-            f"Login failed for user `{username}`. Unable to determine IP address.",
-        )
+        log_output += ". Unable to determine IP address."
     else:
         if client_ip.is_global:
             # We got the client's IP address
-            logger.info(
-                f"Login failed for user `{username}` from IP `{client_ip}.`",
-            )
+            log_output += f" from IP `{client_ip}.`"
         else:
             # The client's IP address is private
-            logger.info(
-                f"Login failed for user `{username}`"
-                f" from private IP `{client_ip}.`",
-            )
+            log_output += f" from private IP `{client_ip}.`"
+
+    logger.info(log_output)
index 0b1ca1b22f376f31300c1629b9907f5082e8d181..e9e9eb43eee2ac6ee4ae083b159b4dedc8944423 100644 (file)
@@ -12,6 +12,26 @@ class TestFailedLoginLogging(TestCase):
             "username": "john lennon",
         }
 
+    def test_unauthenticated(self):
+        """
+        GIVEN:
+            - Request with no authentication provided
+        WHEN:
+            - Request provided to signal handler
+        THEN:
+            - Unable to determine logged for unauthenticated user
+        """
+        request = HttpRequest()
+        request.META = {}
+        with self.assertLogs("paperless.auth") as logs:
+            handle_failed_login(None, {}, request)
+            self.assertEqual(
+                logs.output,
+                [
+                    "INFO:paperless.auth:No authentication provided. Unable to determine IP address.",
+                ],
+            )
+
     def test_none(self):
         """
         GIVEN: