Skip to content
Snippets Groups Projects
Commit d7b0ca1a authored by Lukas Malte Monnerjahn's avatar Lukas Malte Monnerjahn
Browse files

OZG-5176 structure RootModelAssembler

parent 368f266f
Branches
Tags
No related merge requests found
...@@ -44,20 +44,26 @@ public class RootModelAssembler implements RepresentationModelAssembler<Root, En ...@@ -44,20 +44,26 @@ public class RootModelAssembler implements RepresentationModelAssembler<Root, En
@Override @Override
public EntityModel<Root> toModel(Root root) { public EntityModel<Root> toModel(Root root) {
var rootLink = WebMvcLinkBuilder.linkTo(RootController.class); List<Link> links = buildRootModelLinks();
var configLink = Link.of( return EntityModel.of(
rootLink.toUriComponentsBuilder().replacePath(restProperties.getBasePath()).toUriString(), root,
REL_CONFIGURATION links);
); }
private List<Link> buildRootModelLinks() {
List<Link> links = new ArrayList<>(); 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)) { if (CurrentUserHelper.hasRole(UserRole.ADMIN_USER)) {
links.add(configLink); links.add(buildConfigLink(rootLinkBuilder));
}
return links;
} }
return EntityModel.of( private Link buildConfigLink(WebMvcLinkBuilder rootLinkBuilder) {
root, return Link.of(
links); rootLinkBuilder.toUriComponentsBuilder().replacePath(restProperties.getBasePath()).toUriString(),
REL_CONFIGURATION
);
} }
} }
...@@ -22,14 +22,13 @@ ...@@ -22,14 +22,13 @@
package de.ozgcloud.admin; package de.ozgcloud.admin;
import static de.ozgcloud.admin.RootModelAssembler.*; 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 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.CurrentUserHelper;
import de.ozgcloud.admin.common.user.UserRole; import de.ozgcloud.admin.common.user.UserRole;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -38,9 +37,9 @@ import org.mockito.*; ...@@ -38,9 +37,9 @@ import org.mockito.*;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.autoconfigure.data.rest.RepositoryRestProperties; import org.springframework.boot.autoconfigure.data.rest.RepositoryRestProperties;
import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link; import org.springframework.hateoas.Link;
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
class RootModelAssemblerTest { class RootModelAssemblerTest {
...@@ -52,23 +51,22 @@ class RootModelAssemblerTest { ...@@ -52,23 +51,22 @@ class RootModelAssemblerTest {
@Mock @Mock
private RepositoryRestProperties restProperties; private RepositoryRestProperties restProperties;
@BeforeEach
void mockBasePath() {
when(restProperties.getBasePath()).thenReturn(BASE_PATH);
}
@DisplayName("Entity Model") @DisplayName("Entity Model")
@Nested @Nested
class TestEntityModel { class TestEntityModel {
@Test @Test
void shouldHaveHrefToBasePathIfAuthorized() { void shouldHaveHrefToBasePathIfAuthorized() {
when(restProperties.getBasePath()).thenReturn(BASE_PATH);
try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) { try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) {
mockUserHelper.when(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)).thenReturn(true); 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 { ...@@ -77,20 +75,11 @@ class RootModelAssemblerTest {
try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) { try (MockedStatic<CurrentUserHelper> mockUserHelper = Mockito.mockStatic(CurrentUserHelper.class)) {
mockUserHelper.when(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)).thenReturn(false); mockUserHelper.when(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)).thenReturn(false);
var configurationLink = toModel().getLink(REL_CONFIGURATION); List<Link> links = toModel().getLinks().toList();
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);
assertEquals(Optional.of(Link.of(RootController.PATH)), selfLink); assertThat(links).containsExactly(
Link.of(RootController.PATH)
);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment