Skip to content
Snippets Groups Projects
Commit f679f39a authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-3936 remove UserProfileUrlProvider

parent 93caf692
No related branches found
No related tags found
1 merge request!16Ozg 3936 refactor user profile url provider
Showing
with 15 additions and 165 deletions
/*
* Copyright (C) 2023 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.alfa.common;
import java.util.Objects;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import com.google.common.base.Preconditions;
@Component
public class UserProfileUrlProvider implements ApplicationContextAware {
// TODO auf javax.validation umstellen
private static final String ERROR_MESSAGE = "Key %s missing, please add it to the application.yml";
// TODO applicationContext darf nicht static abgelegt werden - es sollte möglich
// sein, dass eine andere Konfiguration in der jvm läuft.
private static ApplicationContext applicationContext;
static final String URL_ROOT_KEY = "ozgcloud.user-manager.url";
static final String USER_PROFILES_TEMPLATE_KEY = "ozgcloud.user-manager.profile-template";
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
UserProfileUrlProvider.setSpringContext(applicationContext);
}
private static void setSpringContext(ApplicationContext context) {
applicationContext = context;
}
public static boolean isConfigured() {
return Objects.nonNull(applicationContext.getEnvironment().getProperty(URL_ROOT_KEY))
&& Objects.nonNull(applicationContext.getEnvironment().getProperty(USER_PROFILES_TEMPLATE_KEY));
}
public static String getUrl(Object val) {
// TODO Abhängingkeit zu com.google.common ausbauen
Preconditions.checkNotNull(applicationContext, "ApplicationContext not initialized");
// TODO parameter lieber injezieren und validation verwenden
var rootUrl = applicationContext.getEnvironment().getProperty(URL_ROOT_KEY);
Preconditions.checkNotNull(rootUrl, ERROR_MESSAGE, URL_ROOT_KEY);
var template = applicationContext.getEnvironment().getProperty(USER_PROFILES_TEMPLATE_KEY);
Preconditions.checkNotNull(template, ERROR_MESSAGE, USER_PROFILES_TEMPLATE_KEY);
// TODO UriComponent Builder verwenden
var profilesUrl = rootUrl + template;
return String.format(profilesUrl, val);
}
}
......@@ -25,8 +25,9 @@ package de.ozgcloud.alfa.vorgang;
import java.util.Optional;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.RepresentationModel;
import org.springframework.http.HttpStatus;
......@@ -44,10 +45,11 @@ import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
import de.ozgcloud.alfa.common.user.UserId;
import de.ozgcloud.alfa.statistic.StatisticController;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
@RestController
@RequestMapping(VorgangController.PATH)
@RequiredArgsConstructor
public class VorgangController {
static final String PATH = "/api/vorgangs"; // NOSONAR
......@@ -62,16 +64,12 @@ public class VorgangController {
public static final String PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS = "exists";
public static final String PARAM_NACHRICHTEN_UNGELESENE = "ungelesene";
@Autowired
private VorgangService vorgangService;
@Autowired
private VorgangModelAssembler modelAssembler;
private final VorgangService vorgangService;
private final VorgangModelAssembler modelAssembler;
@Autowired
private ClientAttributeService clientAttributeService;
private final ClientAttributeService clientAttributeService;
@Autowired
private StatisticController statisticController;
private final StatisticController statisticController;
@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT })
public RepresentationModel<EntityModel<EnhancedVorgang>> getAll(@RequestParam int page, @RequestParam Integer limit) {
......
......@@ -36,7 +36,6 @@ import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.UriTemplate;
import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.command.CommandController;
import de.ozgcloud.alfa.vorgang.Vorgang;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
......@@ -45,8 +44,6 @@ import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
class AktenzeichenModelProcessorTest {
private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
@InjectMocks
private AktenzeichenModelProcessor processor;
......
/*
* Copyright (C) 2023 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.alfa.common;
import static org.mockito.Mockito.*;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
public class UserProfileUrlProviderTestFactory {
public static final String ROOT_URL = "https://localhost";
public static final String USER_PROFILES_API_PATH = "/api/userProfiles/";
public static final String OZGCLOUD_USER_MANAGER_PROFILE_TEMPLATE = "ozgcloud.user-manager.profile-template";
public static final String OZGCLOUD_USER_MANAGER_URL = "ozgcloud.user-manager.url";
public static void initUserProfileUrlProvider(UserProfileUrlProvider urlProvider) {
ApplicationContext context = mock(ApplicationContext.class);
Environment environment = mock(Environment.class);
when(environment.getProperty(OZGCLOUD_USER_MANAGER_URL)).thenReturn(ROOT_URL);
when(environment.getProperty(OZGCLOUD_USER_MANAGER_PROFILE_TEMPLATE)).thenReturn(USER_PROFILES_API_PATH + "%s");
when(context.getEnvironment()).thenReturn(environment);
urlProvider.setApplicationContext(context);
}
}
......@@ -27,9 +27,7 @@ import static de.ozgcloud.alfa.common.command.CommandModelAssembler.*;
import static de.ozgcloud.alfa.common.command.CommandTestFactory.*;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.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;
......@@ -38,13 +36,10 @@ import org.junit.jupiter.params.provider.EnumSource;
import org.junit.jupiter.params.provider.EnumSource.Mode;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
class CommandModelAssemblerTest {
......@@ -54,13 +49,6 @@ class CommandModelAssemblerTest {
@InjectMocks
private CommandModelAssembler modelAssembler;
@BeforeEach
void init() {
var applicationContext = mock(ApplicationContext.class);
lenient().when(applicationContext.getEnvironment()).thenReturn(mock(Environment.class));
new UserProfileUrlProvider().setApplicationContext(applicationContext);
}
@Test
void shouldHaveSelfLink() {
var model = modelAssembler.toModel(CommandTestFactory.create());
......
......@@ -23,7 +23,6 @@
*/
package de.ozgcloud.alfa.historie;
import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
......@@ -121,6 +120,9 @@ class HistorieModelAssemblerTest {
@Nested
class TestCreatedByLink {
private static final String ROOT_URL = LoremIpsum.getInstance().getUrl();
private static final String USER_PROFILES_API_PATH = "/api/user-profiles/";
@Mock
private UserManagerUrlProvider userManagerUrlProvider;
......
......@@ -23,7 +23,6 @@
*/
package de.ozgcloud.alfa.kommentar;
import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
......@@ -41,8 +40,9 @@ import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.server.EntityLinks;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.common.LinkedResourceTestUtils;
import de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory;
import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
import de.ozgcloud.alfa.vorgang.VorgangController;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
......@@ -53,8 +53,7 @@ class KommentarModelAssemblerTest {
private static final String PATH = KommentarController.KOMMENTAR_PATH + "/";
private static final String REL_CREATED_BY = "createdBy";
private static final String USER_MANAGER_URL = UserProfileUrlProviderTestFactory.ROOT_URL
+ UserProfileUrlProviderTestFactory.USER_PROFILES_API_PATH;
private static final String USER_MANAGER_URL = LoremIpsum.getInstance().getUrl();
@Spy
@InjectMocks
......@@ -130,7 +129,7 @@ class KommentarModelAssemblerTest {
@Test
void shouldHaveCreatedByLink() {
when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(ROOT_URL + USER_PROFILES_API_PATH + "%s");
when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(USER_MANAGER_URL + "%s");
var model = LinkedResourceTestUtils.processUserProfileResource(buildModel(), userManagerUrlProvider);
......
......@@ -23,7 +23,6 @@
*/
package de.ozgcloud.alfa.loeschanforderung;
import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
......@@ -38,7 +37,6 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.errorhandling.ExceptionController;
import de.ozgcloud.alfa.common.errorhandling.ProblemDetailMapper;
import lombok.SneakyThrows;
......@@ -91,8 +89,6 @@ class LoeschAnforderungControllerTest {
@Test
void shouldReturn200() throws Exception {
initUserProfileUrlProvider(new UserProfileUrlProvider());
var response = doRequest();
response.andExpect(status().isOk());
......
......@@ -42,8 +42,6 @@ import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.hateoas.EntityModel;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
......@@ -52,7 +50,6 @@ import org.springframework.test.web.servlet.assertj.MockMvcTester.MockMvcRequest
import org.springframework.test.web.servlet.assertj.MvcTestResultAssert;
import org.springframework.web.util.UriComponentsBuilder;
import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
import de.ozgcloud.alfa.common.user.UserId;
import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
......@@ -814,18 +811,10 @@ class VorgangControllerTest {
@Nested
class TestVorgangWithEingang {
private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
@BeforeEach
void initTest() {
when(vorgangService.findVorgangWithEingang(any())).thenReturn(VorgangWithEingangTestFactory.create());
when(modelAssembler.toModel(any())).then(i -> EntityModel.of(i.getArgument(0)));
ApplicationContext context = mock(ApplicationContext.class);
Environment environment = mock(Environment.class);
when(environment.getProperty(anyString())).thenReturn("test/");
when(context.getEnvironment()).thenReturn(environment);
urlProvider.setApplicationContext(context);
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment