From 9d3c3e24f8533bcd3222e86d1bcfd60a34ebeda2 Mon Sep 17 00:00:00 2001 From: nikhil-mittal-165 Date: Tue, 3 Nov 2026 09:22:51 +0530 Subject: [PATCH] fix: correct Salesforce ID regex in flow engine hardcoded id check Co-Authored-By: Claude Sonnet 5.5 --- .../FlowScanner/queries/optional_query.py | 2 +- .../FlowScanner/tests/test_salesforce_id.py | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/code-analyzer-flow-engine/FlowScanner/tests/test_salesforce_id.py diff --git a/packages/code-analyzer-flow-engine/FlowScanner/queries/optional_query.py b/packages/code-analyzer-flow-engine/FlowScanner/queries/optional_query.py index 61b49cc1..abb91562 100644 --- a/packages/code-analyzer-flow-engine/FlowScanner/queries/optional_query.py +++ b/packages/code-analyzer-flow-engine/FlowScanner/queries/optional_query.py @@ -24,7 +24,7 @@ DEFAULT_HELP_URL = ("https://developer.salesforce.com/docs/atlas.en-us.secure_coding_guide.meta" "/secure_coding_guide/secure_coding_considerations_flow_design.htm") -id_pattern = re.compile(r"^(?=.*[0-9][0-9])[a-zA-Z0-9]+[a-zA-Z0-9]{15}(?:[0-5][A-Z0-5]{3})?$") +id_pattern = re.compile(r"^[a-zA-Z0-9]{5}0[a-zA-Z0-9]{9}(?:[A-Z0-5]{3})?$") copy_name_pattern = re.compile(r"^Copy_\d+_of_[a-zA-Z]+") copy_label_pattern = re.compile(r"^Copy \d+ of [a-zA-Z]+") diff --git a/packages/code-analyzer-flow-engine/FlowScanner/tests/test_salesforce_id.py b/packages/code-analyzer-flow-engine/FlowScanner/tests/test_salesforce_id.py new file mode 100644 index 00000000..97923681 --- /dev/null +++ b/packages/code-analyzer-flow-engine/FlowScanner/tests/test_salesforce_id.py @@ -0,0 +1,32 @@ +"""Tests for queries.optional_query.is_valid_salesforce_id. + +Run from the FlowScanner directory with:: + + python3 -m unittest tests.test_salesforce_id +""" +import unittest + +from queries.optional_query import is_valid_salesforce_id, to18 + + +class IsValidSalesforceIdTest(unittest.TestCase): + def test_valid_18_char_id(self): + self.assertTrue(is_valid_salesforce_id("001cU000009Tt2MQAS")) + + def test_valid_15_char_id(self): + self.assertTrue(is_valid_salesforce_id("001cU000009Tt2M")) + + def test_valid_18_char_id_without_adjacent_digits(self): + base = "aBcDe0FgHiJkLmN" + self.assertTrue(is_valid_salesforce_id(to18(base))) + + def test_invalid_18_char_checksum(self): + self.assertFalse(is_valid_salesforce_id("001cU000009Tt2MAAA")) + + def test_rejects_other_lengths(self): + for word in ["abcdefghij11klmn", "abcdefghij11klmno", "abcdefghijk11lmnopq", "short11"]: + self.assertFalse(is_valid_salesforce_id(word), word) + + +if __name__ == "__main__": + unittest.main()