Skip to content

jsonPath doesn't work in connekt scripts with body.string() call #5

@andreysubbotin

Description

@andreysubbotin

Connekt script with body!!.string() before jsonPath. Exception occurs in that case.

val petIds by GET("http://localhost:8080/rest/owners") {
    queryParam("lastNameContains", "coleman")
} then {
    assertThat(code).isEqualTo(200)
    val responseBody= body!!.string()
    val result  = jsonPath().readList("$.content[*]", Owner::class.java).flatMap { it.petIds }

    println(result)

    result
}

Error while execute:

Exception in thread "main" com.jayway.jsonpath.InvalidJsonException: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1]
	at com.jayway.jsonpath.spi.json.JacksonJsonProvider.parse(JacksonJsonProvider.java:92)
	at com.jayway.jsonpath.internal.ParseContextImpl.parse(ParseContextImpl.java:58)
	at com.jayway.jsonpath.internal.ParseContextImpl.parse(ParseContextImpl.java:50)
	at com.jayway.jsonpath.JsonPath.parse(JsonPath.java:714)
	at io.amplicode.connekt.context.JsonContext.getReadContext(JsonContext.kt:31)
	at io.amplicode.connekt.JsonExtensionsProviderImpl.jsonPath(JsonExtensionsProviderImpl.kt:13)
	at io.amplicode.connekt.ConnektBuilderImpl.jsonPath(ConnektBuilderImpl.kt)
	at Creating_visit_connekt.petIds_delegate$lambda$2(creating-visit.connekt.kts:13)
	at io.amplicode.connekt.MappedRequestHolder.handleResponse(ConnektRequestExecutable.kt:82)
	at io.amplicode.connekt.MappedRequestHolder.access$handleResponse(ConnektRequestExecutable.kt:67)
	at io.amplicode.connekt.MappedRequestHolder$1.invoke(ConnektRequestExecutable.kt:77)
	at io.amplicode.connekt.MappedRequestHolder$1.invoke(ConnektRequestExecutable.kt:77)
	at io.amplicode.connekt.ConnektRequestExecutableKt$onResultObtained$1.onResultObtained(ConnektRequestExecutable.kt:110)
	at io.amplicode.connekt.ConnektRequestExecutable.fireResult(ConnektRequestExecutable.kt:18)
	at io.amplicode.connekt.ConnektRequestExecutable.execute$connekt_script_definition(ConnektRequestExecutable.kt:24)
	at io.amplicode.connekt.context.ExecutionContext.execute(ExecutionContext.kt:42)
	at io.amplicode.connekt.context.ExecutionContext.execute(ExecutionContext.kt:54)
	at io.amplicode.connekt.RunScriptKt.runScript(RunScript.kt:73)
	at io.amplicode.connekt.ConnektCommand.run(ConnektCommand.kt:37)
	at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:107)
	at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
	at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
	at io.amplicode.connekt.EvaluatorKt.main(Evaluator.kt:5)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1767)
	at com.fasterxml.jackson.databind.ObjectReader._initForReading(ObjectReader.java:360)
	at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2115)
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1533)
	at com.jayway.jsonpath.spi.json.JacksonJsonProvider.parse(JacksonJsonProvider.java:90)
	... 22 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions