diff --git a/README.md b/README.md new file mode 100644 index 0000000..4cf0b2f --- /dev/null +++ b/README.md @@ -0,0 +1,145 @@ +# HTTP MOCK SERVER + +## Create server jar + +``` +mvn clean package assembly:single +``` + +## Start server on port (default 9999) + +``` +java -jar mockserver--jar-with-dependencies.jar [PORT] +``` + +## Create mock on server via client + +``` +ControlServerClient controlServerClient = new ControlServerClient('localhost', ) +controlServerClient.addMock(new AddMockRequestData( + name: '...', + path: '...', + port: ..., + predicate: '''...''', + response: '''...''', + soap: ..., + statusCode: ..., + method: ..., + responseHeaders: ... + )) +``` + +or via sending POST request to localhost:/serverControl + + +``` + + ... + ... + ... + ... + ... + ... + ... + ... + ,,, + +``` + +* name - name of mock, must be unique +* path - path on which mock should be created +* port - inteer, port on which mock should be created, cannot be the same as mock server port +* predicate - groovy closure as string which must evaluate to true, when request object will be given to satisfy mock, optional, default {_ -> true} +* response - groovy closure as string which must evaluate to string which will be response of mock when predicate is satisfied, optional, default { _ -> '' } +* soap - true or false, is request and response should be wrapped in soap Envelope and Body elements, default false +* statusCode - integer, status code of response when predicate is satisfied, default 200 +* method - POST|PUT|DELETE|GET|TRACE|OPTION|HEAD, expected http method of request, default POST +* responseHeaders - groovyClosure as string which must evaluate to Map which will be added to response headers, default { _ -> [:] } + +Response if success: + +``` + +``` + +Response with error message if failure: + +``` +... +``` + +## When mock was used it could be unregistered by name. It returns report of mock invocations. +Via client: + +``` +List mockEvents = controlServerClient.removeMock('...') +``` + +Via sending POST request to localhost:/serverControl + +``` + + ... + +``` + +Response if success: + +``` + + + + ... + + ... + ... + + + ... + ... + + + ... + ... + + + + ... + + ... + ... + + ... + + + ... + +``` + +Responsewith error message if failure: + +``` +... +``` + +## List of current registered mocks could be retrieved: +Via client: + +``` +List mocks = controlServerClient.listMocks() +``` + +or via sending GET request to localhost:/serverControl + +Response: + +``` + + + ... + ... + ... + + ... + +``` \ No newline at end of file diff --git a/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy b/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy index 9aaf72f..1194202 100644 --- a/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy +++ b/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy @@ -13,7 +13,6 @@ import org.apache.http.util.EntityUtils class Util { static GPathResult extractXmlResponse(CloseableHttpResponse response) { HttpEntity entity = response.entity - GPathResult xml = new XmlSlurper().parseText(EntityUtils.toString(entity)) EntityUtils.consumeQuietly(entity) return xml diff --git a/mockserver/pom.xml b/mockserver/pom.xml index 3f62697..daea419 100644 --- a/mockserver/pom.xml +++ b/mockserver/pom.xml @@ -26,4 +26,21 @@ + + + + maven-assembly-plugin + + + + pl.touk.mockserver.server.Main + + + + jar-with-dependencies + + + + + \ No newline at end of file diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpServerWraper.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpServerWraper.groovy index 6c03051..ce5af29 100644 --- a/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpServerWraper.groovy +++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpServerWraper.groovy @@ -20,7 +20,7 @@ class HttpServerWraper { InetSocketAddress addr = new InetSocketAddress(Inet4Address.getByName("0.0.0.0"), port) httpServer = HttpServer.create(addr, 0) httpServer.executor = Executors.newCachedThreadPool() - log.info("Http server statrting on port $port...") + log.info("Http server starting on port $port...") httpServer.start() log.info('Http server is started') } diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/Main.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/Main.groovy index 154eefe..759a11a 100644 --- a/mockserver/src/main/groovy/pl/touk/mockserver/server/Main.groovy +++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/Main.groovy @@ -5,7 +5,7 @@ import groovy.util.logging.Slf4j @Slf4j class Main { static void main(String[] args) { - HttpMockServer httpMockServer = new HttpMockServer() + HttpMockServer httpMockServer = args.length == 1 ? new HttpMockServer(args[0] as int) : new HttpMockServer() Runtime.runtime.addShutdownHook(new Thread({ log.info('Http server is stopping...')