Skip to content

Missing #/components/securitySchemes section leads to IllegalArgumentException #737

@DrSatyr

Description

@DrSatyr

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions