juan-pablo-guereca commented on code in PR #75651:
URL: https://github.com/apache/airflow/pull/75651#discussion_r4492605153


##########
shared/secrets_masker/tests/secrets_masker/test_secrets_masker.py:
##########
@@ -1237,6 +1238,36 @@ def test_regex_special_chars_in_secrets(self):
         assert redacted.startswith("Contains ")
         assert " and " in redacted
 
+    def test_multiline_secret_masked_when_wrapped_by_pprint(self):
+        secret = "-----BEGIN KEY-----\nabcDEF123\nxyz789\n-----END KEY-----"
+        secrets_masker = SecretsMasker()
+        configure_secrets_masker_for_test(secrets_masker)
+        secrets_masker.add_mask(secret)
+
+        pod_like = {"spec": {"containers": [{"env": [{"name": "MULTI", 
"value": secret}]}]}}
+        formatted = pprint.pformat(pod_like)
+        assert "'-----BEGIN KEY-----\\n'\n" in formatted
+
+        redacted = secrets_masker.redact(formatted)
+
+        for line in secret.splitlines():
+            assert line not in redacted
+
+    @pytest.mark.parametrize("newline", ["\n", "\r\n"])
+    def test_multiline_secret_registers_stripped_lines(self, newline):
+        secret = newline.join(["  first-line-1  ", "", "second-line-2"])
+        secrets_masker = SecretsMasker()
+        configure_secrets_masker_for_test(secrets_masker)
+        secrets_masker.add_mask(secret)
+
+        assert {"first\\-line\\-1", "second\\-line\\-2"} <= 
secrets_masker.patterns

Review Comment:
   Thanks, done: both patterns are raw strings now (I made the second one raw 
as well, since a non-raw `\-` is an invalid escape).
   
   ---
   Drafted-by: Claude Code (Sonnet 5.5); reviewed by @juan-pablo-guereca before 
posting



##########
shared/secrets_masker/tests/secrets_masker/test_secrets_masker.py:
##########
@@ -1237,6 +1238,36 @@ def test_regex_special_chars_in_secrets(self):
         assert redacted.startswith("Contains ")
         assert " and " in redacted
 
+    def test_multiline_secret_masked_when_wrapped_by_pprint(self):
+        secret = "-----BEGIN KEY-----\nabcDEF123\nxyz789\n-----END KEY-----"
+        secrets_masker = SecretsMasker()
+        configure_secrets_masker_for_test(secrets_masker)
+        secrets_masker.add_mask(secret)
+
+        pod_like = {"spec": {"containers": [{"env": [{"name": "MULTI", 
"value": secret}]}]}}
+        formatted = pprint.pformat(pod_like)
+        assert "'-----BEGIN KEY-----\\n'\n" in formatted
+
+        redacted = secrets_masker.redact(formatted)
+
+        for line in secret.splitlines():
+            assert line not in redacted
+
+    @pytest.mark.parametrize("newline", ["\n", "\r\n"])
+    def test_multiline_secret_registers_stripped_lines(self, newline):
+        secret = newline.join(["  first-line-1  ", "", "second-line-2"])
+        secrets_masker = SecretsMasker()
+        configure_secrets_masker_for_test(secrets_masker)
+        secrets_masker.add_mask(secret)
+
+        assert {"first\\-line\\-1", "second\\-line\\-2"} <= 
secrets_masker.patterns
+        assert secrets_masker.redact(f"x {secret} y") == "x *** y"
+
+        single_line_masker = SecretsMasker()
+        configure_secrets_masker_for_test(single_line_masker)
+        single_line_masker.add_mask("  error  ")
+        assert single_line_masker.patterns == {"\\ \\ error\\ \\ "}

Review Comment:
   Done, now `{r"\ \ error\ \ "}`.
   
   ---
   Drafted-by: Claude Code (Sonnet 5.5); reviewed by @juan-pablo-guereca before 
posting



##########
shared/secrets_masker/tests/secrets_masker/test_secrets_masker.py:
##########
@@ -1237,6 +1238,36 @@ def test_regex_special_chars_in_secrets(self):
         assert redacted.startswith("Contains ")
         assert " and " in redacted
 
+    def test_multiline_secret_masked_when_wrapped_by_pprint(self):
+        secret = "-----BEGIN KEY-----\nabcDEF123\nxyz789\n-----END KEY-----"
+        secrets_masker = SecretsMasker()
+        configure_secrets_masker_for_test(secrets_masker)
+        secrets_masker.add_mask(secret)
+
+        pod_like = {"spec": {"containers": [{"env": [{"name": "MULTI", 
"value": secret}]}]}}
+        formatted = pprint.pformat(pod_like)

Review Comment:
   Agreed, the test no longer depends on `pprint`. It now has the formatted 
text and the expected result written out as raw strings (adjacent `'***\n'` 
literals), and I renamed it to 
`test_multiline_secret_masked_when_split_into_adjacent_literals`. I also 
checked that it fails against the unpatched masker.
   
   ---
   Drafted-by: Claude Code (Sonnet 5.5); reviewed by @juan-pablo-guereca before 
posting



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to