diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..0ab96ff --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,14 @@ +name: Build mockserver +on: [push] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + java-version: '8' + distribution: 'temurin' + - name: Build with Maven + run: ./mvnw package \ No newline at end of file diff --git a/.woodpecker.yaml b/.woodpecker.yaml deleted file mode 100644 index 4eafeb7..0000000 --- a/.woodpecker.yaml +++ /dev/null @@ -1,59 +0,0 @@ -variables: - &maven_image maven:3.9.6-eclipse-temurin-11-alpine - -when: - evaluate: 'not (CI_COMMIT_MESSAGE contains "Release")' - -steps: - - name: build - image: *maven_image - commands: - - mvn -B clean install -DskipTests -Dmaven.test.skip - - name: test - image: *maven_image - commands: - - mvn -B -pl :mockserver-tests verify - - name: deploy to public - image: *maven_image - commands: - - mvn -B jar:jar deploy:deploy - secrets: [reposilite_user, reposilite_token] - when: - branch: [dev, master] - - name: deploy to releases - image: woodpeckerci/plugin-gitea-release - settings: - base-url: https://git.ztsh.eu - files: - - "mockserver-client/target/mockserver-client*.jar" - - "mockserver/target/mockserver-full.jar" - api_key: - from_secret: git_pat - when: - - event: tag - - name: tag docker image - image: woodpeckerci/plugin-docker-buildx - settings: - platforms: linux/amd64,linux/arm64/v8,linux/ppc64le,linux/s390x - repo: ztsheu/http-mock-server - registry: docker.io - tags: ${CI_COMMIT_TAG} - username: ztsheu - password: - from_secret: docker-pat - when: - - event: tag - - name: build docker image - image: woodpeckerci/plugin-docker-buildx - settings: - platforms: linux/amd64,linux/arm64/v8,linux/ppc64le,linux/s390x - repo: ztsheu/http-mock-server - registry: docker.io - tags: latest - username: ztsheu - password: - from_secret: docker-pat - when: - - event: tag - - event: push - branch: dev diff --git a/Dockerfile b/Dockerfile index 3250eed..6ea2981 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:11.0.22_7-jre-jammy +FROM java:8 ADD mockserver/target/mockserver-full.jar /mockserver.jar diff --git a/mockserver-api/pom.xml b/mockserver-api/pom.xml index de5029a..3b26bf1 100644 --- a/mockserver-api/pom.xml +++ b/mockserver-api/pom.xml @@ -1,21 +1,15 @@ - - 4.0.0 - + - eu.ztsh.mockserver http-mock-server + eu.ztsh.mockserver 3.0.0-SNAPSHOT + 4.0.0 mockserver-api - - jakarta.xml.bind - jakarta.xml.bind-api - org.projectlombok lombok @@ -24,9 +18,19 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + org.codehaus.mojo jaxb2-maven-plugin + 2.2 xjc diff --git a/mockserver-api/src/main/xjb/binding.xjb b/mockserver-api/src/main/xjb/binding.xjb index fdf2585..a735d24 100644 --- a/mockserver-api/src/main/xjb/binding.xjb +++ b/mockserver-api/src/main/xjb/binding.xjb @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/mockserver-client/pom.xml b/mockserver-client/pom.xml index cb7acfb..ac9bac3 100644 --- a/mockserver-client/pom.xml +++ b/mockserver-client/pom.xml @@ -1,44 +1,30 @@ - - 4.0.0 - + - eu.ztsh.mockserver http-mock-server + eu.ztsh.mockserver 3.0.0-SNAPSHOT + 4.0.0 mockserver-client + + clean install + - eu.ztsh.mockserver - mockserver-api - - - - org.apache.groovy + org.codehaus.groovy groovy - org.apache.groovy + org.codehaus.groovy groovy-json - org.apache.groovy + org.codehaus.groovy groovy-xml - - - org.glassfish.jaxb - jaxb-core - - - org.glassfish.jaxb - jaxb-runtime - - org.apache.httpcomponents httpclient @@ -47,15 +33,9 @@ org.apache.commons commons-lang3 + + eu.ztsh.mockserver + mockserver-api + - - - - - org.codehaus.gmavenplus - gmavenplus-plugin - - - - diff --git a/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/RemoteMockServer.groovy b/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/RemoteMockServer.groovy index f594614..8439124 100644 --- a/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/RemoteMockServer.groovy +++ b/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/RemoteMockServer.groovy @@ -17,7 +17,7 @@ import eu.ztsh.mockserver.api.response.MockRemoved import eu.ztsh.mockserver.api.response.MockReport import eu.ztsh.mockserver.api.response.Mocks -import jakarta.xml.bind.JAXBContext +import javax.xml.bind.JAXBContext class RemoteMockServer { private final String address diff --git a/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/Util.groovy b/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/Util.groovy index e79e0c3..167cb3b 100644 --- a/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/Util.groovy +++ b/mockserver-client/src/main/groovy/eu/ztsh/mockserver/client/Util.groovy @@ -3,8 +3,7 @@ package eu.ztsh.mockserver.client import groovy.json.JsonSlurper import groovy.transform.CompileStatic import groovy.transform.TypeChecked -import groovy.xml.XmlSlurper -import groovy.xml.slurpersupport.GPathResult +import groovy.util.slurpersupport.GPathResult import org.apache.http.HttpEntity import org.apache.http.client.methods.CloseableHttpResponse import org.apache.http.util.EntityUtils @@ -12,7 +11,7 @@ import eu.ztsh.mockserver.api.response.ExceptionOccured import eu.ztsh.mockserver.api.response.MockAdded import eu.ztsh.mockserver.api.response.MockServerResponse -import jakarta.xml.bind.JAXBContext +import javax.xml.bind.JAXBContext @CompileStatic @TypeChecked diff --git a/mockserver-tests/pom.xml b/mockserver-tests/pom.xml index 2506a7a..6adec6e 100644 --- a/mockserver-tests/pom.xml +++ b/mockserver-tests/pom.xml @@ -1,36 +1,27 @@ - - 4.0.0 - + http-mock-server eu.ztsh.mockserver 3.0.0-SNAPSHOT + 4.0.0 mockserver-tests + + clean install + + - eu.ztsh.mockserver - mockserver - - - eu.ztsh.mockserver - mockserver-client - - - - org.apache.groovy + org.codehaus.groovy groovy - - org.apache.httpcomponents - httpclient + org.spockframework + spock-core - org.slf4j slf4j-api @@ -39,30 +30,24 @@ ch.qos.logback logback-core - - org.spockframework - spock-core + org.apache.httpcomponents + httpclient + + + eu.ztsh.mockserver + mockserver + ${project.version} + + + eu.ztsh.mockserver + mockserver-client + ${project.version} + + + info.solidsoft.spock + spock-global-unroll - - - - org.codehaus.gmavenplus - gmavenplus-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - 3.2.5 - - - **/*Test.java - - - - - - diff --git a/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerHttpsTest.groovy b/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerHttpsTest.groovy index e1ecd95..c83ed6c 100644 --- a/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerHttpsTest.groovy +++ b/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerHttpsTest.groovy @@ -1,11 +1,6 @@ package eu.ztsh.mockserver.tests -import eu.ztsh.mockserver.api.common.Https -import eu.ztsh.mockserver.api.request.AddMock -import eu.ztsh.mockserver.client.RemoteMockServer -import eu.ztsh.mockserver.client.Util -import eu.ztsh.mockserver.server.HttpMockServer -import groovy.xml.slurpersupport.GPathResult +import groovy.util.slurpersupport.GPathResult import org.apache.http.client.methods.CloseableHttpResponse import org.apache.http.client.methods.HttpPost import org.apache.http.conn.ssl.SSLConnectionSocketFactory @@ -14,6 +9,11 @@ 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.common.Https +import eu.ztsh.mockserver.api.request.AddMock +import eu.ztsh.mockserver.client.RemoteMockServer +import eu.ztsh.mockserver.client.Util +import eu.ztsh.mockserver.server.HttpMockServer import spock.lang.AutoCleanup import spock.lang.Ignore import spock.lang.Shared @@ -23,7 +23,7 @@ import javax.net.ssl.SSLContext import javax.net.ssl.SSLHandshakeException import java.security.KeyStore -@Ignore +@Ignore('Upgrade of Java needed') class MockServerHttpsTest extends Specification { RemoteMockServer remoteMockServer = new RemoteMockServer('localhost', 19000) @@ -48,7 +48,6 @@ class MockServerHttpsTest extends Specification { .loadTrustMaterial(trustStore()) .build() - @Ignore("TODO: SSL peer shut down incorrectly") def 'should handle HTTPS server' () { given: remoteMockServer.addMock(new AddMock( @@ -73,7 +72,6 @@ class MockServerHttpsTest extends Specification { restPostResponse.name() == 'goodResponse-request' } - @Ignore("TODO: SSL peer shut down incorrectly") def 'should handle HTTPS server with client auth' () { given: remoteMockServer.addMock(new AddMock( diff --git a/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerIntegrationTest.groovy b/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerIntegrationTest.groovy index 038a143..fc88b53 100644 --- a/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerIntegrationTest.groovy +++ b/mockserver-tests/src/test/groovy/eu/ztsh/mockserver/tests/MockServerIntegrationTest.groovy @@ -1,6 +1,6 @@ package eu.ztsh.mockserver.tests -import groovy.xml.slurpersupport.GPathResult +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 @@ -28,7 +28,6 @@ import eu.ztsh.mockserver.client.RemoteMockServer import eu.ztsh.mockserver.client.Util import eu.ztsh.mockserver.server.HttpMockServer import spock.lang.AutoCleanup -import spock.lang.Ignore import spock.lang.Specification class MockServerIntegrationTest extends Specification { @@ -66,7 +65,6 @@ class MockServerIntegrationTest extends Specification { remoteMockServer.removeMock('testRest')?.size() == 1 } - @Ignore("TODO: restPostResponse.name()") def "should add working rest mock on endpoint with utf"() { expect: remoteMockServer.addMock(new AddMock( diff --git a/mockserver/pom.xml b/mockserver/pom.xml index d097048..750d7d6 100644 --- a/mockserver/pom.xml +++ b/mockserver/pom.xml @@ -1,49 +1,27 @@ - - 4.0.0 - + - eu.ztsh.mockserver http-mock-server + eu.ztsh.mockserver 3.0.0-SNAPSHOT + 4.0.0 mockserver - eu.ztsh.mockserver - mockserver-api - - - - org.apache.groovy + org.codehaus.groovy groovy - org.apache.groovy + org.codehaus.groovy groovy-json - org.apache.groovy + org.codehaus.groovy groovy-xml - - - org.glassfish.jaxb - jaxb-core - - - org.glassfish.jaxb - jaxb-runtime - - - - org.apache.commons - commons-lang3 - - org.slf4j slf4j-api @@ -56,15 +34,19 @@ ch.qos.logback logback-classic + + org.apache.commons + commons-lang3 + + + eu.ztsh.mockserver + mockserver-api + clean package assembly:single install - - org.codehaus.gmavenplus - gmavenplus-plugin - maven-assembly-plugin @@ -79,17 +61,16 @@ mockserver-full false - + - create-archive - package - - single - - - + create-archive + package + + single + + + - diff --git a/mockserver/src/main/groovy/eu/ztsh/mockserver/server/HttpMockServer.groovy b/mockserver/src/main/groovy/eu/ztsh/mockserver/server/HttpMockServer.groovy index eaae94d..88c15ce 100644 --- a/mockserver/src/main/groovy/eu/ztsh/mockserver/server/HttpMockServer.groovy +++ b/mockserver/src/main/groovy/eu/ztsh/mockserver/server/HttpMockServer.groovy @@ -20,7 +20,7 @@ import eu.ztsh.mockserver.api.response.MockResponseReport import eu.ztsh.mockserver.api.response.Mocks import eu.ztsh.mockserver.api.response.Parameter -import jakarta.xml.bind.JAXBContext +import javax.xml.bind.JAXBContext import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.CopyOnWriteArraySet import java.util.concurrent.Executor @@ -79,22 +79,22 @@ class HttpMockServer { void listMocks(HttpExchange ex) { Mocks mockListing = new Mocks( - mocks: listMocks().collect { - new MockReport( - name: it.name, - path: it.path, - port: it.port, - predicate: it.predicateClosureText, - response: it.responseClosureText, - responseHeaders: it.responseHeadersClosureText, - soap: it.soap, - method: it.method, - statusCode: it.statusCode as int, - schema: it.schema, - imports: it.imports.collect { new ImportAlias(alias: it.key, fullClassName: it.value) }, - preserveHistory: it.preserveHistory - ) - } + mocks: listMocks().collect { + new MockReport( + name: it.name, + path: it.path, + port: it.port, + predicate: it.predicateClosureText, + response: it.responseClosureText, + responseHeaders: it.responseHeadersClosureText, + soap: it.soap, + method: it.method, + statusCode: it.statusCode as int, + schema: it.schema, + imports: it.imports.collect { new ImportAlias(alias: it.key, fullClassName: it.value) }, + preserveHistory: it.preserveHistory + ) + } ) createResponse(ex, mockListing, 200) } @@ -182,12 +182,12 @@ class HttpMockServer { mock.preserveHistory = co.preserveHistory != false if (co.https) { mock.https = new Https( - keystorePath: co.https.keystorePath ?: null, - keystorePassword: co.https.keystorePassword, - keyPassword: co.https.keyPassword, - truststorePath: co.https.truststorePath, - truststorePassword: co.https.truststorePassword, - requireClientAuth: co.https?.requireClientAuth?.asBoolean() ?: false + keystorePath: co.https.keystorePath ?: null, + keystorePassword: co.https.keystorePassword, + keyPassword: co.https.keyPassword, + truststorePath: co.https.truststorePath, + truststorePassword: co.https.truststorePassword, + requireClientAuth: co.https?.requireClientAuth?.asBoolean() ?: false ) } mock.maxUses = co.maxUses ?: null @@ -217,7 +217,7 @@ class HttpMockServer { mockNames.remove(name) configuration.remove(name) MockRemoved mockRemoved = new MockRemoved( - mockEvents: createMockEventReports(mockEvents) + mockEvents: createMockEventReports(mockEvents) ) createResponse(ex, mockRemoved, 200) } @@ -225,23 +225,23 @@ class HttpMockServer { private static List createMockEventReports(List mockEvents) { return mockEvents.collect { new MockEventReport( - request: new MockRequestReport( - text: it.request.text, - headers: new MockRequestReport.Headers(headers: it.request.headers.collect { - new Parameter(name: it.key, value: it.value) - }), - queryParams: new MockRequestReport.QueryParams(queryParams: it.request.query.collect { - new Parameter(name: it.key, value: it.value) - }), - path: new MockRequestReport.Path(pathParts: it.request.path) - ), - response: new MockResponseReport( - statusCode: it.response.statusCode, - text: it.response.text, - headers: new MockResponseReport.Headers(headers: it.response.headers.collect { - new Parameter(name: it.key, value: it.value) - }) - ) + request: new MockRequestReport( + text: it.request.text, + headers: new MockRequestReport.Headers(headers: it.request.headers.collect { + new Parameter(name: it.key, value: it.value) + }), + queryParams: new MockRequestReport.QueryParams(queryParams: it.request.query.collect { + new Parameter(name: it.key, value: it.value) + }), + path: new MockRequestReport.Path(pathParts: it.request.path) + ), + response: new MockResponseReport( + statusCode: it.response.statusCode, + text: it.response.text, + headers: new MockResponseReport.Headers(headers: it.response.headers.collect { + new Parameter(name: it.key, value: it.value) + }) + ) ) } } @@ -254,7 +254,7 @@ class HttpMockServer { log.trace("Peeking mock $name") List mockEvents = childServers.values().collect { it.peekMock(name) }.flatten() as List MockPeeked mockPeeked = new MockPeeked( - mockEvents: createMockEventReports(mockEvents) + mockEvents: createMockEventReports(mockEvents) ) createResponse(ex, mockPeeked, 200) } diff --git a/mockserver/src/main/groovy/eu/ztsh/mockserver/server/MockRequest.groovy b/mockserver/src/main/groovy/eu/ztsh/mockserver/server/MockRequest.groovy index a714afe..4d9fca0 100644 --- a/mockserver/src/main/groovy/eu/ztsh/mockserver/server/MockRequest.groovy +++ b/mockserver/src/main/groovy/eu/ztsh/mockserver/server/MockRequest.groovy @@ -3,8 +3,7 @@ package eu.ztsh.mockserver.server import com.sun.net.httpserver.Headers import groovy.json.JsonSlurper import groovy.transform.PackageScope -import groovy.xml.XmlSlurper -import groovy.xml.slurpersupport.GPathResult +import groovy.util.slurpersupport.GPathResult import groovy.xml.XmlUtil @PackageScope diff --git a/mockserver/src/main/groovy/eu/ztsh/mockserver/server/Util.groovy b/mockserver/src/main/groovy/eu/ztsh/mockserver/server/Util.groovy index c51d1f0..6e72916 100644 --- a/mockserver/src/main/groovy/eu/ztsh/mockserver/server/Util.groovy +++ b/mockserver/src/main/groovy/eu/ztsh/mockserver/server/Util.groovy @@ -3,7 +3,7 @@ package eu.ztsh.mockserver.server import com.sun.net.httpserver.HttpExchange import eu.ztsh.mockserver.api.response.MockAdded -import jakarta.xml.bind.JAXBContext +import javax.xml.bind.JAXBContext class Util { diff --git a/performance-tests/pom.xml b/performance-tests/pom.xml index e73db5c..a16e4e6 100644 --- a/performance-tests/pom.xml +++ b/performance-tests/pom.xml @@ -1,12 +1,11 @@ - 4.0.0 - - eu.ztsh.mockserver http-mock-server + eu.ztsh.mockserver 3.0.0-SNAPSHOT + 4.0.0 mockserver-performance-tests @@ -14,12 +13,13 @@ eu.ztsh.mockserver mockserver + ${project.version} eu.ztsh.mockserver mockserver-client + ${project.version} - org.openjdk.jmh jmh-core diff --git a/pom.xml b/pom.xml index a981985..0847141 100644 --- a/pom.xml +++ b/pom.xml @@ -17,74 +17,52 @@ - 11 - ${java.version} - ${java.version} UTF-8 - UTF-8 - 4.0.12 + 3.1 + 2.5.7 4.5.13 - 2.2-groovy-4.0 + 1.3-groovy-2.5 3.3.2 1.7.30 1.3.12 - 1.18.26 - 4.0.4 + 1.16.6 true - 1.37 - 3.0.2 - 3.1.0 + 1.11.2 + 2.5.2 + 1.4 + 0.5.1 - eu.ztsh.mockserver - mockserver-api - ${project.version} - - - eu.ztsh.mockserver - mockserver - ${project.version} - - - eu.ztsh.mockserver - mockserver-client - ${project.version} - - - - org.glassfish.jaxb - jaxb-bom - ${jaxb.version} - pom - import - - - - org.apache.groovy + org.codehaus.groovy groovy ${groovy.version} - org.apache.groovy + org.codehaus.groovy groovy-json ${groovy.version} - org.apache.groovy + org.codehaus.groovy groovy-xml ${groovy.version} - org.apache.httpcomponents httpclient ${httpclient.version} + + org.spockframework + spock-core + ${spock-core.version} + test + org.apache.commons commons-lang3 @@ -110,12 +88,10 @@ lombok ${lombok.version} - - org.spockframework - spock-core - ${spock-core.version} - test + eu.ztsh.mockserver + mockserver-api + ${project.version} org.openjdk.jmh @@ -129,32 +105,48 @@ ${jmh.version} test + + info.solidsoft.spock + spock-global-unroll + ${spock-global-unroll.version} + test + - - - - org.codehaus.mojo - jaxb2-maven-plugin - ${jaxb2-maven-plugin.version} - - - org.codehaus.gmavenplus - gmavenplus-plugin - ${gmavenplus-plugin.version} - - - - compile - compileTests - - - - - - + clean install + + + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + org.codehaus.gmavenplus + gmavenplus-plugin + ${gmavenplus-plugin.version} + + + + compile + testCompile + + + + + + org.apache.maven.plugins + maven-release-plugin + ${maven-release-plugin.version} + + true + + +