diff --git a/spring-cloud-contract-wiremock/pom.xml b/spring-cloud-contract-wiremock/pom.xml index 785cddd29c..201fd10222 100644 --- a/spring-cloud-contract-wiremock/pom.xml +++ b/spring-cloud-contract-wiremock/pom.xml @@ -12,16 +12,21 @@ jar spring-cloud-contract-wiremock Spring Cloud Contract Wiremock + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + com.github.tomakehurst wiremock-standalone - - org.apache.httpcomponents - httpclient - test - io.rest-assured rest-assured @@ -94,13 +99,11 @@ spring-cloud-contract-verifier test - - + diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithUrlResourceTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithUrlResourceTests.java index 95e82d4d46..b484744f53 100644 --- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithUrlResourceTests.java +++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithUrlResourceTests.java @@ -17,173 +17,48 @@ package org.springframework.cloud.contract.wiremock; -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonInclude; -import org.junit.Ignore; +import org.assertj.core.api.BDDAssertions; import org.junit.Test; +import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.Bean; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.client.RestTemplate; -import static org.assertj.core.api.BDDAssertions.then; - -//@RunWith(SpringRunner.class) -//@SpringBootTest(classes = AutoConfigureWireMockFilesApplicationWithUrlResourceTests.Config.class, -// properties = "app.baseUrl=http://localhost:${wiremock.server.port}", -// webEnvironment = WebEnvironment.NONE) +@RunWith(SpringRunner.class) +@SpringBootTest(classes = AutoConfigureWireMockFilesApplicationWithUrlResourceTests.Config.class, + properties = "app.baseUrl=http://localhost:${wiremock.server.port}", + webEnvironment = SpringBootTest.WebEnvironment.NONE) // tag::load_all_stubs[] @AutoConfigureWireMock(port = 0, stubs = "classpath*:/META-INF/**/mappings/**/*.json") // end::load_all_stubs[] -// Ignore for a GA Release -@Ignore public class AutoConfigureWireMockFilesApplicationWithUrlResourceTests { - @Autowired - private RestTemplateSaganClient client; + @Value("${wiremock.server.port}") + int wiremockPort; @Test - public void contextLoads() throws Exception { - Release release = this.client.getRelease("spring-framework", "5.0.0.RC4"); + public void should_work_for_analytics() throws Exception { + String count = + new RestTemplate().getForObject("http://localhost:" + this.wiremockPort + "/issues/count", String.class); - then(release.releaseStatus).isEqualTo("PRERELEASE"); - then(release.refDocUrl).isEqualTo("http://docs.spring.io/spring/docs/{version}/spring-framework-reference/"); - then(release.apiDocUrl).isEqualTo("http://docs.spring.io/spring/docs/{version}/javadoc-api/"); - then(release.groupId).isEqualTo("org.springframework"); - then(release.artifactId).isEqualTo("spring-context"); - then(release.repository.id).isEqualTo("spring-milestones"); - then(release.repository.name).isEqualTo("Spring Milestones"); - then(release.repository.url).isEqualTo("https://repo.spring.io/libs-milestone"); - then(release.repository.snapshotsEnabled).isFalse(); - then(release.version).isEqualTo("5.0.0.RC4"); - then(release.current).isFalse(); - then(release.generalAvailability).isFalse(); - then(release.preRelease).isTrue(); - then(release.versionDisplayName).isEqualTo("5.0.0 RC4"); - then(release.snapshot).isFalse(); + BDDAssertions.then(count).isEqualTo("5"); + } + + @Test + public void should_work_for_webhook() throws Exception { + String response = + new RestTemplate().getForObject("http://localhost:" + this.wiremockPort + "/", String.class); + + BDDAssertions.then(response).contains("spring-cloud/spring-cloud-netflix"); } @Configuration @EnableAutoConfiguration static class Config { - @Bean - RestTemplateSaganClient restTemplateSaganClient(@Value("${app.baseUrl}") String url) { - return new RestTemplateSaganClient(new RestTemplate(), url); - } } -} - -/** - * @author Marcin Grzejszczak - */ -class RestTemplateSaganClient { - - private final RestTemplate restTemplate; - private final String baseUrl; - - RestTemplateSaganClient(RestTemplate restTemplate, String url) { - this.restTemplate = restTemplate; - this.baseUrl = url; - } - - public Release getRelease(String projectName, String releaseVersion) { - return this.restTemplate.getForObject(this.baseUrl + "/project_metadata/{projectName}/releases/{releaseVersion}", Release.class, projectName, releaseVersion); - } -} - -/** - * @author Marcin Grzejszczak - */ -@JsonInclude(value = JsonInclude.Include.NON_NULL) -class Project { - public String id = ""; - public String name = ""; - public String repoUrl = ""; - public String siteUrl = ""; - public String category = ""; - public String stackOverflowTags; - public List projectReleases = new ArrayList<>(); - public List stackOverflowTagList = new ArrayList<>(); - public Boolean aggregator; - - @Override public String toString() { - return "Project{" + "id='" + this.id + '\'' + ", name='" + this.name + '\'' + ", repoUrl='" - + this.repoUrl + '\'' + ", siteUrl='" + this.siteUrl + '\'' + ", category='" - + this.category + '\'' + ", stackOverflowTags='" + this.stackOverflowTags + '\'' - + ", projectReleases=" + this.projectReleases + ", stackOverflowTagList=" - + this.stackOverflowTagList + ", aggregator=" + this.aggregator + '}'; - } -} - -/** - * @author Marcin Grzejszczak - */ -@JsonInclude(value = JsonInclude.Include.NON_NULL) -class Release { - public String releaseStatus = ""; - public String refDocUrl = ""; - public String apiDocUrl = ""; - public String groupId = ""; - public String artifactId = ""; - public Repository repository; - public String version = ""; - public boolean current; - public boolean generalAvailability; - public boolean preRelease; - public String versionDisplayName = ""; - public boolean snapshot; - - @Override public String toString() { - return "Release{" + "releaseStatus='" + this.releaseStatus + '\'' + ", refDocUrl='" - + this.refDocUrl + '\'' + ", apiDocUrl='" + this.apiDocUrl + '\'' + ", groupId='" - + this.groupId + '\'' + ", artifactId='" + this.artifactId + '\'' + ", repository=" - + this.repository + ", version='" + this.version + '\'' + ", current=" + this.current - + ", generalAvailability=" + this.generalAvailability + ", preRelease=" - + this.preRelease + ", versionDisplayName='" + this.versionDisplayName + '\'' - + ", snapshot=" + this.snapshot + '}'; - } -} - -/** - * @author Marcin Grzejszczak - */ -@JsonInclude(value = JsonInclude.Include.NON_NULL) -class ReleaseUpdate { - public String groupId = ""; - public String artifactId = ""; - public String version = ""; - public String releaseStatus = ""; - public String refDocUrl = ""; - public String apiDocUrl = ""; - public Boolean current; - public Repository repository; - - @Override public String toString() { - return "ReleaseUpdate{" + "groupId='" + this.groupId + '\'' + ", artifactId='" - + this.artifactId + '\'' + ", version='" + this.version + '\'' + ", releaseStatus='" - + this.releaseStatus + '\'' + ", refDocUrl='" + this.refDocUrl + '\'' - + ", apiDocUrl='" + this.apiDocUrl + '\'' + ", repository=" + this.repository + '}'; - } -} - -/** - * @author Marcin Grzejszczak - */ -@JsonInclude(value = JsonInclude.Include.NON_NULL) -class Repository { - public String id; - public String name; - public String url; - public Boolean snapshotsEnabled; - - @Override public String toString() { - return "Repository{" + "id='" + this.id + '\'' + ", name='" + this.name + '\'' + ", url='" - + this.url + '\'' + ", snapshotsEnabled=" + this.snapshotsEnabled + '}'; - } } \ No newline at end of file