Select Git revision
RootModelAssemblerTest.java
-
Lukas Malte Monnerjahn authoredLukas Malte Monnerjahn authored
RootModelAssemblerTest.java 3.37 KiB
/*
* Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch das Ministerium für Energiewende, Klimaschutz, Umwelt und Natur
* Zentrales IT-Management
*
* 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 java.util.List;
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.Mockito;
import org.mockito.Spy;
import org.springframework.boot.autoconfigure.data.rest.RepositoryRestProperties;
import org.springframework.hateoas.Link;
import de.ozgcloud.admin.common.user.CurrentUserService;
import de.ozgcloud.admin.common.user.UserRole;
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
class TestEntityModel {
@BeforeEach
void beforeEach() {
Mockito.when(currentUserService.hasRole(UserRole.ADMIN_USER)).thenReturn(true);
Mockito.when(restProperties.getBasePath()).thenReturn(BASE_PATH);
}
@Test
void shouldHaveRoot() {
var givenRoot = RootTestFactory.create();
List<Link> links = List.of();
Mockito.when(modelAssembler.buildRootModelLinks()).thenReturn(links);
var resultRoot = modelAssembler.toModel(givenRoot).getContent();
assertThat(resultRoot).isEqualTo(givenRoot);
}
@Test
void shouldHaveLinks() {
List<Link> links = List.of(Link.of(RootController.PATH));
Mockito.when(modelAssembler.buildRootModelLinks()).thenReturn(links);
var modelLinks = modelAssembler.toModel(RootTestFactory.create()).getLinks();
assertThat(modelLinks).containsAll(links);
}
}
@DisplayName("Root Model Links")
@Nested
class TestBuildRootModelLinks {
@Test
void shouldHaveHrefToBasePathIfAuthorized() {
Mockito.when(restProperties.getBasePath()).thenReturn(BASE_PATH);
Mockito.when(currentUserService.hasRole(UserRole.ADMIN_USER)).thenReturn(true);
List<Link> links = modelAssembler.buildRootModelLinks();
assertThat(links).containsExactly(
Link.of(RootController.PATH),
Link.of(BASE_PATH, REL_CONFIGURATION));
}
@Test
void shouldNotHaveHrefToBasePathIfUnauthorized() {
Mockito.when(currentUserService.hasRole(UserRole.ADMIN_USER)).thenReturn(false);
List<Link> links = modelAssembler.buildRootModelLinks();
assertThat(links).containsExactly(
Link.of(RootController.PATH));
}
}
}