Add mock report when deleting mock

This commit is contained in:
Dominik Adam Przybysz 2014-12-14 20:43:56 +01:00
parent d476478192
commit 0b4f4e0cf8
11 changed files with 224 additions and 26 deletions

View file

@ -49,13 +49,13 @@ class ContextExecutor {
Util.createResponse(httpExchange, response.text, response.statusCode)
}
int removeMock(String name) {
List<MockEvent> removeMock(String name) {
Mock mock = mocks.find { it.name == name }
if (mock) {
mocks.remove(mock)
return mock.counter
return mock.history
}
return 0
return []
}
void addMock(Mock mock) {

View file

@ -1,7 +1,6 @@
package pl.touk.mockserver.server
import com.sun.net.httpserver.HttpExchange
import groovy.transform.PackageScope
import groovy.util.slurpersupport.GPathResult
import groovy.xml.MarkupBuilder
@ -10,7 +9,6 @@ import java.util.concurrent.CopyOnWriteArraySet
import static pl.touk.mockserver.server.Util.createResponse
@PackageScope
class HttpMockServer {
private final HttpServerWraper httpServerWraper
@ -104,11 +102,43 @@ class HttpMockServer {
throw new RuntimeException('mock not registered')
}
println "Removing $name"
int used = childServers.inject(0) { int res, HttpServerWraper server -> server.removeMock(name) + res }
List<MockEvent> mockEvents = childServers.collect { it.removeMock(name) }.flatten()
mockNames.remove(name)
StringWriter sw = new StringWriter()
MarkupBuilder builder = new MarkupBuilder(sw)
builder.mockRemoved used
builder.mockRemoved {
mockEvents.each { MockEvent m ->
builder.mockEvent {
builder.request {
text m.request.text
headers {
m.request.headers.each {
builder.param(name: it.key, it.value)
}
}
query {
m.request.query.each {
builder.param(name: it.key, it.value)
}
}
path {
m.request.path.each {
builder.elem it
}
}
}
builder.response {
text m.response.text
headers {
m.response.headers.each {
builder.param(name: it.key, it.value)
}
}
statusCode m.response.statusCode
}
}
}
}
createResponse(ex, sw.toString(), 200)
}

View file

@ -42,11 +42,11 @@ class HttpServerWraper {
httpServer.stop(0)
}
int removeMock(String name) {
return executors.inject(0) { int res, ContextExecutor e -> e.removeMock(name) + res }
List<MockEvent> removeMock(String name) {
return executors.collect { it.removeMock(name) }.flatten()
}
List<Mock> getMocks(){
return executors.collect {it.mocks}.flatten()
List<Mock> getMocks() {
return executors.collect { it.mocks }.flatten()
}
}

View file

@ -3,6 +3,8 @@ package pl.touk.mockserver.server
import groovy.transform.EqualsAndHashCode
import groovy.transform.PackageScope
import java.util.concurrent.CopyOnWriteArrayList
@PackageScope
@EqualsAndHashCode(excludes = ["counter"])
class Mock implements Comparable<Mock> {
@ -16,6 +18,7 @@ class Mock implements Comparable<Mock> {
int statusCode = 200
String method = 'POST'
int counter = 0
final List<MockEvent> history = new CopyOnWriteArrayList<>()
Mock(String name, String path, int port) {
if (!(name)) {
@ -36,7 +39,9 @@ class Mock implements Comparable<Mock> {
String responseText = response(request)
String response = soap ? wrapSoap(responseText) : responseText
Map<String, String> headers = responseHeaders(request)
return new MockResponse(statusCode, response, headers)
MockResponse mockResponse = new MockResponse(statusCode, response, headers)
history << new MockEvent(request, mockResponse)
return mockResponse
}
private static String wrapSoap(String request) {

View file

@ -0,0 +1,14 @@
package pl.touk.mockserver.server
import groovy.transform.PackageScope
@PackageScope
class MockEvent {
final MockRequest request
final MockResponse response
MockEvent(MockRequest request, MockResponse response) {
this.request = request
this.response = response
}
}