Expected behavior
If a response header is declared without any required attribute, it should be interpreted as optional.
Actual behavior
There`s an exception:
java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because "java.util.Map$Entry.getValue().required" is null
at org.citrusframework.openapi.model.v3.Oas30ModelHelper.lambda$getRequiredHeaders$14(Oas30ModelHelper.java:222)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
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.citrusframework.openapi.model.v3.Oas30ModelHelper.getRequiredHeaders(Oas30ModelHelper.java:223)
at org.citrusframework.openapi.model.OasModelHelper.delegate(OasModelHelper.java:216)
at org.citrusframework.openapi.model.OasModelHelper.getRequiredHeaders(OasModelHelper.java:167)
at org.citrusframework.openapi.actions.OpenApiClientResponseActionBuilder$OpenApiClientResponseMessageBuilder.build(OpenApiClientResponseActionBuilder.java:101)
at org.citrusframework.actions.ReceiveMessageAction.createControlMessage(ReceiveMessageAction.java:276)
at org.citrusframework.actions.ReceiveMessageAction.validateMessage(ReceiveMessageAction.java:226)
at org.citrusframework.actions.ReceiveMessageAction.doExecute(ReceiveMessageAction.java:167)
at org.citrusframework.actions.AbstractTestAction.execute(AbstractTestAction.java:59)
at org.citrusframework.DefaultTestCase.executeAction(DefaultTestCase.java:190)
... 8 more
Test case sample
The OpenAPI declared a Location header for a POST operation:
responses:
201:
description: Todo created
headers:
Location:
description: The URL of the newly created todo.
# required: true
schema:
type: string
format: uri
Citrus Version 4.2.1
Expected behavior If a response header is declared without any
required
attribute, it should be interpreted as optional.Actual behavior There`s an exception:
Test case sample The OpenAPI declared a Location header for a POST operation:
This is used to validate the response.