OpenAPITools / OpenAPITools/openapi-diff
Missing #/components/securitySchemes section leads to IllegalArgumentException
未关闭
还没有人认领这个 Issue。
- #232 来自 @vijayvepa —— 已关闭,未合并
good first issue
help wanted
- 主要语言
- Java
- 星标
- 1.1k
- 派生
- 190
- PR 合并指标
- 30 天内没有已合并 PR
描述
In case components -> securitySchemes is not present in open API documentation, report generation failed with IllegalArgumentException. However, it is a valid openAPI schema.
Unexpected exception. Reason: Missing securitySchemes component definition.
java.lang.IllegalArgumentException: Missing securitySchemes component definition.
at org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff.lambda$getListOfSecuritySchemes$1(SecurityRequirementsDiff.java:63)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff.getListOfSecuritySchemes(SecurityRequirementsDiff.java:75)
at org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff.same(SecurityRequirementsDiff.java:46)
at org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff.lambda$contains$0(SecurityRequirementsDiff.java:40)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1685)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
at org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff.contains(SecurityRequirementsDiff.java:41)
at org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff.diff(SecurityRequirementsDiff.java:94)
at org.openapitools.openapidiff.core.compare.OperationDiff.diff(OperationDiff.java:121)
at org.openapitools.openapidiff.core.compare.PathDiff.diff(PathDiff.java:39)
at org.openapitools.openapidiff.core.compare.PathsDiff.lambda$diff$3(PathsDiff.java:90)
at java.base/java.util.LinkedHashMap$LinkedKeySet.forEach(LinkedHashMap.java:729)
at org.openapitools.openapidiff.core.compare.PathsDiff.diff(PathsDiff.java:47)
at org.openapitools.openapidiff.core.compare.OpenApiDiff.compare(OpenApiDiff.java:109)
at org.openapitools.openapidiff.core.compare.OpenApiDiff.compare(OpenApiDiff.java:72)
at org.openapitools.openapidiff.core.OpenApiCompare.fromSpecifications(OpenApiCompare.java:166)
at org.openapitools.openapidiff.core.OpenApiCompare.fromLocations(OpenApiCompare.java:141)
at org.openapitools.openapidiff.cli.Main.main(Main.java:224)
Steps to reproduce: try to build diff report comparing the same schema without components -> securitySchemes section. Example schema openapi3_1.json
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 org.openapitools.openapidiff.core.compare.SecurityRequirementsDiff 开始,重点查看第 63 行附近的 getListOfSecuritySchemes,并使用不包含 components.securitySchemes 的附带 openapi3_1.json schema 重现比较过程。完成标准是为有效 schema 生成 diff 报告,且不会出现 IllegalArgumentException。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- api
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 描述清楚
- 新手友好度
- 45/100