Skip to content
Snippets Groups Projects
Select Git revision
  • OZG-7985-anfrage-von-landesebene
  • main default protected
  • release
  • OZG-8252-gitlab-pipeline
  • OZG-7774-E2E
  • OZG-5120-PoC-Native-Image
  • 1.10.0
  • 1.9.0
  • 1.8.0
  • 1.7.0
  • 1.6.0
  • 1.5.0
  • 1.4.0
  • 1.3.0
  • 1.2.1
  • 1.2.0
  • 1.1.1
  • 1.1.0
  • 1.0.0
  • 0.8.0
  • 0.7.0
  • 0.6.0
  • 0.5.0
  • 0.4.0
  • 0.3.0
  • 0.2.0
26 results

RootModelAssemblerTest.java

Blame
  • 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));
    		}
    	}
    
    }