diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy index f37f74143f..2b2548bd11 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy @@ -45,21 +45,28 @@ class SpockMethodBodyBuilder { blockBuilder.addLine('and:').startBlock() blockBuilder.addLine('def responseBody = new JsonSlurper().parseText(response.body.asString())') stubDefinition.response.body.serverValue.each { - def value = it.value - if (value instanceof String) { - if (value.startsWith('$')) { - value = value.substring(1).replaceAll('\\$value', "responseBody.$it.key") - blockBuilder.addLine(value) - } else { - blockBuilder.addLine("responseBody.$it.key == \"${value}\"") - } - } else { - blockBuilder.addLine("responseBody.$it.key == ${value}") - } + processBodyElement(blockBuilder, "", it) } } blockBuilder.endBlock() blockBuilder.endBlock() } + + private void processBodyElement(BlockBuilder blockBuilder, String rootProperty, def element) { + def value = element.value + String property = rootProperty + "." + element.key + if (value instanceof String) { + if (value.startsWith('$')) { + value = value.substring(1).replaceAll('\\$value', "responseBody$property") + blockBuilder.addLine(value) + } else { + blockBuilder.addLine("responseBody$property == \"${value}\"") + } + } else if (value instanceof Map) { + value.each { entry -> processBodyElement(blockBuilder, property, entry) } + } else { + blockBuilder.addLine("responseBody$property == ${value}") + } + } } diff --git a/accurest-core/src/test/resources/dsl/basic/sampleDsl.groovy b/accurest-core/src/test/resources/dsl/basic/sampleDsl.groovy index 40dc6494de..7200a71dae 100644 --- a/accurest-core/src/test/resources/dsl/basic/sampleDsl.groovy +++ b/accurest-core/src/test/resources/dsl/basic/sampleDsl.groovy @@ -11,7 +11,7 @@ io.coderate.accurest.dsl.GroovyDsl.make { } """ ) - urlPattern $(client('/[0-9]{2}'), server('/12')) + url $(client('/[0-9]{2}'), server('/12')) } response { status 200