Add support for path parameters

This commit is contained in:
Dominik Adam Przybysz 2014-12-14 12:45:56 +01:00
parent 0bfa0d91b4
commit d476478192
3 changed files with 29 additions and 4 deletions

View file

@ -17,7 +17,7 @@ class ContextExecutor {
this.mocks = new CopyOnWriteArrayList<>([initialMock]) this.mocks = new CopyOnWriteArrayList<>([initialMock])
httpServerWraper.createContext(path, { httpServerWraper.createContext(path, {
HttpExchange ex -> HttpExchange ex ->
MockRequest request = new MockRequest(ex.requestBody.text, ex.requestHeaders, ex.requestURI.query) MockRequest request = new MockRequest(ex.requestBody.text, ex.requestHeaders, ex.requestURI)
println "Mock received input" println "Mock received input"
for (Mock mock : mocks) { for (Mock mock : mocks) {
try { try {

View file

@ -13,14 +13,16 @@ class MockRequest {
final GPathResult xml final GPathResult xml
final GPathResult soap final GPathResult soap
final Object json final Object json
final List<String> path
MockRequest(String text, Headers headers, String query) { MockRequest(String text, Headers headers, URI uri) {
this.text = text this.text = text
this.headers = headersToMap(headers) this.headers = headersToMap(headers)
this.query = queryParamsToMap(query) this.query = queryParamsToMap(uri.query)
this.xml = inputToXml(text) this.xml = inputToXml(text)
this.soap = inputToSoap(xml) this.soap = inputToSoap(xml)
this.json = inputToJson(text) this.json = inputToJson(text)
this.path = uri.path.split('/').findAll()
} }
private static GPathResult inputToXml(String text) { private static GPathResult inputToXml(String text) {

View file

@ -612,7 +612,30 @@ class MockServerIntegrationTest extends Specification {
new RegisteredMock('testRest4', 'testEndpoint', 9999), new RegisteredMock('testRest4', 'testEndpoint', 9999),
new RegisteredMock('testRest6', 'testEndpoint2', 9999) new RegisteredMock('testRest6', 'testEndpoint2', 9999)
] ]
} }
def "should add mock accepts path certain path params"() {
given:
controlServerClient.addMock(new AddMockRequestData(
name: 'testRest',
path: 'testEndpoint',
port: 9999,
predicate: '''{req -> req.path[1] == '15' && req.path[2] == 'comments'}''',
response: '''{req -> """{"name":"goodResponse-${req.path[1]}"}"""}'''
))
HttpPost restPost = new HttpPost('http://localhost:9999/testEndpoint/15/comments')
HttpPost badRestPost = new HttpPost('http://localhost:9999/testEndpoint/test/comments')
when:
CloseableHttpResponse badResponse = client.execute(badRestPost)
then:
badResponse.statusLine.statusCode == 404
Util.consumeResponse(badResponse)
when:
CloseableHttpResponse response = client.execute(restPost)
then:
Object restPostResponse = Util.extractJsonResponse(response)
restPostResponse.name == 'goodResponse-15'
}
//TODO def "should get mock report"(){} //TODO def "should get mock report"(){}
} }