From 67d68a5bc2dc7873903849296d7642e104562545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 1 Oct 2018 13:06:59 +0200 Subject: [PATCH] Add version attribute --- .../sonia/scm/api/v2/resources/IndexDto.java | 7 ++++++- .../scm/api/v2/resources/IndexDtoGenerator.java | 7 +++++-- .../scm/api/v2/resources/IndexResourceTest.java | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDto.java index 699ba1ea83..9346420f58 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDto.java @@ -2,10 +2,15 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.HalRepresentation; import de.otto.edison.hal.Links; +import lombok.Getter; +@Getter public class IndexDto extends HalRepresentation { - IndexDto(Links links) { + private final String version; + + IndexDto(String version, Links links) { super(links); + this.version = version; } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java index 8ed193348c..c8159f072c 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java @@ -2,6 +2,7 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.Links; import org.apache.shiro.SecurityUtils; +import sonia.scm.SCMContextProvider; import sonia.scm.config.ConfigurationPermissions; import sonia.scm.group.GroupPermissions; import sonia.scm.user.UserPermissions; @@ -13,10 +14,12 @@ import static de.otto.edison.hal.Link.link; public class IndexDtoGenerator { private final ResourceLinks resourceLinks; + private final SCMContextProvider scmContextProvider; @Inject - public IndexDtoGenerator(ResourceLinks resourceLinks) { + public IndexDtoGenerator(ResourceLinks resourceLinks, SCMContextProvider scmContextProvider) { this.resourceLinks = resourceLinks; + this.scmContextProvider = scmContextProvider; } public IndexDto generate() { @@ -42,6 +45,6 @@ public class IndexDtoGenerator { builder.single(link("login", resourceLinks.authentication().jsonLogin())); } - return new IndexDto(builder.build()); + return new IndexDto(scmContextProvider.getVersion(), builder.build()); } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/IndexResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/IndexResourceTest.java index 6bdd44e791..83697a3c4a 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/IndexResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/IndexResourceTest.java @@ -5,17 +5,22 @@ import com.github.sdorra.shiro.SubjectAware; import org.assertj.core.api.Assertions; import org.junit.Rule; import org.junit.Test; +import sonia.scm.SCMContextProvider; import java.net.URI; import java.util.Optional; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + @SubjectAware(configuration = "classpath:sonia/scm/shiro-001.ini") public class IndexResourceTest { @Rule public final ShiroRule shiroRule = new ShiroRule(); - private final IndexDtoGenerator indexDtoGenerator = new IndexDtoGenerator(ResourceLinksMock.createMock(URI.create("/"))); + private final SCMContextProvider scmContextProvider = mock(SCMContextProvider.class); + private final IndexDtoGenerator indexDtoGenerator = new IndexDtoGenerator(ResourceLinksMock.createMock(URI.create("/")), scmContextProvider); private final IndexResource indexResource = new IndexResource(indexDtoGenerator); @Test @@ -98,4 +103,13 @@ public class IndexResourceTest { Assertions.assertThat(index.getLinks().getLinkBy("groups")).matches(Optional::isPresent); Assertions.assertThat(index.getLinks().getLinkBy("config")).matches(Optional::isPresent); } + + @Test + public void shouldGenerateVersion() { + when(scmContextProvider.getVersion()).thenReturn("v1"); + + IndexDto index = indexResource.getIndex(); + + Assertions.assertThat(index.getVersion()).isEqualTo("v1"); + } }