diff --git a/src/main/java/de/ozgcloud/admin/RootModelAssembler.java b/src/main/java/de/ozgcloud/admin/RootModelAssembler.java index ea2dc2cc33f07675f97d6064a1858326025ef545..b8bdafb814ac0f6f62d237f91263133fc694b621 100644 --- a/src/main/java/de/ozgcloud/admin/RootModelAssembler.java +++ b/src/main/java/de/ozgcloud/admin/RootModelAssembler.java @@ -44,20 +44,26 @@ public class RootModelAssembler implements RepresentationModelAssembler<Root, En @Override public EntityModel<Root> toModel(Root root) { - var rootLink = WebMvcLinkBuilder.linkTo(RootController.class); - var configLink = Link.of( - rootLink.toUriComponentsBuilder().replacePath(restProperties.getBasePath()).toUriString(), - REL_CONFIGURATION - ); + List<Link> links = buildRootModelLinks(); + return EntityModel.of( + root, + links); + } + private List<Link> buildRootModelLinks() { List<Link> links = new ArrayList<>(); - links.add(rootLink.withSelfRel()); + var rootLinkBuilder = WebMvcLinkBuilder.linkTo(RootController.class); + links.add(rootLinkBuilder.withSelfRel()); if (CurrentUserHelper.hasRole(UserRole.ADMIN_USER)) { - links.add(configLink); + links.add(buildConfigLink(rootLinkBuilder)); } + return links; + } - return EntityModel.of( - root, - links); + private Link buildConfigLink(WebMvcLinkBuilder rootLinkBuilder) { + return Link.of( + rootLinkBuilder.toUriComponentsBuilder().replacePath(restProperties.getBasePath()).toUriString(), + REL_CONFIGURATION + ); } } diff --git a/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java b/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java index f30d6ba3df6821441a92c7fa810bce6462921bac..2a583e5dabee4474fa74eb71097f9f0e686c9b70 100644 --- a/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java +++ b/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java @@ -22,14 +22,13 @@ package de.ozgcloud.admin; import static de.ozgcloud.admin.RootModelAssembler.*; -import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; -import java.util.Optional; +import java.util.List; import de.ozgcloud.admin.common.user.CurrentUserHelper; import de.ozgcloud.admin.common.user.UserRole; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -38,9 +37,9 @@ import org.mockito.*; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.boot.autoconfigure.data.rest.RepositoryRestProperties; import org.springframework.hateoas.EntityModel; -import org.springframework.hateoas.IanaLinkRelations; import org.springframework.hateoas.Link; + @ExtendWith(MockitoExtension.class) class RootModelAssemblerTest { @@ -52,23 +51,22 @@ class RootModelAssemblerTest { @Mock private RepositoryRestProperties restProperties; - @BeforeEach - void mockBasePath() { - when(restProperties.getBasePath()).thenReturn(BASE_PATH); - } - @DisplayName("Entity Model") @Nested class TestEntityModel { @Test void shouldHaveHrefToBasePathIfAuthorized() { + when(restProperties.getBasePath()).thenReturn(BASE_PATH); try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) { mockUserHelper.when(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)).thenReturn(true); - var configurationLink = toModel().getLink(REL_CONFIGURATION); + List<Link> links = toModel().getLinks().toList(); - assertEquals(Optional.of(Link.of(BASE_PATH, REL_CONFIGURATION)), configurationLink); + assertThat(links).containsExactly( + Link.of(RootController.PATH), + Link.of(BASE_PATH, REL_CONFIGURATION) + ); } } @@ -77,20 +75,11 @@ class RootModelAssemblerTest { try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) { mockUserHelper.when(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)).thenReturn(false); - var configurationLink = toModel().getLink(REL_CONFIGURATION); - - assertEquals(Optional.empty(), configurationLink); - } - } - - @Test - void shouldHaveHrefToSelf() { - try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) { - mockUserHelper.when(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)).thenReturn(false); - - var selfLink = toModel().getLink(IanaLinkRelations.SELF); + List<Link> links = toModel().getLinks().toList(); - assertEquals(Optional.of(Link.of(RootController.PATH)), selfLink); + assertThat(links).containsExactly( + Link.of(RootController.PATH) + ); } }