Updates for new sagain api, s-c-build 3.1 and boot 2.6 (#243)

Updates releaser to use spring cloud build 3.1.0

Transitively uses boot 2.6

Updates releaser to use new Sagan API

Fixes gh-196
Fixes gh-194
This commit is contained in:
Spencer Gibb
2022-02-18 14:29:17 -05:00
committed by GitHub
parent 2e7d318f13
commit e83cda4fed
195 changed files with 2914 additions and 4881 deletions

View File

@@ -35,8 +35,7 @@ public class InitializrSpringCloudInfoService extends SpringCloudRelease {
private RestTemplate rest;
public InitializrSpringCloudInfoService(RestTemplate rest, Github github,
GithubPomReader reader) {
public InitializrSpringCloudInfoService(RestTemplate rest, Github github, GithubPomReader reader) {
super(github, reader);
this.rest = rest;
}
@@ -48,17 +47,16 @@ public class InitializrSpringCloudInfoService extends SpringCloudRelease {
Map<String, SpringBootAndCloudVersion> cache = new HashMap<>();
Map<String, Object> response = rest.getForObject(INITIALIZR_URL, Map.class);
if (!response.containsKey("bom-ranges")) {
throw new SpringCloudVersionNotFoundException(new InitializrParseException(
"bom-ranges key not found in Initializr info endpoint"));
throw new SpringCloudVersionNotFoundException(
new InitializrParseException("bom-ranges key not found in Initializr info endpoint"));
}
Map<String, Object> bomRanges = (Map<String, Object>) response.get("bom-ranges");
if (!bomRanges.containsKey("spring-cloud")) {
throw new SpringCloudVersionNotFoundException(new InitializrParseException(
"spring-cloud key not found in Initializr info endpoint"));
throw new SpringCloudVersionNotFoundException(
new InitializrParseException("spring-cloud key not found in Initializr info endpoint"));
}
Map<String, String> springCloud = (Map<String, String>) bomRanges
.get("spring-cloud");
Map<String, String> springCloud = (Map<String, String>) bomRanges.get("spring-cloud");
for (String key : springCloud.keySet()) {
String rangeString = springCloud.get(key);
cache.put(key, parseRangeString(rangeString, key));
@@ -71,8 +69,7 @@ public class InitializrSpringCloudInfoService extends SpringCloudRelease {
throw new SpringCloudVersionNotFoundException(springBootVersion);
}
private SpringBootAndCloudVersion parseRangeString(String rangeString,
String springCloudVersion) {
private SpringBootAndCloudVersion parseRangeString(String rangeString, String springCloudVersion) {
// Example of rangeString Spring Boot >=2.0.0.M3 and <2.0.0.M5
String versions = rangeString.substring(13);
boolean startVersionInclusive = true;
@@ -94,12 +91,11 @@ public class InitializrSpringCloudInfoService extends SpringCloudRelease {
cleanedVersions = versions.split(" and <");
}
if (cleanedVersions.length == 1) {
return new SpringBootAndCloudVersion(cleanedVersions[0],
startVersionInclusive, "99999.99999.99999.RELEASE",
return new SpringBootAndCloudVersion(cleanedVersions[0], startVersionInclusive, "99999.99999.99999.RELEASE",
endVersionInclusive, springCloudVersion);
}
return new SpringBootAndCloudVersion(cleanedVersions[0], startVersionInclusive,
cleanedVersions[1], endVersionInclusive, springCloudVersion);
return new SpringBootAndCloudVersion(cleanedVersions[0], startVersionInclusive, cleanedVersions[1],
endVersionInclusive, springCloudVersion);
}
}

View File

@@ -37,8 +37,7 @@ public class SpringBootAndCloudVersion {
private String springCloudVersion;
public SpringBootAndCloudVersion(String bootStartVersion,
boolean statVersionInclusive, String bootEndVersion,
public SpringBootAndCloudVersion(String bootStartVersion, boolean statVersionInclusive, String bootEndVersion,
boolean endVersionInclusive, String springCloudVersion) {
this.bootEndVersion = bootEndVersion;
this.comparableBootEndVersion = new ComparableVersion(bootEndVersion);
@@ -80,10 +79,8 @@ public class SpringBootAndCloudVersion {
boolean matchesSpringBootVersion(ComparableVersion versionToCheck) {
int startVersionComparison = comparableBootStartVersion.compareTo(versionToCheck);
int endVersionComparison = versionToCheck.compareTo(comparableBootEndVersion);
return ((startVersionInclusive && startVersionComparison == 0)
|| startVersionComparison <= -1)
&& ((endVersionInclusive && endVersionComparison == 0)
|| endVersionComparison <= -1);
return ((startVersionInclusive && startVersionComparison == 0) || startVersionComparison <= -1)
&& ((endVersionInclusive && endVersionComparison == 0) || endVersionComparison <= -1);
}
}

View File

@@ -45,8 +45,7 @@ public class SpringCloudInfoApplication {
SpringCloudInfoConfigurationProperties properties) {
Github github = new RtGithub(properties.getGit().getOauthToken());
RestTemplate rest = new RestTemplateBuilder().build();
return new InitializrSpringCloudInfoService(rest, github,
new GithubPomReader(new MavenXpp3Reader(), rest));
return new InitializrSpringCloudInfoService(rest, github, new GithubPomReader(new MavenXpp3Reader(), rest));
}
@Configuration
@@ -54,8 +53,7 @@ public class SpringCloudInfoApplication {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll().and().httpBasic().disable()
.csrf().disable();
http.authorizeRequests().anyRequest().permitAll().and().httpBasic().disable().csrf().disable();
}
}

View File

@@ -57,8 +57,7 @@ public class SpringCloudInfoRestController {
}
@GetMapping("/bomversions/{bomVersion}")
public Map<String, String> bomVersions(@PathVariable String bomVersion)
throws IOException {
public Map<String, String> bomVersions(@PathVariable String bomVersion) throws IOException {
try {
return versionService.getReleaseVersions(bomVersion);
}
@@ -74,8 +73,7 @@ public class SpringCloudInfoRestController {
}
@GetMapping("/milestones/{name}/duedate")
public SpringCloudInfoService.Milestone milestoneDueDate(@PathVariable String name)
throws IOException {
public SpringCloudInfoService.Milestone milestoneDueDate(@PathVariable String name) throws IOException {
try {
return versionService.getMilestoneDueDate(name);
}

View File

@@ -29,18 +29,15 @@ import org.springframework.cloud.info.exceptions.SpringCloudVersionNotFoundExcep
*/
public interface SpringCloudInfoService {
SpringCloudVersion getSpringCloudVersion(String bootVersion)
throws SpringCloudVersionNotFoundException;
SpringCloudVersion getSpringCloudVersion(String bootVersion) throws SpringCloudVersionNotFoundException;
Collection<String> getSpringCloudVersions() throws IOException;
Map<String, String> getReleaseVersions(String bomVersion)
throws SpringCloudVersionNotFoundException, IOException;
Map<String, String> getReleaseVersions(String bomVersion) throws SpringCloudVersionNotFoundException, IOException;
Collection<String> getMilestones() throws IOException;
Milestone getMilestoneDueDate(String name)
throws SpringCloudMilestoneNotFoundException, IOException;
Milestone getMilestoneDueDate(String name) throws SpringCloudMilestoneNotFoundException, IOException;
class Milestone {

View File

@@ -56,8 +56,7 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService {
/**
* Github tags path.
*/
public static final String SPRING_CLOUD_RELEASE_TAGS_PATH = "repos/"
+ SPRING_CLOUD_RELEASE_COORDINATES + "/tags";
public static final String SPRING_CLOUD_RELEASE_TAGS_PATH = "repos/" + SPRING_CLOUD_RELEASE_COORDINATES + "/tags";
private static final String SPRING_CLOUD_RELEASE_RAW = "https://raw.githubusercontent.com/"
+ SPRING_CLOUD_RELEASE_COORDINATES;
@@ -87,8 +86,8 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService {
@Cacheable("springCloudVersions")
public Collection<String> getSpringCloudVersions() throws IOException {
List<String> releaseVersions = new ArrayList<>();
JsonReader reader = github.entry().uri().path(SPRING_CLOUD_RELEASE_TAGS_PATH)
.back().fetch().as(JsonResponse.class).json();
JsonReader reader = github.entry().uri().path(SPRING_CLOUD_RELEASE_TAGS_PATH).back().fetch()
.as(JsonResponse.class).json();
JsonArray tags = reader.readArray();
reader.close();
List<JsonObject> tagsList = tags.getValuesAs(JsonObject.class);
@@ -108,12 +107,10 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService {
}
try {
Map<String, String> versions = new HashMap<>();
Model model = reader.readPomFromUrl(
String.format(SPRING_CLOUD_RELEASE_DEPENDENCIES_RAW, bomVersion));
Model model = reader.readPomFromUrl(String.format(SPRING_CLOUD_RELEASE_DEPENDENCIES_RAW, bomVersion));
for (String name : model.getProperties().stringPropertyNames()) {
if (name.startsWith("spring-cloud-")) {
versions.put(name.replace(".version", ""),
model.getProperties().getProperty(name));
versions.put(name.replace(".version", ""), model.getProperties().getProperty(name));
}
}
versions.put("spring-boot", getSpringCloudBootVersion(bomVersion));
@@ -138,8 +135,7 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService {
@Override
@Cacheable("milestoneDueDate")
public Milestone getMilestoneDueDate(String name)
throws SpringCloudMilestoneNotFoundException, IOException {
public Milestone getMilestoneDueDate(String name) throws SpringCloudMilestoneNotFoundException, IOException {
Iterable<com.jcabi.github.Milestone> milestones = getMilestonesFromGithub();
for (com.jcabi.github.Milestone milestone : milestones) {
JsonObject json = milestone.json();
@@ -149,8 +145,7 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService {
}
else {
Instant instant = Instant.parse(json.getString("due_on"));
return new Milestone(LocalDateTime
.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId()))
return new Milestone(LocalDateTime.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId()))
.toLocalDate().toString());
}
}
@@ -161,15 +156,12 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService {
private Iterable<com.jcabi.github.Milestone> getMilestonesFromGithub() {
Map<String, String> params = new HashMap<>();
params.put("state", "open");
return github.repos()
.get(new Coordinates.Simple(SPRING_CLOUD_RELEASE_COORDINATES))
.milestones().iterate(params);
return github.repos().get(new Coordinates.Simple(SPRING_CLOUD_RELEASE_COORDINATES)).milestones()
.iterate(params);
}
private String getSpringCloudBootVersion(String bomVersion)
throws IOException, XmlPullParserException {
Model model = reader.readPomFromUrl(
String.format(SPRING_CLOUD_STARTER_PARENT_RAW, bomVersion));
private String getSpringCloudBootVersion(String bomVersion) throws IOException, XmlPullParserException {
Model model = reader.readPomFromUrl(String.format(SPRING_CLOUD_STARTER_PARENT_RAW, bomVersion));
return model.getParent().getVersion();
}

View File

@@ -22,8 +22,7 @@ package org.springframework.cloud.info.exceptions;
public class SpringCloudMilestoneNotFoundException extends Exception {
public SpringCloudMilestoneNotFoundException(String name) {
super("Spring Cloud milestone " + name
+ " was not found in Spring Cloud Release");
super("Spring Cloud milestone " + name + " was not found in Spring Cloud Release");
}
}

View File

@@ -22,8 +22,7 @@ package org.springframework.cloud.info.exceptions;
public class SpringCloudVersionNotFoundException extends Exception {
public SpringCloudVersionNotFoundException(String springBootVersion) {
super("Spring Cloud version not found for Spring Boot Version "
+ springBootVersion);
super("Spring Cloud version not found for Spring Boot Version " + springBootVersion);
}
public SpringCloudVersionNotFoundException(Exception e) {

View File

@@ -75,8 +75,7 @@ public class InitializrSpringCloudInfoServiceTests {
Github github = mock(Github.class);
GithubPomReader githubPomReader = mock(GithubPomReader.class);
when(rest.getForObject(anyString(), eq(Map.class))).thenReturn(new HashMap());
InitializrSpringCloudInfoService service = new InitializrSpringCloudInfoService(
rest, github, githubPomReader);
InitializrSpringCloudInfoService service = new InitializrSpringCloudInfoService(rest, github, githubPomReader);
try {
service.getSpringCloudVersion("2.1.0");
fail("Exception should have been thrown");
@@ -94,8 +93,7 @@ public class InitializrSpringCloudInfoServiceTests {
Map<String, Map<String, String>> info = new HashMap<>();
info.put("bom-ranges", new HashMap<>());
when(rest.getForObject(anyString(), eq(Map.class))).thenReturn(info);
InitializrSpringCloudInfoService service = new InitializrSpringCloudInfoService(
rest, github, githubPomReader);
InitializrSpringCloudInfoService service = new InitializrSpringCloudInfoService(rest, github, githubPomReader);
try {
service.getSpringCloudVersion("2.1.0");
fail("Exception should have been thrown");
@@ -111,25 +109,19 @@ public class InitializrSpringCloudInfoServiceTests {
RestTemplate rest = mock(RestTemplate.class);
Github github = mock(Github.class);
GithubPomReader githubPomReader = mock(GithubPomReader.class);
when(githubPomReader.readPomFromUrl(eq(String
.format(SpringCloudRelease.SPRING_CLOUD_STARTER_PARENT_RAW, bomVersion))))
.thenReturn(new MavenXpp3Reader()
.read(new FileReader(new ClassPathResource(
"spring-cloud-starter-parent-pom.xml")
.getFile())));
when(githubPomReader.readPomFromUrl(eq(String.format(
SpringCloudRelease.SPRING_CLOUD_RELEASE_DEPENDENCIES_RAW, bomVersion))))
when(githubPomReader
.readPomFromUrl(eq(String.format(SpringCloudRelease.SPRING_CLOUD_STARTER_PARENT_RAW, bomVersion))))
.thenReturn(new MavenXpp3Reader().read(new FileReader(
new ClassPathResource("spring-cloud-dependencies-pom.xml")
.getFile())));
new ClassPathResource("spring-cloud-starter-parent-pom.xml").getFile())));
when(githubPomReader.readPomFromUrl(
eq(String.format(SpringCloudRelease.SPRING_CLOUD_RELEASE_DEPENDENCIES_RAW, bomVersion))))
.thenReturn(new MavenXpp3Reader().read(
new FileReader(new ClassPathResource("spring-cloud-dependencies-pom.xml").getFile())));
InitializrSpringCloudInfoService service = spy(
new InitializrSpringCloudInfoService(rest, github, githubPomReader));
doReturn(Arrays.asList(new String[] { bomVersion })).when(service)
.getSpringCloudVersions();
Map<String, String> releaseVersionsResult = service
.getReleaseVersions(bomVersion);
assertThat(releaseVersionsResult,
Matchers.equalTo(SpringCloudInfoTestData.releaseVersions));
doReturn(Arrays.asList(new String[] { bomVersion })).when(service).getSpringCloudVersions();
Map<String, String> releaseVersionsResult = service.getReleaseVersions(bomVersion);
assertThat(releaseVersionsResult, Matchers.equalTo(SpringCloudInfoTestData.releaseVersions));
}
@Test(expected = SpringCloudVersionNotFoundException.class)
@@ -138,17 +130,14 @@ public class InitializrSpringCloudInfoServiceTests {
RestTemplate rest = mock(RestTemplate.class);
Github github = mock(Github.class);
GithubPomReader githubPomReader = mock(GithubPomReader.class);
when(githubPomReader.readPomFromUrl(eq(String
.format(SpringCloudRelease.SPRING_CLOUD_STARTER_PARENT_RAW, bomVersion))))
.thenReturn(new MavenXpp3Reader()
.read(new FileReader(new ClassPathResource(
"spring-cloud-starter-parent-pom.xml")
.getFile())));
when(githubPomReader.readPomFromUrl(eq(String.format(
SpringCloudRelease.SPRING_CLOUD_RELEASE_DEPENDENCIES_RAW, bomVersion))))
when(githubPomReader
.readPomFromUrl(eq(String.format(SpringCloudRelease.SPRING_CLOUD_STARTER_PARENT_RAW, bomVersion))))
.thenReturn(new MavenXpp3Reader().read(new FileReader(
new ClassPathResource("spring-cloud-dependencies-pom.xml")
.getFile())));
new ClassPathResource("spring-cloud-starter-parent-pom.xml").getFile())));
when(githubPomReader.readPomFromUrl(
eq(String.format(SpringCloudRelease.SPRING_CLOUD_RELEASE_DEPENDENCIES_RAW, bomVersion))))
.thenReturn(new MavenXpp3Reader().read(
new FileReader(new ClassPathResource("spring-cloud-dependencies-pom.xml").getFile())));
InitializrSpringCloudInfoService service = spy(
new InitializrSpringCloudInfoService(rest, github, githubPomReader));
doReturn(new ArrayList()).when(service).getSpringCloudVersions();
@@ -163,10 +152,8 @@ public class InitializrSpringCloudInfoServiceTests {
Response response = mock(Response.class);
Request request = mock(Request.class);
RequestURI requestURI = mock(RequestURI.class);
JsonResponse jsonResponse = new JsonResponse(new DefaultResponse(request, 200, "",
new Array<>(),
IOUtils.toByteArray(new ClassPathResource("spring-cloud-versions.json")
.getInputStream())));
JsonResponse jsonResponse = new JsonResponse(new DefaultResponse(request, 200, "", new Array<>(),
IOUtils.toByteArray(new ClassPathResource("spring-cloud-versions.json").getInputStream())));
doReturn(request).when(requestURI).back();
doReturn(requestURI).when(requestURI).path(eq(SPRING_CLOUD_RELEASE_TAGS_PATH));
doReturn(requestURI).when(request).uri();
@@ -175,9 +162,8 @@ public class InitializrSpringCloudInfoServiceTests {
doReturn(request).when(github).entry();
InitializrSpringCloudInfoService service = spy(
new InitializrSpringCloudInfoService(rest, github, githubPomReader));
assertThat(service.getSpringCloudVersions(),
Matchers.equalTo(SpringCloudInfoTestData.springCloudVersions.stream()
.map(v -> v.replaceFirst("v", "")).collect(Collectors.toList())));
assertThat(service.getSpringCloudVersions(), Matchers.equalTo(SpringCloudInfoTestData.springCloudVersions
.stream().map(v -> v.replaceFirst("v", "")).collect(Collectors.toList())));
}
@Test
@@ -226,8 +212,7 @@ public class InitializrSpringCloudInfoServiceTests {
for (String m : milestoneStrings.keySet()) {
Milestone milestone = mock(Milestone.class);
String dueDate = milestoneStrings.get(m);
JsonObjectBuilder builder = builderFactory.createObjectBuilder().add("title",
m);
JsonObjectBuilder builder = builderFactory.createObjectBuilder().add("title", m);
if (dueDate == null) {
builder.add("due_on", JsonValue.NULL);
}
@@ -256,8 +241,7 @@ public class InitializrSpringCloudInfoServiceTests {
Map<String, Map<String, Map<String, String>>> info = new HashMap<>();
info.put("bom-ranges", springCloud);
when(rest.getForObject(anyString(), eq(Map.class))).thenReturn(info);
InitializrSpringCloudInfoService service = new InitializrSpringCloudInfoService(
rest, github, githubPomReader);
InitializrSpringCloudInfoService service = new InitializrSpringCloudInfoService(rest, github, githubPomReader);
String version = service.getSpringCloudVersion("2.1.0.RELEASE").getVersion();
assertThat(version, Matchers.equalTo("Greenwich.SR1"));
version = service.getSpringCloudVersion("2.1.4.RELEASE").getVersion();
@@ -273,20 +257,16 @@ public class InitializrSpringCloudInfoServiceTests {
private Map<String, String> generateSpringCloudData() {
Map<String, String> data = new HashMap<>();
data.put("Edgware.SR5", "Spring Boot >=1.5.0.RELEASE and <=1.5.20.RELEASE");
data.put("Edgware.BUILD-SNAPSHOT",
"Spring Boot >=1.5.21.BUILD-SNAPSHOT and <2.0.0.M1");
data.put("Edgware.BUILD-SNAPSHOT", "Spring Boot >=1.5.21.BUILD-SNAPSHOT and <2.0.0.M1");
data.put("Finchley.M2", "Spring Boot >=2.0.0.M3 and <2.0.0.M5");
data.put("Finchley.M3", "Spring Boot >=2.0.0.M5 and <=2.0.0.M5");
data.put("Finchley.M4", "Spring Boot >=2.0.0.M6 and <=2.0.0.M6");
data.put("Finchley.RC1", "Spring Boot >=2.0.1.RELEASE and <2.0.2.RELEASE");
data.put("Finchley.RC2", "Spring Boot >=2.0.2.RELEASE and <2.0.3.RELEASE");
data.put("Finchley.SR3",
"Spring Boot >=2.0.3.RELEASE and <2.0.999.BUILD-SNAPSHOT");
data.put("Finchley.BUILD-SNAPSHO",
"Spring Boot >=2.0.999.BUILD-SNAPSHOT and <2.1.0.M3");
data.put("Finchley.SR3", "Spring Boot >=2.0.3.RELEASE and <2.0.999.BUILD-SNAPSHOT");
data.put("Finchley.BUILD-SNAPSHO", "Spring Boot >=2.0.999.BUILD-SNAPSHOT and <2.1.0.M3");
data.put("Greenwich.M1", "Spring Boot >=2.1.0.M3 and <2.1.0.RELEASE");
data.put("Greenwich.SR1",
"Spring Boot >=2.1.0.RELEASE and <2.1.5.BUILD-SNAPSHOT");
data.put("Greenwich.SR1", "Spring Boot >=2.1.0.RELEASE and <2.1.5.BUILD-SNAPSHOT");
data.put("Greenwich.BUILD-SNAPSHOT", "Spring Boot >=2.1.5.BUILD-SNAPSHOT");
return data;

View File

@@ -68,8 +68,8 @@ public class SpringCloudInfoRestControllerTests {
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation).uris()
.withHost("spring-cloud-info.cfapps.io").withPort(80))
.apply(documentationConfiguration(this.restDocumentation).uris().withHost("spring-cloud-info.cfapps.io")
.withPort(80))
.build();
}
@@ -78,59 +78,47 @@ public class SpringCloudInfoRestControllerTests {
doReturn(new SpringCloudVersion("Greenwich.RELEASE")).when(springCloudInfoService)
.getSpringCloudVersion(eq("2.1.1.RELEASE"));
this.mockMvc
.perform(get("/springcloudversion/springboot/{bootVersion}",
"2.1.1.RELEASE").accept(MediaType.APPLICATION_JSON))
.perform(get("/springcloudversion/springboot/{bootVersion}", "2.1.1.RELEASE")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(document("springcloudversion",
pathParameters(parameterWithName("bootVersion")
.description("The Spring Boot version")),
responseFields(fieldWithPath("version")
.description("Spring Cloud version"))));
pathParameters(parameterWithName("bootVersion").description("The Spring Boot version")),
responseFields(fieldWithPath("version").description("Spring Cloud version"))));
}
@Test
public void versions() throws Exception {
doReturn(springCloudVersions.stream().map(v -> v.replaceFirst("v", ""))
.collect(Collectors.toList())).when(springCloudInfoService)
.getSpringCloudVersions();
this.mockMvc
.perform(get("/springcloudversions").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(document("springcloudversions", responseFields(
fieldWithPath("[]").description("An array versions"))));
doReturn(springCloudVersions.stream().map(v -> v.replaceFirst("v", "")).collect(Collectors.toList()))
.when(springCloudInfoService).getSpringCloudVersions();
this.mockMvc.perform(get("/springcloudversions").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
.andDo(document("springcloudversions",
responseFields(fieldWithPath("[]").description("An array versions"))));
}
@Test
public void bomVersions() throws Exception {
doReturn(SpringCloudInfoTestData.releaseVersions).when(springCloudInfoService)
.getReleaseVersions(eq("Finchley.SR1"));
this.mockMvc
.perform(get("/bomversions/Finchley.SR1")
.accept(MediaType.APPLICATION_JSON))
this.mockMvc.perform(get("/bomversions/Finchley.SR1").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andDo(document("bomversions"));
}
@Test
public void milestones() throws Exception {
doReturn(SpringCloudInfoTestData.milestoneStrings.keySet())
.when(springCloudInfoService).getMilestones();
this.mockMvc.perform(get("/milestones").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andDo(document("milestones"));
doReturn(SpringCloudInfoTestData.milestoneStrings.keySet()).when(springCloudInfoService).getMilestones();
this.mockMvc.perform(get("/milestones").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
.andDo(document("milestones"));
}
@Test
public void milestoneDueDate() throws Exception {
doReturn(new SpringCloudInfoService.Milestone("2019-07-31"))
.when(springCloudInfoService).getMilestoneDueDate(eq("Hoxton.RELEASE"));
this.mockMvc
.perform(get("/milestones/{release}/duedate", "Hoxton.RELEASE")
.accept(MediaType.APPLICATION_JSON))
doReturn(new SpringCloudInfoService.Milestone("2019-07-31")).when(springCloudInfoService)
.getMilestoneDueDate(eq("Hoxton.RELEASE"));
this.mockMvc.perform(get("/milestones/{release}/duedate", "Hoxton.RELEASE").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(document("milestoneduedate",
pathParameters(parameterWithName("release")
.description("The Spring Cloud release train name")),
responseFields(fieldWithPath("dueDate")
.description("Spring Cloud milestone due date"))));
pathParameters(parameterWithName("release").description("The Spring Cloud release train name")),
responseFields(fieldWithPath("dueDate").description("Spring Cloud milestone due date"))));
}
}

View File

@@ -33,29 +33,33 @@ public final class SpringCloudInfoTestData {
public static Map<String, String> milestoneStrings = new HashMap<>();
static {
releaseVersions.put("spring-boot", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-aws", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-bus", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-cloudfoundry", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-commons", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-config", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-consul", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-contract", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-function", "2.1.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-gateway", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-gcp", "1.1.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-kubernetes", "1.1.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-netflix", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-openfeign", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-security", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-sleuth", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-stream", "Germantown.BUILD-SNAPSHOT");
releaseVersions.put("spring-boot", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-aws", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-bus", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-cloudfoundry", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-commons", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-config", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-consul", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-contract", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-function", "2.1.0-SNAPSHOT");
releaseVersions.put("spring-cloud-gateway", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-gcp", "1.1.0-SNAPSHOT");
releaseVersions.put("spring-cloud-kubernetes", "1.1.0-SNAPSHOT");
releaseVersions.put("spring-cloud-netflix", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-openfeign", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-security", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-sleuth", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-stream", "Germantown-SNAPSHOT");
releaseVersions.put("spring-cloud-task", "2.0.0.RELEASE");
releaseVersions.put("spring-cloud-vault", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-zookeeper", "2.2.0.BUILD-SNAPSHOT");
releaseVersions.put("spring-cloud-vault", "2.2.0-SNAPSHOT");
releaseVersions.put("spring-cloud-zookeeper", "2.2.0-SNAPSHOT");
}
static {
springCloudVersions.add("v2020.0.1");
springCloudVersions.add("v2020.0.0");
springCloudVersions.add("v2020.0.0-RC1");
springCloudVersions.add("v2020.0.0-M1");
springCloudVersions.add("vGreenwich.SR1");
springCloudVersions.add("vGreenwich.RELEASE");
springCloudVersions.add("vGreenwich.RC2");