From 5ff2b2016da84c3df2e95ab513c184cf285a72b4 Mon Sep 17 00:00:00 2001 From: Szava Maczika Date: Wed, 6 Sep 2023 10:43:42 +0200 Subject: [PATCH] Add test to verify java 8 compatibility --- build.gradle.kts | 27 ++++++++-- .../com/gradle/enterprise/api/MockServer.java | 49 +++++++++++++++++++ 2 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/gradle/enterprise/api/MockServer.java diff --git a/build.gradle.kts b/build.gradle.kts index db24864..cfa817f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.distsDirectory + group = "com.gradle.enterprise.api" description = "Gradle Enterprise API sample" @@ -32,18 +34,25 @@ dependencies { implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2") implementation("com.google.code.findbugs:jsr305:3.0.2") implementation("org.apache.httpcomponents.client5:httpclient5:5.2.1") + + testImplementation("org.mock-server:mockserver-netty:5.15.0") + testImplementation("org.junit.jupiter:junit-jupiter:5.7.1") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + } val gradleEnterpriseVersion = "2023.2" // Must be later than 2022.1 val baseApiUrl = providers.gradleProperty("apiManualUrl").orElse("https://docs.gradle.com/enterprise/api-manual/ref/") val apiSpecificationFileGradleProperty = providers.gradleProperty("apiSpecificationFile") +val apiSpecificationURL = "${baseApiUrl.get()}gradle-enterprise-${gradleEnterpriseVersion}-api.yaml" val apiSpecificationFile = apiSpecificationFileGradleProperty .map { s -> file(s) } - .orElse(objects.property(File::class) - .convention(provider { - resources.text.fromUri("${baseApiUrl.get()}gradle-enterprise-${gradleEnterpriseVersion}-api.yaml").asFile() - }) + .orElse( + objects.property(File::class) + .convention(provider { + resources.text.fromUri(apiSpecificationURL).asFile() + }) ).map { file -> file.absolutePath } val basePackageName = "com.gradle.enterprise.api" @@ -73,6 +82,16 @@ openApiGenerate { )) } +tasks.named("test") { + useJUnitPlatform() + + systemProperties["ge.api.url"] = apiSpecificationURL + + java { + sourceCompatibility = JavaVersion.VERSION_1_8 + } +} + sourceSets { main { java { diff --git a/src/test/java/com/gradle/enterprise/api/MockServer.java b/src/test/java/com/gradle/enterprise/api/MockServer.java new file mode 100644 index 0000000..eea5f8b --- /dev/null +++ b/src/test/java/com/gradle/enterprise/api/MockServer.java @@ -0,0 +1,49 @@ +package com.gradle.enterprise.api; + +import com.gradle.enterprise.api.client.ApiClient; +import com.gradle.enterprise.api.client.ApiException; +import com.gradle.enterprise.api.client.ServerConfiguration; +import com.gradle.enterprise.api.model.Build; +import com.gradle.enterprise.api.model.BuildsQuery; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockserver.configuration.Configuration; +import org.mockserver.integration.ClientAndServer; +import org.mockserver.logging.MockServerLogger; +import org.mockserver.mock.Expectation; +import org.mockserver.openapi.OpenAPIConverter; + +import java.net.InetSocketAddress; +import java.util.Collections; +import java.util.List; + +public class MockServer { + + private static final String gradleEnterpriseAPIYamlUrl = System.getProperty("ge.api.url"); + + private ClientAndServer mockServer; + + @BeforeEach + public void setup() { + Configuration configuration = Configuration.configuration(); + List openApiExpectations = new OpenAPIConverter(new MockServerLogger()).buildExpectations(gradleEnterpriseAPIYamlUrl, null); + mockServer = ClientAndServer.startClientAndServer(configuration, Collections.singletonList(19234)); + mockServer.upsert(openApiExpectations.toArray(new Expectation[0])); + } + + @Test + public void testSimpleAPICall() throws ApiException { + InetSocketAddress remoteAddress = mockServer.remoteAddress(); + + ApiClient apiClient = new ApiClient(); + apiClient.setServers(Collections.singletonList(new ServerConfiguration( + "http://" + remoteAddress.getHostName() + ":" + remoteAddress.getPort(), "mockServer", Collections.emptyMap() + ))); + BuildsApi buildsApi = new BuildsApi(apiClient); + apiClient.addDefaultHeader("Authorization", "Bearer XYZ"); + + List builds = buildsApi.getBuilds(new BuildsQuery()); + + assert !builds.isEmpty(); + } +}