Rebranding
This commit is contained in:
parent
afaab504da
commit
36bc5dd14b
32 changed files with 120 additions and 146 deletions
|
@ -0,0 +1,12 @@
|
|||
package eu.ztsh.mockserver.client
|
||||
|
||||
import groovy.transform.CompileStatic
|
||||
import groovy.transform.TypeChecked
|
||||
|
||||
@CompileStatic
|
||||
@TypeChecked
|
||||
class InvalidMockDefinition extends RuntimeException {
|
||||
InvalidMockDefinition(String s) {
|
||||
super(s)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package eu.ztsh.mockserver.client
|
||||
|
||||
import groovy.transform.CompileStatic
|
||||
import groovy.transform.TypeChecked
|
||||
|
||||
@CompileStatic
|
||||
@TypeChecked
|
||||
class InvalidMockRequestSchema extends RuntimeException {
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package eu.ztsh.mockserver.client
|
||||
|
||||
import groovy.transform.CompileStatic
|
||||
import groovy.transform.TypeChecked
|
||||
|
||||
@CompileStatic
|
||||
@TypeChecked
|
||||
class MockAlreadyExists extends RuntimeException {}
|
|
@ -0,0 +1,9 @@
|
|||
package eu.ztsh.mockserver.client
|
||||
|
||||
import groovy.transform.CompileStatic
|
||||
import groovy.transform.TypeChecked
|
||||
|
||||
@CompileStatic
|
||||
@TypeChecked
|
||||
class MockDoesNotExist extends RuntimeException {
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package eu.ztsh.mockserver.client
|
||||
|
||||
import org.apache.http.client.methods.CloseableHttpResponse
|
||||
import org.apache.http.client.methods.HttpGet
|
||||
import org.apache.http.client.methods.HttpPost
|
||||
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 eu.ztsh.mockserver.api.request.AddMock
|
||||
import eu.ztsh.mockserver.api.request.MockServerRequest
|
||||
import eu.ztsh.mockserver.api.request.PeekMock
|
||||
import eu.ztsh.mockserver.api.request.RemoveMock
|
||||
import eu.ztsh.mockserver.api.response.MockEventReport
|
||||
import eu.ztsh.mockserver.api.response.MockPeeked
|
||||
import eu.ztsh.mockserver.api.response.MockRemoved
|
||||
import eu.ztsh.mockserver.api.response.MockReport
|
||||
import eu.ztsh.mockserver.api.response.Mocks
|
||||
|
||||
import javax.xml.bind.JAXBContext
|
||||
|
||||
class RemoteMockServer {
|
||||
private final String address
|
||||
private final CloseableHttpClient client = HttpClients.createDefault()
|
||||
private static final JAXBContext requestContext = JAXBContext.newInstance(AddMock, PeekMock, RemoveMock)
|
||||
|
||||
RemoteMockServer(String host, int port) {
|
||||
address = "http://$host:$port/serverControl"
|
||||
}
|
||||
|
||||
void addMock(AddMock addMockData) {
|
||||
HttpPost addMockPost = new HttpPost(address)
|
||||
addMockPost.entity = buildAddMockRequest(addMockData)
|
||||
CloseableHttpResponse response = client.execute(addMockPost)
|
||||
Util.extractResponse(response)
|
||||
}
|
||||
|
||||
List<MockEventReport> removeMock(String name, boolean skipReport = false) {
|
||||
HttpPost removeMockPost = new HttpPost(address)
|
||||
removeMockPost.entity = buildRemoveMockRequest(new RemoveMock(name: name, skipReport: skipReport))
|
||||
CloseableHttpResponse response = client.execute(removeMockPost)
|
||||
MockRemoved mockRemoved = Util.extractResponse(response) as MockRemoved
|
||||
return mockRemoved.mockEvents ?: []
|
||||
}
|
||||
|
||||
List<MockEventReport> peekMock(String name) {
|
||||
HttpPost removeMockPost = new HttpPost(address)
|
||||
removeMockPost.entity = buildPeekMockRequest(new PeekMock(name: name))
|
||||
CloseableHttpResponse response = client.execute(removeMockPost)
|
||||
MockPeeked mockPeeked = Util.extractResponse(response) as MockPeeked
|
||||
return mockPeeked.mockEvents ?: []
|
||||
}
|
||||
|
||||
ConfigObject getConfiguration() {
|
||||
HttpGet get = new HttpGet(address + '/configuration')
|
||||
CloseableHttpResponse response = client.execute(get)
|
||||
String configuration = Util.extractStringResponse(response)
|
||||
return new ConfigSlurper().parse(configuration)
|
||||
}
|
||||
|
||||
private static StringEntity buildRemoveMockRequest(RemoveMock data) {
|
||||
return new StringEntity(marshallRequest(data), ContentType.create("text/xml", "UTF-8"))
|
||||
}
|
||||
|
||||
private static String marshallRequest(MockServerRequest data) {
|
||||
StringWriter sw = new StringWriter()
|
||||
requestContext.createMarshaller().marshal(data, sw)
|
||||
return sw.toString()
|
||||
}
|
||||
|
||||
private static StringEntity buildPeekMockRequest(PeekMock peekMock) {
|
||||
return new StringEntity(marshallRequest(peekMock), ContentType.create("text/xml", "UTF-8"))
|
||||
}
|
||||
|
||||
private static StringEntity buildAddMockRequest(AddMock data) {
|
||||
return new StringEntity(marshallRequest(data), ContentType.create("text/xml", "UTF-8"))
|
||||
}
|
||||
|
||||
List<MockReport> listMocks() {
|
||||
HttpGet get = new HttpGet(address)
|
||||
CloseableHttpResponse response = client.execute(get)
|
||||
Mocks mocks = Util.extractResponse(response) as Mocks
|
||||
return mocks.mocks
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package eu.ztsh.mockserver.client
|
||||
|
||||
import groovy.json.JsonSlurper
|
||||
import groovy.transform.CompileStatic
|
||||
import groovy.transform.TypeChecked
|
||||
import groovy.util.slurpersupport.GPathResult
|
||||
import org.apache.http.HttpEntity
|
||||
import org.apache.http.client.methods.CloseableHttpResponse
|
||||
import org.apache.http.util.EntityUtils
|
||||
import eu.ztsh.mockserver.api.response.ExceptionOccured
|
||||
import eu.ztsh.mockserver.api.response.MockAdded
|
||||
import eu.ztsh.mockserver.api.response.MockServerResponse
|
||||
|
||||
import javax.xml.bind.JAXBContext
|
||||
|
||||
@CompileStatic
|
||||
@TypeChecked
|
||||
class Util {
|
||||
private static
|
||||
final JAXBContext responseContext = JAXBContext.newInstance(MockAdded.package.name, MockAdded.classLoader)
|
||||
|
||||
static GPathResult extractXmlResponse(CloseableHttpResponse response) {
|
||||
return new XmlSlurper().parseText(extractStringResponse(response))
|
||||
}
|
||||
static String extractStringResponse(CloseableHttpResponse response) {
|
||||
HttpEntity entity = response.entity
|
||||
String responseString = EntityUtils.toString(entity, 'UTF-8')
|
||||
EntityUtils.consumeQuietly(entity)
|
||||
return responseString
|
||||
}
|
||||
|
||||
static MockServerResponse extractResponse(CloseableHttpResponse response) {
|
||||
String responseString = extractStringResponse(response)
|
||||
if (response.statusLine.statusCode == 200) {
|
||||
return responseContext.createUnmarshaller().unmarshal(new StringReader(responseString)) as MockServerResponse
|
||||
}
|
||||
ExceptionOccured exceptionOccured = responseContext.createUnmarshaller().unmarshal(new StringReader(responseString)) as ExceptionOccured
|
||||
String message = exceptionOccured.value
|
||||
if (message == 'mock already registered') {
|
||||
throw new MockAlreadyExists()
|
||||
}
|
||||
if (message == 'mock not registered') {
|
||||
throw new MockDoesNotExist()
|
||||
}
|
||||
if (message == 'mock request schema is invalid schema') {
|
||||
throw new InvalidMockRequestSchema()
|
||||
}
|
||||
throw new InvalidMockDefinition(message)
|
||||
}
|
||||
|
||||
static String soap(String request) {
|
||||
return """<?xml version='1.0' encoding='UTF-8'?>
|
||||
<soap-env:Envelope xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
|
||||
<soap-env:Body>$request</soap-env:Body>
|
||||
</soap-env:Envelope>"""
|
||||
}
|
||||
|
||||
static Object extractJsonResponse(CloseableHttpResponse response) {
|
||||
return new JsonSlurper().parseText(extractStringResponse(response))
|
||||
}
|
||||
|
||||
static void consumeResponse(CloseableHttpResponse response) {
|
||||
EntityUtils.consumeQuietly(response.entity)
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue