[#55] Fixed regex processing on the server side

This commit is contained in:
Marcin Grzejszczak
2015-05-11 18:17:06 +02:00
parent 366c604291
commit ce42dd5e85
5 changed files with 50 additions and 1 deletions

View File

@@ -5,6 +5,8 @@ import groovy.transform.PackageScope
import io.codearte.accurest.dsl.GroovyDsl
import io.codearte.accurest.dsl.internal.Header
import java.util.regex.Pattern
/**
* @author Jakub Kubrynski
*/
@@ -73,6 +75,8 @@ class SpockMethodBodyBuilder {
processMapElement(value, blockBuilder, property)
} else if (value instanceof List) {
processArrayElements(value, property, blockBuilder)
} else if (value instanceof Pattern) {
blockBuilder.addLine("responseBody$property ==~ java.util.regex.Pattern.compile('${value}')")
} else {
blockBuilder.addLine("responseBody$property == ${value}")
}
@@ -90,4 +94,7 @@ class SpockMethodBodyBuilder {
}
}
}
private void processClosure(Closure value, BlockBuilder blockBuilder, String property) {
blockBuilder.addLine()
}
}

View File

@@ -66,6 +66,10 @@ class Common {
return Pattern.compile(regex)
}
MethodProperty execute(String closureDefinition) {
return new MethodProperty(closureDefinition)
}
ClientDslProperty client(Object clientValue) {
return new ClientDslProperty(clientValue)
}

View File

@@ -0,0 +1,13 @@
package io.codearte.accurest.dsl.internal
import groovy.transform.CompileStatic
@CompileStatic
class MethodProperty {
final String closureDefinition
MethodProperty(String closureDefinition) {
this.closureDefinition = closureDefinition
}
}

View File

@@ -0,0 +1,20 @@
io.codearte.accurest.dsl.GroovyDsl.make {
request {
method 'PUT'
url $(client(regex('^/api/[0-9]{2}$')), server('/api/12'))
headers {
header 'Content-Type': 'application/json'
}
body '''\
[{
"text": "Gonna see you at Warsaw"
}]
'''
}
response {
body (
path: $(client('/api/12'), server(regex('^/api/[0-9]{2}$')))
)
status 200
}
}

View File

@@ -21,10 +21,15 @@ class PairIdController {
method = PUT,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
void getPlacesFromTweets(@PathVariable long pairId, @RequestBody List<Tweet> tweets) {
String getPlacesFromTweets(@PathVariable long pairId, @RequestBody List<com.ofg.twitter.place.Tweet> tweets) {
log.info("Inside PairIdController, doing very important logic")
if (tweets?.text != ["Gonna see you at Warsaw"]) {
throw new IllegalArgumentException("Wrong text in tweet: ${tweets?.text}")
}
return """
{
"path" : "/api/$pairId"
}
"""
}
}