From e46f6bab8b231aafb5e9614e35f2da3435a970be Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Fri, 19 Jun 2026 05:25:31 +0200 Subject: [PATCH] fix: handle invalid legal process inputs --- CHANGELOG.md | 4 ++++ brutils/legal_process.py | 15 ++++++++++++++- tests/test_legal_process.py | 4 ++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3c74c57..ce0e5cf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Utilitário `legal_process` [#743](https://github.com/brazilian-utils/python/pull/743) + ## [2.4.0] - 2026-04-20 ### Added diff --git a/brutils/legal_process.py b/brutils/legal_process.py index 53fdc006..24a46f4f 100644 --- a/brutils/legal_process.py +++ b/brutils/legal_process.py @@ -56,7 +56,11 @@ def format_legal_process(legal_process_id: str) -> str | None: None """ - if legal_process_id.isdigit() and len(legal_process_id) == 20: + if ( + isinstance(legal_process_id, str) + and legal_process_id.isdigit() + and len(legal_process_id) == 20 + ): capture_fields = r"(\d{7})(\d{2})(\d{4})(\d)(\d{2})(\d{4})" include_chars = r"\1-\2.\3.\4.\5.\6" @@ -92,7 +96,16 @@ def is_valid(legal_process_id: str) -> bool: False """ + if not isinstance(legal_process_id, str): + return False + clean_legal_process_id = remove_symbols(legal_process_id) + if ( + not clean_legal_process_id.isdigit() + or len(clean_legal_process_id) != 20 + ): + return False + DD = clean_legal_process_id[7:9] J = clean_legal_process_id[13:14] TR = clean_legal_process_id[14:16] diff --git a/tests/test_legal_process.py b/tests/test_legal_process.py index 164eec5f..d8b6f58a 100644 --- a/tests/test_legal_process.py +++ b/tests/test_legal_process.py @@ -27,6 +27,8 @@ def test_format_legal_process(self): self.assertIsNone(format_legal_process("2314194582005507")) self.assertIsNone(format_legal_process("0000000000000000000000000")) self.assertIsNone(format_legal_process("0000000000000000000asdasd")) + self.assertIsNone(format_legal_process(None)) + self.assertIsNone(format_legal_process(123)) def test_remove_symbols(self): self.assertEqual( @@ -73,6 +75,8 @@ def test_is_valid(self): self.assertIs(is_valid("455323469202340251"), False) self.assertIs(is_valid("455323469202340257123123123"), False) self.assertIs(is_valid("455323423QQWEQWSsasd&*(()"), False) + self.assertIs(is_valid(None), False) + self.assertIs(is_valid(123), False) self.assertIsInstance(is_valid("455323423QQWEQWSsasd&*(()"), bool)