io.specmatic.core.BadRequestOrDefault.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of specmatic-core Show documentation
Show all versions of specmatic-core Show documentation
Turn your contracts into executable specifications. Contract Driven Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends.
package io.specmatic.core
class BadRequestOrDefault(private val badRequestResponses: Map, private val defaultResponse: HttpResponsePattern?) {
fun matches(httpResponse: HttpResponse, resolver: Resolver): Result =
when(httpResponse.status) {
in badRequestResponses -> badRequestResponses.getValue(httpResponse.status).matches(httpResponse, resolver)
else -> defaultResponse?.matches(httpResponse, resolver)?.partialSuccess("The response matched the default response, but the contract should declare a ${httpResponse.status} response.") ?: Result.Failure(
"Neither is the status code declared nor is there a default response."
)
}
fun supports(httpStatus: Int): Boolean =
httpStatus in badRequestResponses || defaultResponse != null
}