Newer
Older
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.admin;
import static de.ozgcloud.admin.RootModelAssembler.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.springframework.boot.autoconfigure.data.rest.RepositoryRestProperties;
import org.springframework.hateoas.Link;
import de.ozgcloud.admin.common.user.CurrentUserService;
class RootModelAssemblerTest {
private static final String BASE_PATH = "/api/base";
@Spy
@InjectMocks
private RootModelAssembler modelAssembler;
@Mock
private RepositoryRestProperties restProperties;
@Mock
private CurrentUserService currentUserService;
@DisplayName("Entity Model")
@Nested
private final List<Link> links = List.of(Link.of(RootController.PATH));
@BeforeEach
void beforeEach() {
doReturn(links).when(modelAssembler).buildRootModelLinks();
@Test
var givenRoot = RootTestFactory.create();
var resultRoot = modelAssembler.toModel(givenRoot).getContent();

Lukas Malte Monnerjahn
committed
assertThat(resultRoot).isEqualTo(givenRoot);

Lukas Malte Monnerjahn
committed
}
@Test
var modelLinks = modelAssembler.toModel(RootTestFactory.create()).getLinks();
assertThat(modelLinks).containsAll(links);
}
@DisplayName("Root Model Links")
@Nested
class TestBuildRootModelLinks {
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
void shouldCheckConfigurationPermission() {
modelAssembler.buildRootModelLinks();
verify(currentUserService).hasConfigurationPermission();
}
@Nested
class TestOnHasConfigurationPermission {
@BeforeEach
void hasConfigurationPermission() {
when(currentUserService.hasConfigurationPermission()).thenReturn(true);
when(restProperties.getBasePath()).thenReturn(BASE_PATH);
}
@Test
void shouldHaveHrefToConfiguration() {
var links = modelAssembler.buildRootModelLinks();
assertThat(links).containsExactly(
Link.of(RootController.PATH),
Link.of(BASE_PATH, REL_CONFIGURATION));
}
}
@Nested
class TestOnNotHasConfigurationPermission {
@BeforeEach
void hasNotConfigurationPermission() {
when(currentUserService.hasConfigurationPermission()).thenReturn(false);
}
@Test
void shouldHaveOnlySelfLink() {
var links = modelAssembler.buildRootModelLinks();
assertThat(links).containsExactly(
Link.of(RootController.PATH));
}