diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f76ca67 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM java:8 + +ADD mockserver/target/mockserver-1.1.1-SNAPSHOT-jar-with-dependencies.jar /mockserver.jar + +EXPOSE 9999 + +CMD java -jar /mockserver.jar diff --git a/buildImage.sh b/buildImage.sh new file mode 100755 index 0000000..ada5685 --- /dev/null +++ b/buildImage.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +mvn clean install +mvn -f mockserver/pom.xml package assembly:single + +docker build -t mockserver . diff --git a/mockserver-api/pom.xml b/mockserver-api/pom.xml index a7c59b9..c7cbf27 100644 --- a/mockserver-api/pom.xml +++ b/mockserver-api/pom.xml @@ -17,4 +17,31 @@ lombok + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + org.codehaus.mojo + jaxb2-maven-plugin + + + xjc + process-resources + + xjc + + + + + + \ No newline at end of file diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/AddMock.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/request/AddMock.java deleted file mode 100644 index 80ad580..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/AddMock.java +++ /dev/null @@ -1,33 +0,0 @@ -package pl.touk.mockserver.api.request; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -@Data -@EqualsAndHashCode(callSuper = false) -public class AddMock extends MockServerRequest { - @XmlElement(required = true) - private String name; - - @XmlElement(required = true) - private String path; - - @XmlElement(required = true) - private int port; - - private String predicate; - - private String response; - - private Boolean soap; - - private Integer statusCode; - - private Method method; - - private String responseHeaders; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/Method.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/request/Method.java deleted file mode 100644 index 9e471a1..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/Method.java +++ /dev/null @@ -1,15 +0,0 @@ -package pl.touk.mockserver.api.request; - -import javax.xml.bind.annotation.XmlEnum; - -@XmlEnum -public enum Method { - POST, - GET, - DELETE, - PUT, - TRACE, - HEAD, - OPTIONS, - PATCH; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/MockServerRequest.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/request/MockServerRequest.java deleted file mode 100644 index 91c1ba9..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/MockServerRequest.java +++ /dev/null @@ -1,4 +0,0 @@ -package pl.touk.mockserver.api.request; - -public abstract class MockServerRequest { -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/PeekMock.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/request/PeekMock.java deleted file mode 100644 index d4f14ca..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/PeekMock.java +++ /dev/null @@ -1,15 +0,0 @@ -package pl.touk.mockserver.api.request; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -@Data -@EqualsAndHashCode(callSuper = false) -public class PeekMock extends MockServerRequest{ - @XmlElement(required = true) - private String name; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/RemoveMock.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/request/RemoveMock.java deleted file mode 100644 index 49c8b0b..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/RemoveMock.java +++ /dev/null @@ -1,17 +0,0 @@ -package pl.touk.mockserver.api.request; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -@Data -@EqualsAndHashCode(callSuper = false) -public class RemoveMock extends MockServerRequest { - @XmlElement(required = true) - private String name; - - private Boolean skipReport; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/package-info.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/request/package-info.java deleted file mode 100644 index 6ccf1df..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/request/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@XmlAccessorType(XmlAccessType.FIELD) package pl.touk.mockserver.api.request; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; \ No newline at end of file diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/ExceptionOccured.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/ExceptionOccured.java deleted file mode 100644 index a10382b..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/ExceptionOccured.java +++ /dev/null @@ -1,13 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlValue; - -@XmlRootElement -@Data -public class ExceptionOccured { - @XmlValue - private String message; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockAdded.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockAdded.java deleted file mode 100644 index 8dc13a9..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockAdded.java +++ /dev/null @@ -1,12 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -@Data -@EqualsAndHashCode(callSuper = false) -public class MockAdded extends MockServerResponse { -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockEventReport.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockEventReport.java deleted file mode 100644 index faa2497..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockEventReport.java +++ /dev/null @@ -1,14 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlElement; - -@Data -public class MockEventReport { - @XmlElement(required = true) - private MockRequestReport request; - - @XmlElement(required = true) - private MockResponseReport response; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockListing.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockListing.java deleted file mode 100644 index 77f5e24..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockListing.java +++ /dev/null @@ -1,16 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.util.List; - -@XmlRootElement(name = "mocks") -@Data -@EqualsAndHashCode(callSuper = false) -public class MockListing extends MockServerResponse { - @XmlElement(name = "mock") - private List mocks; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockPeeked.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockPeeked.java deleted file mode 100644 index a23daae..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockPeeked.java +++ /dev/null @@ -1,16 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.util.List; - -@XmlRootElement -@Data -@EqualsAndHashCode(callSuper = false) -public class MockPeeked extends MockServerResponse { - @XmlElement(name = "mockEvent") - private List mockEvents; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockRemoved.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockRemoved.java deleted file mode 100644 index 008d318..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockRemoved.java +++ /dev/null @@ -1,16 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.util.List; - -@XmlRootElement -@Data -@EqualsAndHashCode(callSuper = false) -public class MockRemoved extends MockServerResponse { - @XmlElement(name = "mockEvent") - private List mockEvents; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockReport.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockReport.java deleted file mode 100644 index aa7bd8f..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockReport.java +++ /dev/null @@ -1,37 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import pl.touk.mockserver.api.request.Method; - -import javax.xml.bind.annotation.XmlElement; - -@Data -public class MockReport { - @XmlElement(required = true) - private String name; - - @XmlElement(required = true) - private String path; - - @XmlElement(required = true) - private int port; - - @XmlElement(required = true) - private String predicate; - - @XmlElement(required = true) - private String response; - - @XmlElement(required = true) - private String responseHeaders; - - @XmlElement(required = true) - private boolean soap; - - @XmlElement(required = true) - private Method method; - - @XmlElement(required = true) - private int statusCode; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockRequestReport.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockRequestReport.java deleted file mode 100644 index aecd48f..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockRequestReport.java +++ /dev/null @@ -1,24 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import java.util.List; - -@Data -public class MockRequestReport { - private String text; - - @XmlElementWrapper(name = "headers") - @XmlElement(name = "header") - private List headers; - - @XmlElementWrapper(name = "queryParams") - @XmlElement(name = "queryParam") - private List queryParams; - - @XmlElementWrapper(name = "path") - @XmlElement(name = "pathPart") - private List paths; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockResponseReport.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockResponseReport.java deleted file mode 100644 index 83d3da5..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockResponseReport.java +++ /dev/null @@ -1,19 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import java.util.List; - -@Data -public class MockResponseReport { - @XmlElement(required = true) - private int statusCode; - - private String text; - - @XmlElementWrapper(name = "headers") - @XmlElement(name = "header") - private List headers; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockServerResponse.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockServerResponse.java deleted file mode 100644 index bf7e0ae..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/MockServerResponse.java +++ /dev/null @@ -1,4 +0,0 @@ -package pl.touk.mockserver.api.response; - -public abstract class MockServerResponse { -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/Parameter.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/Parameter.java deleted file mode 100644 index 6a9c0c3..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/Parameter.java +++ /dev/null @@ -1,15 +0,0 @@ -package pl.touk.mockserver.api.response; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlValue; - -@Data -public class Parameter { - @XmlAttribute(required = true) - private String name; - - @XmlValue - private String value; -} diff --git a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/package-info.java b/mockserver-api/src/main/java/pl/touk/mockserver/api/response/package-info.java deleted file mode 100644 index d317cb9..0000000 --- a/mockserver-api/src/main/java/pl/touk/mockserver/api/response/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@XmlAccessorType(XmlAccessType.FIELD) package pl.touk.mockserver.api.response; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; \ No newline at end of file diff --git a/mockserver-api/src/main/resource/pl/touk/mockserver/api/request/jaxb.index b/mockserver-api/src/main/resource/pl/touk/mockserver/api/request/jaxb.index deleted file mode 100644 index 233becc..0000000 --- a/mockserver-api/src/main/resource/pl/touk/mockserver/api/request/jaxb.index +++ /dev/null @@ -1,4 +0,0 @@ -AddMock -Method -PeekMock -RemoveMock \ No newline at end of file diff --git a/mockserver-api/src/main/resource/pl/touk/mockserver/api/response/jaxb.index b/mockserver-api/src/main/resource/pl/touk/mockserver/api/response/jaxb.index deleted file mode 100644 index 86bdb57..0000000 --- a/mockserver-api/src/main/resource/pl/touk/mockserver/api/response/jaxb.index +++ /dev/null @@ -1,11 +0,0 @@ -ExceptionOccured -MockAdded -MockEventReport -MockListing -MockPeeked -MockRemoved -MockReport -MockRequestReport -MockResponseReport -MockServerResponse -Parameter \ No newline at end of file diff --git a/mockserver-api/src/main/xjb/binding.xjb b/mockserver-api/src/main/xjb/binding.xjb new file mode 100644 index 0000000..a735d24 --- /dev/null +++ b/mockserver-api/src/main/xjb/binding.xjb @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/mockserver-api/src/main/xsd/pl/touk/mockserver/api/common.xsd b/mockserver-api/src/main/xsd/pl/touk/mockserver/api/common.xsd new file mode 100644 index 0000000..a48f724 --- /dev/null +++ b/mockserver-api/src/main/xsd/pl/touk/mockserver/api/common.xsd @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/mockserver-api/src/main/xsd/pl/touk/mockserver/api/request.xsd b/mockserver-api/src/main/xsd/pl/touk/mockserver/api/request.xsd new file mode 100644 index 0000000..fb4afca --- /dev/null +++ b/mockserver-api/src/main/xsd/pl/touk/mockserver/api/request.xsd @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mockserver-api/src/main/xsd/pl/touk/mockserver/api/response.xsd b/mockserver-api/src/main/xsd/pl/touk/mockserver/api/response.xsd new file mode 100644 index 0000000..21ffd9b --- /dev/null +++ b/mockserver-api/src/main/xsd/pl/touk/mockserver/api/response.xsd @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mockserver-client/src/main/groovy/pl/touk/mockserver/client/RemoteMockServer.groovy b/mockserver-client/src/main/groovy/pl/touk/mockserver/client/RemoteMockServer.groovy index 14664e0..ffbc9a0 100644 --- a/mockserver-client/src/main/groovy/pl/touk/mockserver/client/RemoteMockServer.groovy +++ b/mockserver-client/src/main/groovy/pl/touk/mockserver/client/RemoteMockServer.groovy @@ -18,9 +18,7 @@ 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.package.name, AddMock.classLoader) - private static - final JAXBContext responseContext = JAXBContext.newInstance(MockAdded.package.name, MockAdded.classLoader) + private static final JAXBContext requestContext = JAXBContext.newInstance(AddMock, PeekMock, RemoveMock) RemoteMockServer(String host, int port) { address = "http://$host:$port/serverControl" @@ -70,7 +68,7 @@ class RemoteMockServer { List listMocks() { HttpGet get = new HttpGet(address) CloseableHttpResponse response = client.execute(get) - MockListing mockListing = Util.extractResponse(response) as MockListing - return mockListing.mocks + Mocks mocks = Util.extractResponse(response) as Mocks + return mocks.mocks } } 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 446ebf0..966625f 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 @@ -35,7 +35,7 @@ class Util { return responseContext.createUnmarshaller().unmarshal(new StringReader(responseString)) as MockServerResponse } ExceptionOccured exceptionOccured = responseContext.createUnmarshaller().unmarshal(new StringReader(responseString)) as ExceptionOccured - String message = exceptionOccured.message + String message = exceptionOccured.value if (message == 'mock already registered') { throw new MockAlreadyExists() } diff --git a/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy b/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy index 32c9623..018a28d 100644 --- a/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy +++ b/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy @@ -8,7 +8,7 @@ import org.apache.http.impl.client.CloseableHttpClient import org.apache.http.impl.client.HttpClients import org.apache.http.util.EntityUtils import pl.touk.mockserver.api.request.AddMock -import pl.touk.mockserver.api.request.Method +import pl.touk.mockserver.api.common.Method import pl.touk.mockserver.api.response.MockEventReport import pl.touk.mockserver.api.response.MockReport import pl.touk.mockserver.api.response.Parameter @@ -637,14 +637,21 @@ class MockServerIntegrationTest extends Specification { port: 9999 )) remoteMockServer.removeMock('testRest5') - expect: - remoteMockServer.listMocks() == [ - new MockReport(name: 'testRest', path: 'testEndpoint', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: false, statusCode: 200, method: Method.POST), - new MockReport(name: 'testRest2', path: 'testEndpoint', port: 9998, predicate: '''{ req -> req.xml.name() == 'request1'}''', response: '''{ req -> '' }''', responseHeaders: '{ _ -> [a: "b"] }', soap: false, statusCode: 200, method: Method.POST), - new MockReport(name: 'testRest3', path: 'testEndpoint2', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: false, statusCode: 200, method: Method.POST), - new MockReport(name: 'testRest4', path: 'testEndpoint', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: true, statusCode: 204, method: Method.PUT), - new MockReport(name: 'testRest6', path: 'testEndpoint2', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: false, statusCode: 200, method: Method.POST) - ] + when: + List mockReport = remoteMockServer.listMocks() + then: + mockReport.size() == 5 + assertMockReport(mockReport[0], [name:'testRest', path: 'testEndpoint', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: false, statusCode: 200, method: Method.POST]) + assertMockReport(mockReport[1], [name: 'testRest2', path: 'testEndpoint', port: 9998, predicate: '''{ req -> req.xml.name() == 'request1'}''', response: '''{ req -> '' }''', responseHeaders: '{ _ -> [a: "b"] }', soap: false, statusCode: 200, method: Method.POST]) + assertMockReport(mockReport[2], [name: 'testRest3', path: 'testEndpoint2', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: false, statusCode: 200, method: Method.POST]) + assertMockReport(mockReport[3], [name: 'testRest4', path: 'testEndpoint', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: true, statusCode: 204, method: Method.PUT]) + assertMockReport(mockReport[4], [name: 'testRest6', path: 'testEndpoint2', port: 9999, predicate: '{ _ -> true }', response: '''{ _ -> '' }''', responseHeaders: '{ _ -> [:] }', soap: false, statusCode: 200, method: Method.POST]) + } + + private void assertMockReport( MockReport mockReport, Map props) { + props.each { + assert mockReport."${it.key}" == it.value + } } def "should add mock accepts path certain path params"() { @@ -718,18 +725,18 @@ class MockServerIntegrationTest extends Specification { then: mockEvents1.size() == 2 mockEvents1[0].request.text == '' - !mockEvents1[0].request.headers?.empty - mockEvents1[0].request.queryParams == [] - mockEvents1[0].request.paths == ['testEndpoint'] - !mockEvents1[0].response.headers?.empty + !mockEvents1[0].request.headers?.headers?.empty + mockEvents1[0].request.queryParams.queryParams == [] + mockEvents1[0].request.path.pathParts == ['testEndpoint'] + !mockEvents1[0].response.headers?.headers?.empty mockEvents1[0].response.text == '' mockEvents1[0].response.statusCode == 201 mockEvents1[1].request.text == '' - !mockEvents1[1].request.headers?.empty - mockEvents1[1].request.queryParams == [] - mockEvents1[1].request.paths == ['testEndpoint', 'hello'] - !mockEvents1[1].response.headers?.empty + !mockEvents1[1].request.headers?.headers?.empty + mockEvents1[1].request.queryParams.queryParams == [] + mockEvents1[1].request.path.pathParts == ['testEndpoint', 'hello'] + !mockEvents1[1].response.headers?.headers?.empty mockEvents1[1].response.text == '' mockEvents1[1].response.statusCode == 201 when: @@ -737,10 +744,10 @@ class MockServerIntegrationTest extends Specification { then: mockEvents2.size() == 1 mockEvents2[0].request.text == '' - !mockEvents2[0].request.headers?.empty - mockEvents2[0].request.queryParams == [new Parameter(name: 'id', value: '123')] - mockEvents2[0].request.paths == ['testEndpoint'] - mockEvents2[0].response.headers.find { it.name == 'aaa' }?.value == '15' + !mockEvents2[0].request.headers?.headers?.empty + mockEvents2[0].request.queryParams.queryParams.find { it.name == 'id' }?.value == '123' + mockEvents2[0].request.path.pathParts == ['testEndpoint'] + mockEvents2[0].response.headers.headers.find { it.name == 'aaa' }?.value == '15' mockEvents2[0].response.text == '' mockEvents2[0].response.statusCode == 202 } @@ -793,18 +800,18 @@ class MockServerIntegrationTest extends Specification { then: mockEvents1.size() == 2 mockEvents1[0].request.text == '' - !mockEvents1[0].request.headers?.empty - mockEvents1[0].request.queryParams == [] - mockEvents1[0].request.paths == ['testEndpoint'] - !mockEvents1[0].response.headers?.empty + !mockEvents1[0].request.headers?.headers?.empty + mockEvents1[0].request.queryParams.queryParams == [] + mockEvents1[0].request.path.pathParts == ['testEndpoint'] + !mockEvents1[0].response.headers?.headers?.empty mockEvents1[0].response.text == '' mockEvents1[0].response.statusCode == 201 mockEvents1[1].request.text == '' - !mockEvents1[1].request.headers?.empty - mockEvents1[1].request.queryParams == [] - mockEvents1[1].request.paths == ['testEndpoint', 'hello'] - !mockEvents1[1].response.headers?.empty + !mockEvents1[1].request.headers?.headers?.empty + mockEvents1[1].request.queryParams.queryParams == [] + mockEvents1[1].request.path.pathParts == ['testEndpoint', 'hello'] + !mockEvents1[1].response.headers?.headers?.empty mockEvents1[1].response.text == '' mockEvents1[1].response.statusCode == 201 when: @@ -812,10 +819,10 @@ class MockServerIntegrationTest extends Specification { then: mockEvents2.size() == 1 mockEvents2[0].request.text == '' - !mockEvents2[0].request.headers?.empty - mockEvents2[0].request.queryParams == [new Parameter(name: 'id', value: '123')] - mockEvents2[0].request.paths == ['testEndpoint'] - mockEvents2[0].response.headers.find {it.name == 'aaa'}?.value == '15' + !mockEvents2[0].request.headers?.headers?.empty + mockEvents2[0].request.queryParams.queryParams.find{it.name == 'id'}?.value == '123' + mockEvents2[0].request.path.pathParts == ['testEndpoint'] + mockEvents2[0].response.headers.headers.find {it.name == 'aaa'}?.value == '15' mockEvents2[0].response.text == '' mockEvents2[0].response.statusCode == 202 } diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy index 545dfed..f450df4 100644 --- a/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy +++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy @@ -3,7 +3,7 @@ package pl.touk.mockserver.server import com.sun.net.httpserver.HttpExchange import groovy.transform.PackageScope import groovy.util.logging.Slf4j -import pl.touk.mockserver.api.request.Method +import pl.touk.mockserver.api.common.Method import java.util.concurrent.CopyOnWriteArrayList diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpMockServer.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpMockServer.groovy index 1b8fc9a..0b601ff 100644 --- a/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpMockServer.groovy +++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/HttpMockServer.groovy @@ -2,7 +2,10 @@ package pl.touk.mockserver.server import com.sun.net.httpserver.HttpExchange import groovy.util.logging.Slf4j -import pl.touk.mockserver.api.request.* +import pl.touk.mockserver.api.request.AddMock +import pl.touk.mockserver.api.request.MockServerRequest +import pl.touk.mockserver.api.request.PeekMock +import pl.touk.mockserver.api.request.RemoveMock import pl.touk.mockserver.api.response.* import javax.xml.bind.JAXBContext @@ -50,7 +53,7 @@ class HttpMockServer { } void listMocks(HttpExchange ex) { - MockListing mockListing = new MockListing( + Mocks mockListing = new Mocks( mocks: listMocks().collect { new MockReport( name: it.name, @@ -126,20 +129,20 @@ class HttpMockServer { new MockEventReport( request: new MockRequestReport( text: it.request.text, - headers: it.request.headers.collect { + headers: new MockRequestReport.Headers(headers: it.request.headers.collect { new Parameter(name: it.key, value: it.value) - }, - queryParams: it.request.query.collect { + }), + queryParams: new MockRequestReport.QueryParams(queryParams: it.request.query.collect { new Parameter(name: it.key, value: it.value) - }, - paths: it.request.path + }), + path: new MockRequestReport.Path(pathParts: it.request.path) ), response: new MockResponseReport( statusCode: it.response.statusCode, text: it.response.text, - headers: it.response.headers.collect { + headers: new MockResponseReport.Headers(headers: it.response.headers.collect { new Parameter(name: it.key, value: it.value) - } + }) ) ) } @@ -159,7 +162,7 @@ class HttpMockServer { } private static void createErrorResponse(HttpExchange ex, Exception e) { - createResponse(ex, new ExceptionOccured(message: e.message), 400) + createResponse(ex, new ExceptionOccured(value: e.message), 400) } void stop() { diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/Mock.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/Mock.groovy index 5f3aa06..32bad68 100644 --- a/mockserver/src/main/groovy/pl/touk/mockserver/server/Mock.groovy +++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/Mock.groovy @@ -3,7 +3,7 @@ package pl.touk.mockserver.server import groovy.transform.EqualsAndHashCode import groovy.transform.PackageScope import groovy.util.logging.Slf4j -import pl.touk.mockserver.api.request.Method +import pl.touk.mockserver.api.common.Method import java.util.concurrent.CopyOnWriteArrayList @@ -79,10 +79,8 @@ class Mock implements Comparable { } } - void setSoap(String soap) { - if (soap) { - this.soap = Boolean.valueOf(soap) - } + void setSoap(Boolean soap) { + this.soap = soap ?: false } void setStatusCode(String statusCode) {