Add optional getting of mock report when deleting mock
Change-Id: I954e484387d3660fdfebad57fc419697b1a0fedd
This commit is contained in:
parent
dbdefeb614
commit
5460cd4e91
4 changed files with 45 additions and 25 deletions
|
@ -31,9 +31,9 @@ class RemoteMockServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MockEvent> removeMock(String name) {
|
List<MockEvent> removeMock(String name, boolean skipReport = false) {
|
||||||
HttpPost removeMockPost = new HttpPost(address)
|
HttpPost removeMockPost = new HttpPost(address)
|
||||||
removeMockPost.entity = buildRemoveMockRequest(new RemoveMockRequestData(name: name))
|
removeMockPost.entity = buildRemoveMockRequest(new RemoveMockRequestData(name: name, skipReport: skipReport))
|
||||||
CloseableHttpResponse response = client.execute(removeMockPost)
|
CloseableHttpResponse response = client.execute(removeMockPost)
|
||||||
GPathResult responseXml = Util.extractXmlResponse(response)
|
GPathResult responseXml = Util.extractXmlResponse(response)
|
||||||
if (responseXml.name() == 'mockRemoved') {
|
if (responseXml.name() == 'mockRemoved') {
|
||||||
|
@ -58,14 +58,16 @@ class RemoteMockServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static MockResponse mockResponseFromXml(GPathResult xml) {
|
private static MockResponse mockResponseFromXml(GPathResult xml) {
|
||||||
return new MockResponse(xml.statusCode.text() as int, xml.text.text(), xml.headers.param.collectEntries { [(it.@name.text()):it.text()] })
|
return new MockResponse(xml.statusCode.text() as int, xml.text.text(), xml.headers.param.collectEntries {
|
||||||
|
[(it.@name.text()): it.text()]
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private static MockRequest mockRequestFromXml(GPathResult xml) {
|
private static MockRequest mockRequestFromXml(GPathResult xml) {
|
||||||
return new MockRequest(
|
return new MockRequest(
|
||||||
xml.text.text(),
|
xml.text.text(),
|
||||||
xml.headers.param.collectEntries { [(it.@name.text()):it.text()] },
|
xml.headers.param.collectEntries { [(it.@name.text()): it.text()] },
|
||||||
xml.query.param.collectEntries { [(it.@name.text()):it.text()] },
|
xml.query.param.collectEntries { [(it.@name.text()): it.text()] },
|
||||||
xml.path.elem*.text()
|
xml.path.elem*.text()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -74,6 +76,7 @@ class RemoteMockServer {
|
||||||
return new StringEntity("""\
|
return new StringEntity("""\
|
||||||
<removeMock>
|
<removeMock>
|
||||||
<name>${data.name}</name>
|
<name>${data.name}</name>
|
||||||
|
<skipReport>${data.skipReport}</skipReport>
|
||||||
</removeMock>
|
</removeMock>
|
||||||
""", ContentType.create("text/xml", "UTF-8"))
|
""", ContentType.create("text/xml", "UTF-8"))
|
||||||
}
|
}
|
||||||
|
@ -107,7 +110,9 @@ class RemoteMockServer {
|
||||||
CloseableHttpResponse response = client.execute(get)
|
CloseableHttpResponse response = client.execute(get)
|
||||||
GPathResult xml = Util.extractXmlResponse(response)
|
GPathResult xml = Util.extractXmlResponse(response)
|
||||||
if (xml.name() == 'mocks') {
|
if (xml.name() == 'mocks') {
|
||||||
return xml.mock.collect { new RegisteredMock(it.name.text(), it.path.text(), it.port.text() as int, it.predicate.text(), it.response.text(), it.responseHeaders.text()) }
|
return xml.mock.collect {
|
||||||
|
new RegisteredMock(it.name.text(), it.path.text(), it.port.text() as int, it.predicate.text(), it.response.text(), it.responseHeaders.text())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,4 +7,5 @@ import groovy.transform.TypeChecked
|
||||||
@TypeChecked
|
@TypeChecked
|
||||||
class RemoveMockRequestData {
|
class RemoveMockRequestData {
|
||||||
String name
|
String name
|
||||||
|
boolean skipReport = false
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,13 @@
|
||||||
package pl.touk.mockserver.tests
|
package pl.touk.mockserver.tests
|
||||||
|
|
||||||
import groovy.util.slurpersupport.GPathResult
|
import groovy.util.slurpersupport.GPathResult
|
||||||
import org.apache.http.client.methods.CloseableHttpResponse
|
import org.apache.http.client.methods.*
|
||||||
import org.apache.http.client.methods.HttpDelete
|
|
||||||
import org.apache.http.client.methods.HttpGet
|
|
||||||
import org.apache.http.client.methods.HttpHead
|
|
||||||
import org.apache.http.client.methods.HttpOptions
|
|
||||||
import org.apache.http.client.methods.HttpPatch
|
|
||||||
import org.apache.http.client.methods.HttpPost
|
|
||||||
import org.apache.http.client.methods.HttpPut
|
|
||||||
import org.apache.http.client.methods.HttpTrace
|
|
||||||
import org.apache.http.entity.ContentType
|
import org.apache.http.entity.ContentType
|
||||||
import org.apache.http.entity.StringEntity
|
import org.apache.http.entity.StringEntity
|
||||||
import org.apache.http.impl.client.CloseableHttpClient
|
import org.apache.http.impl.client.CloseableHttpClient
|
||||||
import org.apache.http.impl.client.HttpClients
|
import org.apache.http.impl.client.HttpClients
|
||||||
import org.apache.http.util.EntityUtils
|
import org.apache.http.util.EntityUtils
|
||||||
import pl.touk.mockserver.client.AddMockRequestData
|
import pl.touk.mockserver.client.*
|
||||||
import pl.touk.mockserver.client.InvalidMockDefinition
|
|
||||||
import pl.touk.mockserver.client.Method
|
|
||||||
import pl.touk.mockserver.client.MockAlreadyExists
|
|
||||||
import pl.touk.mockserver.client.MockDoesNotExist
|
|
||||||
import pl.touk.mockserver.client.MockEvent
|
|
||||||
import pl.touk.mockserver.client.RegisteredMock
|
|
||||||
import pl.touk.mockserver.client.RemoteMockServer
|
|
||||||
import pl.touk.mockserver.client.Util
|
|
||||||
import pl.touk.mockserver.server.HttpMockServer
|
import pl.touk.mockserver.server.HttpMockServer
|
||||||
import spock.lang.Shared
|
import spock.lang.Shared
|
||||||
import spock.lang.Specification
|
import spock.lang.Specification
|
||||||
|
@ -827,4 +811,32 @@ class MockServerIntegrationTest extends Specification {
|
||||||
mockEvents2[0].response.text == '<goodResponseRest/>'
|
mockEvents2[0].response.text == '<goodResponseRest/>'
|
||||||
mockEvents2[0].response.statusCode == 202
|
mockEvents2[0].response.statusCode == 202
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Unroll
|
||||||
|
def "should return mock report with #mockEvents events when deleting mock with flag skip mock = #skipReport"() {
|
||||||
|
expect:
|
||||||
|
remoteMockServer.addMock(new AddMockRequestData(
|
||||||
|
name: 'testRest',
|
||||||
|
path: 'testEndpoint',
|
||||||
|
port: 9999,
|
||||||
|
predicate: '''{req -> req.xml.name()[0..6] == 'request' }''',
|
||||||
|
response: '''{req -> "<goodResponseRest-${req.xml.name()}/>"}''',
|
||||||
|
statusCode: 201,
|
||||||
|
responseHeaders: '''{req -> ['aaa':'14']}''',
|
||||||
|
soap: false
|
||||||
|
))
|
||||||
|
when:
|
||||||
|
HttpPost post1 = new HttpPost('http://localhost:9999/testEndpoint')
|
||||||
|
post1.entity = new StringEntity('<request/>', ContentType.create("text/xml", "UTF-8"))
|
||||||
|
CloseableHttpResponse response1 = client.execute(post1)
|
||||||
|
then:
|
||||||
|
GPathResult restPostResponse1 = Util.extractXmlResponse(response1)
|
||||||
|
restPostResponse1.name() == 'goodResponseRest-request'
|
||||||
|
expect:
|
||||||
|
remoteMockServer.removeMock('testRest', skipReport).size() == mockEvents
|
||||||
|
where:
|
||||||
|
skipReport | mockEvents
|
||||||
|
false | 1
|
||||||
|
true | 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,11 +105,13 @@ class HttpMockServer {
|
||||||
|
|
||||||
private void removeMock(GPathResult request, HttpExchange ex) {
|
private void removeMock(GPathResult request, HttpExchange ex) {
|
||||||
String name = request.name
|
String name = request.name
|
||||||
|
boolean skipReport = Boolean.parseBoolean(request.skipReport?.toString() ?: 'false')
|
||||||
|
println "!!!!!!!!! $skipReport"
|
||||||
if (!(name in mockNames)) {
|
if (!(name in mockNames)) {
|
||||||
throw new RuntimeException('mock not registered')
|
throw new RuntimeException('mock not registered')
|
||||||
}
|
}
|
||||||
log.info("Removing mock $name")
|
log.info("Removing mock $name")
|
||||||
List<MockEvent> mockEvents = childServers.collect { it.removeMock(name) }.flatten()
|
List<MockEvent> mockEvents = skipReport ? [] : childServers.collect { it.removeMock(name) }.flatten()
|
||||||
mockNames.remove(name)
|
mockNames.remove(name)
|
||||||
createResponse(ex, createMockRemovedResponse(mockEvents), 200)
|
createResponse(ex, createMockRemovedResponse(mockEvents), 200)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue