You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When having Date schema and a DateTimeSchema strings in the OpenAPI the value results in an Cast exception
To Reproduce
Steps to reproduce the behaviour:
Run `cats --contract ... --useExamples=true
Using which OpenAPI file a definition like
...
startDateTime:
in: query
name: startDate
description: Starting date and time in ISO8601 format for query
required: true
schema:
type: string
format: date-time
examples:
- "2018-10-09T08:16:29.234Z"
startDate:
in: query
name: startDate
description: Starting date for query
required: true
schema:
type: string
format: date
examples:
- "2018-10-09"
...
And details about the error/issue you are facing
Getting the followng errors:
For Date:
Java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.Date (java.lang.String and java.util.Date are in module java.base of loader 'bootstrap')
at com.endava.cats.openapi.OpenAPIModelGenerator.formatExampleIfNeeded(OpenAPIModelGenerator.java:294)
at com.endava.cats.openapi.OpenAPIModelGenerator.extractExampleFromSchema(OpenAPIModelGenerator.java:258)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolvePropertyToExample(OpenAPIModelGenerator.java:203)
at com.endava.cats.openapi.OpenAPIModelGenerator.parseFromInnerSchema(OpenAPIModelGenerator.java:644)
at com.endava.cats.openapi.OpenAPIModelGenerator.processInnerSchema(OpenAPIModelGenerator.java:581)
at com.endava.cats.openapi.OpenAPIModelGenerator.processSchemaProperties(OpenAPIModelGenerator.java:573)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolveModelToExample(OpenAPIModelGenerator.java:529)
at com.endava.cats.openapi.OpenAPIModelGenerator.generate(OpenAPIModelGenerator.java:157)
at com.endava.cats.factory.FuzzingDataFactory.generateSample(FuzzingDataFactory.java:533)
at com.endava.cats.factory.FuzzingDataFactory.getRequestPayloadsSamples(FuzzingDataFactory.java:499)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzDataForNonBodyMethods(FuzzingDataFactory.java:348)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzingDataForGet(FuzzingDataFactory.java:228)
at com.endava.cats.factory.FuzzingDataFactory.fromPathItem(FuzzingDataFactory.java:131)
at com.endava.cats.factory.FuzzingDataFactory_ClientProxy.fromPathItem(Unknown Source)
at com.endava.cats.command.CatsCommand.fuzzPath(CatsCommand.java:379)
at com.endava.cats.command.CatsCommand.startFuzzing(CatsCommand.java:298)
at com.endava.cats.command.CatsCommand.doLogic(CatsCommand.java:243)
at com.endava.cats.command.CatsCommand.run(CatsCommand.java:193)
at picocli.CommandLine.executeUserObject(CommandLine.java:2030)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
at picocli.CommandLine.execute(CommandLine.java:2174)
at com.endava.cats.CatsMain.run(CatsMain.java:41)
at com.endava.cats.CatsMain_ClientProxy.run(Unknown Source)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:140)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:116)
at java.base/java.lang.Thread.run(Thread.java:1570)
For DateTime
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.time.OffsetDateTime (java.lang.String and java.time.OffsetDateTime are in module java.base of loader 'bootstrap')
at com.endava.cats.openapi.OpenAPIModelGenerator.formatExampleIfNeeded(OpenAPIModelGenerator.java:298)
at com.endava.cats.openapi.OpenAPIModelGenerator.extractExampleFromSchema(OpenAPIModelGenerator.java:258)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolvePropertyToExample(OpenAPIModelGenerator.java:203)
at com.endava.cats.openapi.OpenAPIModelGenerator.parseFromInnerSchema(OpenAPIModelGenerator.java:644)
at com.endava.cats.openapi.OpenAPIModelGenerator.processInnerSchema(OpenAPIModelGenerator.java:581)
at com.endava.cats.openapi.OpenAPIModelGenerator.processSchemaProperties(OpenAPIModelGenerator.java:573)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolveModelToExample(OpenAPIModelGenerator.java:529)
at com.endava.cats.openapi.OpenAPIModelGenerator.generate(OpenAPIModelGenerator.java:157)
at com.endava.cats.factory.FuzzingDataFactory.generateSample(FuzzingDataFactory.java:533)
at com.endava.cats.factory.FuzzingDataFactory.getRequestPayloadsSamples(FuzzingDataFactory.java:499)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzDataForNonBodyMethods(FuzzingDataFactory.java:348)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzingDataForGet(FuzzingDataFactory.java:228)
at com.endava.cats.factory.FuzzingDataFactory.fromPathItem(FuzzingDataFactory.java:131)
at com.endava.cats.factory.FuzzingDataFactory_ClientProxy.fromPathItem(Unknown Source)
at com.endava.cats.command.CatsCommand.fuzzPath(CatsCommand.java:379)
at com.endava.cats.command.CatsCommand.startFuzzing(CatsCommand.java:298)
at com.endava.cats.command.CatsCommand.doLogic(CatsCommand.java:243)
at com.endava.cats.command.CatsCommand.run(CatsCommand.java:193)
at picocli.CommandLine.executeUserObject(CommandLine.java:2030)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
at picocli.CommandLine.execute(CommandLine.java:2174)
at com.endava.cats.CatsMain.run(CatsMain.java:41)
at com.endava.cats.CatsMain_ClientProxy.run(Unknown Source)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:140)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:116)
at java.base/java.lang.Thread.run(Thread.java:1570)
Expected behaviour
No Exeption
Environment:
Key | Value
------------- | --------------------
OS Name | Windows 11
OS Version | 10.0
OS Arch | amd64
Binary Type | uber-jar
Cats Version | 12.1.1-SNAPSHOT
Cats Build | 2024-10-22T05:28:00Z
Term Width | 80
Term Type | unknown
Shell | unknown
Additional context
What I saw:
When having a OpenAPI spec like this the example value in method formatExampleIfNeeded are still strings and cannot be casted
like in the code
Date: example = "2018-10-09"
DateTime: example = "2018-10-09T08:16:29.234Z"
But during tests in the cats project the objects ar already objects of the corresponding type, not strings
Date: example = Date
DateTime: example = OffsetDateTime
The text was updated successfully, but these errors were encountered:
When having Date schema and a DateTimeSchema strings in the OpenAPI the value results in an Cast exception
To Reproduce
Steps to reproduce the behaviour:
...
startDateTime:
in: query
name: startDate
description: Starting date and time in ISO8601 format for query
required: true
schema:
type: string
format: date-time
examples:
- "2018-10-09T08:16:29.234Z"
startDate:
in: query
name: startDate
description: Starting date for query
required: true
schema:
type: string
format: date
examples:
- "2018-10-09"
...
Getting the followng errors:
For Date:
Java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.Date (java.lang.String and java.util.Date are in module java.base of loader 'bootstrap')
at com.endava.cats.openapi.OpenAPIModelGenerator.formatExampleIfNeeded(OpenAPIModelGenerator.java:294)
at com.endava.cats.openapi.OpenAPIModelGenerator.extractExampleFromSchema(OpenAPIModelGenerator.java:258)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolvePropertyToExample(OpenAPIModelGenerator.java:203)
at com.endava.cats.openapi.OpenAPIModelGenerator.parseFromInnerSchema(OpenAPIModelGenerator.java:644)
at com.endava.cats.openapi.OpenAPIModelGenerator.processInnerSchema(OpenAPIModelGenerator.java:581)
at com.endava.cats.openapi.OpenAPIModelGenerator.processSchemaProperties(OpenAPIModelGenerator.java:573)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolveModelToExample(OpenAPIModelGenerator.java:529)
at com.endava.cats.openapi.OpenAPIModelGenerator.generate(OpenAPIModelGenerator.java:157)
at com.endava.cats.factory.FuzzingDataFactory.generateSample(FuzzingDataFactory.java:533)
at com.endava.cats.factory.FuzzingDataFactory.getRequestPayloadsSamples(FuzzingDataFactory.java:499)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzDataForNonBodyMethods(FuzzingDataFactory.java:348)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzingDataForGet(FuzzingDataFactory.java:228)
at com.endava.cats.factory.FuzzingDataFactory.fromPathItem(FuzzingDataFactory.java:131)
at com.endava.cats.factory.FuzzingDataFactory_ClientProxy.fromPathItem(Unknown Source)
at com.endava.cats.command.CatsCommand.fuzzPath(CatsCommand.java:379)
at com.endava.cats.command.CatsCommand.startFuzzing(CatsCommand.java:298)
at com.endava.cats.command.CatsCommand.doLogic(CatsCommand.java:243)
at com.endava.cats.command.CatsCommand.run(CatsCommand.java:193)
at picocli.CommandLine.executeUserObject(CommandLine.java:2030)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
at picocli.CommandLine.execute(CommandLine.java:2174)
at com.endava.cats.CatsMain.run(CatsMain.java:41)
at com.endava.cats.CatsMain_ClientProxy.run(Unknown Source)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:140)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:116)
at java.base/java.lang.Thread.run(Thread.java:1570)
For DateTime
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.time.OffsetDateTime (java.lang.String and java.time.OffsetDateTime are in module java.base of loader 'bootstrap')
at com.endava.cats.openapi.OpenAPIModelGenerator.formatExampleIfNeeded(OpenAPIModelGenerator.java:298)
at com.endava.cats.openapi.OpenAPIModelGenerator.extractExampleFromSchema(OpenAPIModelGenerator.java:258)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolvePropertyToExample(OpenAPIModelGenerator.java:203)
at com.endava.cats.openapi.OpenAPIModelGenerator.parseFromInnerSchema(OpenAPIModelGenerator.java:644)
at com.endava.cats.openapi.OpenAPIModelGenerator.processInnerSchema(OpenAPIModelGenerator.java:581)
at com.endava.cats.openapi.OpenAPIModelGenerator.processSchemaProperties(OpenAPIModelGenerator.java:573)
at com.endava.cats.openapi.OpenAPIModelGenerator.resolveModelToExample(OpenAPIModelGenerator.java:529)
at com.endava.cats.openapi.OpenAPIModelGenerator.generate(OpenAPIModelGenerator.java:157)
at com.endava.cats.factory.FuzzingDataFactory.generateSample(FuzzingDataFactory.java:533)
at com.endava.cats.factory.FuzzingDataFactory.getRequestPayloadsSamples(FuzzingDataFactory.java:499)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzDataForNonBodyMethods(FuzzingDataFactory.java:348)
at com.endava.cats.factory.FuzzingDataFactory.getFuzzingDataForGet(FuzzingDataFactory.java:228)
at com.endava.cats.factory.FuzzingDataFactory.fromPathItem(FuzzingDataFactory.java:131)
at com.endava.cats.factory.FuzzingDataFactory_ClientProxy.fromPathItem(Unknown Source)
at com.endava.cats.command.CatsCommand.fuzzPath(CatsCommand.java:379)
at com.endava.cats.command.CatsCommand.startFuzzing(CatsCommand.java:298)
at com.endava.cats.command.CatsCommand.doLogic(CatsCommand.java:243)
at com.endava.cats.command.CatsCommand.run(CatsCommand.java:193)
at picocli.CommandLine.executeUserObject(CommandLine.java:2030)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
at picocli.CommandLine.execute(CommandLine.java:2174)
at com.endava.cats.CatsMain.run(CatsMain.java:41)
at com.endava.cats.CatsMain_ClientProxy.run(Unknown Source)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:140)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:116)
at java.base/java.lang.Thread.run(Thread.java:1570)
Expected behaviour
No Exeption
Environment:
------------- | --------------------
OS Name | Windows 11
OS Version | 10.0
OS Arch | amd64
Binary Type | uber-jar
Cats Version | 12.1.1-SNAPSHOT
Cats Build | 2024-10-22T05:28:00Z
Term Width | 80
Term Type | unknown
Shell | unknown
Additional context
What I saw:
When having a OpenAPI spec like this the example value in method formatExampleIfNeeded are still strings and cannot be casted
like in the code
But during tests in the cats project the objects ar already objects of the corresponding type, not strings
The text was updated successfully, but these errors were encountered: