Files
df7f64a4bd [MM-64357] Fix ABAC policy editor unable to switch back to Simple Mode when a value contains an apostrophe (#37819)
* [MM-64357] Fix ABAC simple-expression detection for apostrophe values

The isSimpleCondition/isMultiselectOrGroup helpers used a quoted-string
regex fragment (['"][^'"]*['"]) that rejected any quote character inside
a value. A valid value like "Matt's Department" therefore failed the
simple-expression check, disabling "Switch to Simple Mode" and trapping
the policy editor in advanced mode.

Replace the fragment with a proper CEL string-literal pattern that allows
apostrophes inside double-quoted strings (and double quotes inside
single-quoted strings), plus escaped quotes, matching what the CEL parser
accepts and what celStringLiteral emits.

Co-authored-by: mattermost-code <[email protected]>

* [MM-64357] Add tests for quote characters in ABAC simple-expression detection

Cover the apostrophe regression: values like "Matt's Department" must be
classified as simple expressions across equality, string operators, in-lists,
scalar-in, native email, single-quoted values, and multiselect OR groups. A
round-trip test ties rowToCEL/celStringLiteral output to isSimpleExpression,
and a negative case guards against accepting unterminated quoted values.

Co-authored-by: mattermost-code <[email protected]>

* [MM-64357] Strengthen quote-handling tests per review

Add bug-catching round-trip for "has any of" (multiselect OR group), plus
ranked-operator, session-namespace, and unescaped-embedded-quote cases.
Clarify that the in-list matcher and single-quoted case are intentionally
detection-only, and reword the celStringLiteral characterization comment.

Co-authored-by: mattermost-code <[email protected]>

* [MM-64357] Tighten CEL list pattern in simple-expression detection

Co-authored-by: mattermost-code <[email protected]>

* Add editor-surface and e2e tests for apostrophe values (MM-64357)

Address review feedback requesting the coverage gaps Linda/Matty flagged:
- Membership Policy surface (policy_details): rendered mode-toggle state
  (Switch to Simple Mode enabled) for apostrophe equality and multiselect
  OR-group values, plus a complex-expression negative control.
- Permission Policy surface (permission_policy_details): apostrophe
  equality/in-list/OR-group open in Simple mode and keep the toggle enabled,
  covering the shared isSimpleExpression path on both surfaces.
- Playwright e2e: apostrophe 'is' value round-trips through save/reopen and
  the Switch to Simple Mode toggle stays enabled (button state + persistence).

* Fix apostrophe values e2e test cleanup to be independent of list rendering

- Add fallback policy lookup by name in finally block
- Ensures cleanup happens even when navigation/assertions fail after save
- Addresses CodeRabbit feedback on test stability

Co-authored-by: Maria A Nunez <[email protected]>

---------

Co-authored-by: mattermost-code <[email protected]>
Co-authored-by: Maria A Nunez <[email protected]>

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-12 10:49:26 -04:00
..