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)
|
||||
removeMockPost.entity = buildRemoveMockRequest(new RemoveMockRequestData(name: name))
|
||||
removeMockPost.entity = buildRemoveMockRequest(new RemoveMockRequestData(name: name, skipReport: skipReport))
|
||||
CloseableHttpResponse response = client.execute(removeMockPost)
|
||||
GPathResult responseXml = Util.extractXmlResponse(response)
|
||||
if (responseXml.name() == 'mockRemoved') {
|
||||
|
@ -58,7 +58,9 @@ class RemoteMockServer {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
@ -74,6 +76,7 @@ class RemoteMockServer {
|
|||
return new StringEntity("""\
|
||||
<removeMock>
|
||||
<name>${data.name}</name>
|
||||
<skipReport>${data.skipReport}</skipReport>
|
||||
</removeMock>
|
||||
""", ContentType.create("text/xml", "UTF-8"))
|
||||
}
|
||||
|
@ -107,7 +110,9 @@ class RemoteMockServer {
|
|||
CloseableHttpResponse response = client.execute(get)
|
||||
GPathResult xml = Util.extractXmlResponse(response)
|
||||
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 []
|
||||
}
|
||||
|
|
|
@ -7,4 +7,5 @@ import groovy.transform.TypeChecked
|
|||
@TypeChecked
|
||||
class RemoveMockRequestData {
|
||||
String name
|
||||
boolean skipReport = false
|
||||
}
|
||||
|
|
|
@ -1,29 +1,13 @@
|
|||
package pl.touk.mockserver.tests
|
||||
|
||||
import groovy.util.slurpersupport.GPathResult
|
||||
import org.apache.http.client.methods.CloseableHttpResponse
|
||||
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.client.methods.*
|
||||
import org.apache.http.entity.ContentType
|
||||
import org.apache.http.entity.StringEntity
|
||||
import org.apache.http.impl.client.CloseableHttpClient
|
||||
import org.apache.http.impl.client.HttpClients
|
||||
import org.apache.http.util.EntityUtils
|
||||
import pl.touk.mockserver.client.AddMockRequestData
|
||||
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.client.*
|
||||
import pl.touk.mockserver.server.HttpMockServer
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Specification
|
||||
|
@ -827,4 +811,32 @@ class MockServerIntegrationTest extends Specification {
|
|||
mockEvents2[0].response.text == '<goodResponseRest/>'
|
||||
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) {
|
||||
String name = request.name
|
||||
boolean skipReport = Boolean.parseBoolean(request.skipReport?.toString() ?: 'false')
|
||||
println "!!!!!!!!! $skipReport"
|
||||
if (!(name in mockNames)) {
|
||||
throw new RuntimeException('mock not registered')
|
||||
}
|
||||
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)
|
||||
createResponse(ex, createMockRemovedResponse(mockEvents), 200)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue