test(Common): add tests for Types/AI/AIChatPermissionModeHelper#2682
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds unit tests for
AIChatPermissionModeHelperinCommon/Types/AI/AIChatPermissionMode.ts, which previously had no test coverage.This enum gates whether the AI chat agent may run mutating tools (create/acknowledge/resolve incidents and alerts). It's persisted per-conversation on
AIConversation.permissionModeand enforced inChatAgentRunner, so its parsing behaviour is security-relevant.Covered:
getDefault— returnsAskForApproval, and explicitly asserts it is not the permissiveAutoRun.isValid— accepts every mode; rejectsundefined, empty string, wrong casing, trailing whitespace, and unknown values.parse— round-trips every valid mode and falls back to the default for unrecognized input. Includes a fail-safe invariant: a malformed or missing persisted value must never resolve toAutoRun, so a bad column value can't silently let the agent mutate project data without approval.getOptions— exposes exactly one option per mode (no duplicates, none missing), each with a non-empty title and description, and every offered option is itself parseable.Why
Improves test coverage for the
Common/Typesutilities (part of the broader test-coverage effort). The fail-safe and option-completeness invariants guard the permission gate as new modes get added.Testing
All 17 tests pass. Prettier- and eslint-clean.