OpenAPITools/openapi-diff

Missing #/components/securitySchemes section leads to IllegalArgumentException

Open

#737 aperta il 30 gen 2025

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)Java (187 fork)user submission
good first issuehelp wanted

Metriche repository

Star
 (1079 star)
Metriche merge PR
 (Merge medio 38g 22h) (15 PR mergiate in 30 g)

Descrizione

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

Guida contributor