feat(core): add asyncapi-operation-security-defined lint rule#2759
feat(core): add asyncapi-operation-security-defined lint rule#2759harshit078 wants to merge 72 commits into
Conversation
🦋 Changeset detectedLatest commit: 75389dc The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
vadyvas
left a comment
There was a problem hiding this comment.
I would suggest a slightly different approach:
- keep the AsyncAPI logic separate and do not reuse shared logic from the OAS rule
- use the same rule name,
security-defined, for AsyncAPI as well, and register the AsyncAPI implementation in the AsyncAPI ruleset - do not update the v1 docs in this PR
I think this would make the change smaller, clearer, and safer.
Thank you for the contribution, overall the PR looks good
vadyvas
left a comment
There was a problem hiding this comment.
left a few comments, could you take a look?
| 'info-contact': InfoContact as Async2Rule, | ||
| 'info-license-strict': InfoLicenseStrict as Async2Rule, | ||
| 'operation-operationId': OperationOperationId as Async2Rule, | ||
| 'security-defined': SecurityDefined, |
There was a problem hiding this comment.
Please add support for AsyncAPI 3 as well. Right now the rule only applies to AsyncAPI2
There was a problem hiding this comment.
The code uses the rule name security-defined, but the docs still say asyncapi-operation-security-defined
Can you update related changes?
| @@ -0,0 +1,83 @@ | |||
| # asyncapi-operation-security-defined | |||
There was a problem hiding this comment.
Please don’t add this rule to the v1 docs
|
Hi @AlbinaBlazhko17 , I have addressed all the refactoring you mentioned and fixed all comments by cursor. Can you check again ? Thanks for the patience to go back and forth ! |
| --- | ||
|
|
||
| Added `security-defined` rule for AsyncAPI 2.x and 3.x. | ||
| This rule reports when a security scheme referenced from an operation or server `security` array is not defined in `components.securitySchemes`. |
There was a problem hiding this comment.
Please, add warning here, because it is breaking change due to adding new rule in recommended ruleset with error severity.
e.g.
**Warning**: this change may break workflows that relied on root-level server inheritance.
And, i think, we need to remove second sentence, which explain how rule works.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cc37359. Configure here.
|
|
||
| Added `security-defined` rule for AsyncAPI 2.x and 3.x. | ||
|
|
||
| **Warning**: this change may break workflows that relied on root-level server inheritance. |
There was a problem hiding this comment.
I provided to you just an example from another PR. Please update this warning to align with this PR.
There was a problem hiding this comment.
I just realiased that and completely missed that in hurry. Aplogies !
There was a problem hiding this comment.
No worries! Please, fix the issue from bugbot and i will review PR one more time. Thanks!
There was a problem hiding this comment.
Addressed cursor bot comment. The Pr is good to review again. Thanks !

What/Why/How?
asyncapi-operation-security-definedrule for AsyncAPI 2.x which reports when a security scheme referenced from an operation or serversecurityarray is not defined in ``components.securitySchemes.Reference
#2667
Testing
Screenshots (optional)
Check yourself
Security
Note
Medium Risk
New recommended-rule errors can break existing CI for AsyncAPI, and the rule enforces security documentation correctness (not runtime auth), with nuanced server/channel/trait behavior that users must align with.
Overview
Adds the
security-definedbuilt-in lint rule for AsyncAPI 2.x and 3.x, mirroring the OpenAPI rule: it validates security scheme references on operations and servers, and requires operations to declare security when applicable servers do not cover it.AsyncAPI 2.x checks named schemes in
securityrequirements againstcomponents.securitySchemes, tracks root server security (ignoringcomponents.servers), and considers channel server bindings and operation traits via newisOperationSecuredhelper and expanded Async2 visitor hooks.AsyncAPI 3.x validates
$reftargets under#/components/securitySchemes/, enforces operation security on rootoperations(not reusablecomponents.operations), and applies channel/server applicability similar to 2.x.The rule is wired into
async2Rules/async3Rulespresets (errorin recommended / all,warnin minimal,offin spec). Docs, changeset, and sidebar are updated. AsyncAPI typings are tightened to support the walkers; CLI split code gets a smallAnyAsyncApiComponentstyping refactor only.Breaking: AsyncAPI specs using recommended may newly fail lint until security references and missing operation security are fixed.
Reviewed by Cursor Bugbot for commit 75389dc. Bugbot is set up for automated code reviews on this repo. Configure here.