Skip to content
Snippets Groups Projects
Commit f9cc382b authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-3539-new-settings-for-mail-notification' (#126) from...

Merge pull request 'OZG-3539-new-settings-for-mail-notification' (#126) from OZG-3539-new-settings-for-mail-notification into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/user-manager/pulls/126


Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
parents 741f1bde dbca6c25
No related branches found
No related tags found
No related merge requests found
Showing
with 377 additions and 24 deletions
......@@ -46,6 +46,8 @@
<ozgcloud.license.version>1.6.0</ozgcloud.license.version>
<lombok.version>1.18.34</lombok.version>
<quarkus.mongock.version>0.3.0</quarkus.mongock.version>
<!-- plugins -->
<maven.compiler.release>21</maven.compiler.release>
<jandex-maven-plugin-version>1.2.3</jandex-maven-plugin-version>
......
......@@ -122,6 +122,11 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkiverse.mongock</groupId>
<artifactId>quarkus-mongock</artifactId>
<version>${quarkus.mongock.version}</version>
</dependency>
<!-- Logging -->
<dependency>
......
......@@ -50,6 +50,8 @@ import lombok.ToString;
@RegisterForReflection
public class User {
public static final String COLLECTION_NAME = "User";
public static final String EXTERNAL_ID_FIELD = "externalId";
public static final String KEYCLOAK_USER_ID = "keycloakUserId";
public static final String EMAIL_FIELD = "email";
......@@ -61,7 +63,7 @@ public class User {
public static final String FULL_NAME_REVERSED_FIELD = "fullNameReversed";
public static final String USERNAME_FIELD = "username";
public static final String ORGANISATIONS_EINHEIT_IDS_FIELD = "organisationsEinheitIds";
public static final String NOTIFICATION_SEND_FOR_FIELD = "userSettings.notificationsSendFor";
public static final String USER_SETTINGS_FIELD = "userSettings";
@JsonIgnore
@BsonId
......
......@@ -23,19 +23,22 @@
*/
package de.ozgcloud.user;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.apache.commons.lang3.StringUtils;
import de.ozgcloud.common.logging.OzgCloudLogging;
import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
import de.ozgcloud.user.common.errorhandling.TechnicalException;
import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
import de.ozgcloud.user.settings.UserSettings;
import io.smallrye.mutiny.Uni;
import io.smallrye.mutiny.infrastructure.Infrastructure;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
@ApplicationScoped
@OzgCloudLogging
......@@ -48,10 +51,17 @@ public class UserService {
public User save(User user) {
findUser(user).ifPresentOrElse(persistedUser -> repository.updateUser(addIdUser(user, persistedUser)),
() -> repository.persist(user));
() -> saveNewUser(user));
return repository.refresh(user);
}
void saveNewUser(User user) {
if (Objects.isNull(user.getUserSettings())) {
user.setUserSettings(UserSettings.createDefault());
}
repository.persist(user);
}
public Stream<User> findUsers(FindUserProfilesQuery query) {
return repository.findUsers(query.getSearchBy(), query.getLimit());
}
......@@ -79,8 +89,7 @@ public class UserService {
}
private Optional<User> findUser(User user) {
return repository.findByExternalId(user.getExternalId())
.or(() -> findByEmail(user.getEmail()));
return repository.findByExternalId(user.getExternalId()).or(() -> findByEmail(user.getEmail()));
}
private Optional<User> findByEmail(String email) {
......
package de.ozgcloud.user.common;
public class DocumentUtils {
public static String buildFieldPath(String... fields) {
return String.join(".", fields);
}
}
package de.ozgcloud.user.common.migration;
import static de.ozgcloud.user.common.DocumentUtils.*;
import java.util.Map;
import org.bson.Document;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import de.ozgcloud.user.User;
import de.ozgcloud.user.settings.UserSettings;
import io.mongock.api.annotations.ChangeUnit;
import io.mongock.api.annotations.Execution;
import io.mongock.api.annotations.RollbackExecution;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@ChangeUnit(id = "2024-09-22 12:00:00 OZG-3539", order = "M001", author = "sbergandy", systemVersion = "1")
public class M001_SetNewAndMigrateUserSettings {
private final MongoDatabase mongoDatabase;
@Execution
public void migrationMethod() {
var userCollection = mongoDatabase.getCollection(User.COLLECTION_NAME);
migrateNotificationsSendForALL(userCollection);
migrateNotificationsSendForNONE(userCollection);
migrateEmptySettings(userCollection);
}
private void migrateNotificationsSendForALL(MongoCollection<Document> userCollection) {
userCollection.updateMany(
new Document(Map.of(buildFieldPath(User.USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD), "ALL")),
new Document(Map.of("$set", Map.of(User.USER_SETTINGS_FIELD,
Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "ALL",
UserSettings.VORGANG_CREATED_FIELD, true,
UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true)))));
}
private void migrateNotificationsSendForNONE(MongoCollection<Document> userCollection) {
userCollection.updateMany(
new Document(Map.of(buildFieldPath(User.USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD), "NONE")),
new Document(Map.of("$set", Map.of(User.USER_SETTINGS_FIELD,
Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
UserSettings.VORGANG_CREATED_FIELD, false,
UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true)))));
}
private void migrateEmptySettings(MongoCollection<Document> userCollection) {
userCollection.updateMany(
new Document(Map.of(buildFieldPath(User.USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD), Map.of("$exists", false))),
new Document(Map.of("$set", Map.of(User.USER_SETTINGS_FIELD,
Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
UserSettings.VORGANG_CREATED_FIELD, false,
UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true)))));
}
@RollbackExecution
public void rollback() {
// kein rollback implementiert
}
}
......@@ -4,17 +4,21 @@ import static de.ozgcloud.user.User.*;
import java.util.List;
import jakarta.enterprise.context.ApplicationScoped;
import de.ozgcloud.common.logging.OzgCloudLogging;
import de.ozgcloud.user.User;
import de.ozgcloud.user.common.DocumentUtils;
import de.ozgcloud.user.settings.NotificationsSendFor;
import de.ozgcloud.user.settings.UserSettings;
import io.quarkus.mongodb.panache.PanacheMongoRepository;
import jakarta.enterprise.context.ApplicationScoped;
@ApplicationScoped
@OzgCloudLogging
class RecipientRepository implements PanacheMongoRepository<User> {
private static final String SEARCH_RECIPIENT_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and " + NOTIFICATION_SEND_FOR_FIELD + " = ?2";
private static final String SEARCH_RECIPIENT_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and "
+ DocumentUtils.buildFieldPath(USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD) + " = ?2";
public List<User> findByOrganisationsEinheitId(String organisationseinheitId) {
return find(SEARCH_RECIPIENT_QUERY, organisationseinheitId, NotificationsSendFor.ALL.name()).list();
......
......@@ -26,17 +26,35 @@ package de.ozgcloud.user.settings;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@AllArgsConstructor
public class UserSettings {
static final String NOTIFICATIONS_SEND_FOR_FIELD = "notificationsSendFor";
public static final String NOTIFICATIONS_SEND_FOR_FIELD = "notificationsSendFor";
public static final String VORGANG_CREATED_FIELD = "vorgangCreated";
public static final String VORGANG_ASSIGNED_TO_USER_FIELD = "vorgangAssignedToUser";
public static final String POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD = "postfachNachrichtFromAntragsteller";
public static final String WIEDERVORLAGE_OVERDUE_FIELD = "wiedervorlageOverdue";
private NotificationsSendFor notificationsSendFor;
private boolean vorgangCreated;
private boolean vorgangAssignedToUser;
private boolean postfachNachrichtFromAntragsteller;
private boolean wiedervorlageOverdue;
public UserSettings(NotificationsSendFor notificationsSendFor) {
this(notificationsSendFor, notificationsSendFor == NotificationsSendFor.ALL, true, true, true);
}
public UserSettings() {
this(NotificationsSendFor.NONE);
}
public static UserSettings createDefault() {
return new UserSettings();
}
}
......@@ -25,8 +25,6 @@ package de.ozgcloud.user.settings;
import java.util.Objects;
import de.ozgcloud.user.common.errorhandling.AccessForbiddenException;
import de.ozgcloud.user.common.errorhandling.FunctionalException;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.PATCH;
......@@ -43,6 +41,8 @@ import org.jboss.resteasy.reactive.common.util.RestMediaType;
import de.ozgcloud.user.User;
import de.ozgcloud.user.UserService;
import de.ozgcloud.user.common.errorhandling.AccessForbiddenException;
import de.ozgcloud.user.common.errorhandling.FunctionalException;
import io.quarkus.hal.HalEntityWrapper;
@Path(UserSettingsResource.USER_PATH)
......@@ -86,7 +86,7 @@ public class UserSettingsResource {
throw new FunctionalException(() -> "Request Body missing.");
}
return userSettingsService.updateByUserId(userSettings, userId)
return userSettingsService.updateByUserId(userId, userSettings)
.map(updatedSettings -> resourceAssembler.toResource(updatedSettings, userId, userManagerUrl))
.orElseThrow(() -> new FunctionalException(() -> "Invalid user id"));
}
......
......@@ -40,8 +40,9 @@ class UserSettingsService {
@Inject
UserSettingsRepository repository;
public Optional<UserSettings> updateByUserId(UserSettings userSettings, String userId) {
return repository.updateByUserId(userId, userSettings);
public Optional<UserSettings> updateByUserId(String userId, UserSettings newSettings) {
var settings = newSettings.toBuilder().vorgangCreated(newSettings.getNotificationsSendFor() == NotificationsSendFor.ALL).build();
return repository.updateByUserId(userId, settings);
}
public UserSettings getByUserId(String userId) {
......
......@@ -34,6 +34,9 @@ quarkus:
management:
enabled: true
port: 9002
mongock:
migrate-at-start: true
transaction-enabled: false
grpc:
server:
......
......@@ -45,6 +45,8 @@ import org.mockito.Spy;
import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
import de.ozgcloud.user.common.errorhandling.TechnicalException;
import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
import de.ozgcloud.user.settings.NotificationsSendFor;
import de.ozgcloud.user.settings.UserSettings;
class UserServiceTest {
......@@ -365,4 +367,36 @@ class UserServiceTest {
assertThatNoException().isThrownBy(() -> service.assertInactiveUser(user.build()));
}
}
@Nested
class TestSaveNewUser {
@Test
void shouldSetDefaultUserSettings() {
var user = UserTestFactory.createBuilder().userSettings(null).build();
service.saveNewUser(user);
assertThat(user.getUserSettings()).usingRecursiveComparison().isEqualTo(UserSettings.createDefault());
}
@Test
void shouldNotSetDefaultUserSettings() {
var settings = UserSettings.builder().notificationsSendFor(NotificationsSendFor.ALL).build();
var user = createBuilder().userSettings(settings).build();
service.saveNewUser(user);
assertThat(user.getUserSettings()).isEqualTo(settings);
}
@Test
void shouldPersistUser() {
var user = UserTestFactory.create();
service.saveNewUser(user);
verify(repository).persist(user);
}
}
}
\ No newline at end of file
package de.ozgcloud.user.common.migration;
import static org.assertj.core.api.Assertions.*;
import java.util.Map;
import jakarta.inject.Inject;
import org.bson.Document;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import de.ozgcloud.user.User;
import de.ozgcloud.user.common.MongoDbTestProfile;
import de.ozgcloud.user.settings.UserSettings;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
@QuarkusTest
@TestProfile(MongoDbTestProfile.class)
class M001_SetNewAndMigrateUserSettingsITCase {
@ConfigProperty(name = "quarkus.mongodb.database")
String database;
@Inject
MongoClient mongoClient;
private M001_SetNewAndMigrateUserSettings migration;
private MongoCollection<Document> userCollection;
@BeforeEach
void setUp() {
migration = new M001_SetNewAndMigrateUserSettings(mongoClient.getDatabase(database));
}
@BeforeEach
void initDatabase() {
userCollection = mongoClient.getDatabase(database).getCollection(User.COLLECTION_NAME);
userCollection.drop();
userCollection.insertOne(new Document(
Map.of(User.USERNAME_FIELD, "alluser",
User.USER_SETTINGS_FIELD, Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "ALL"))));
userCollection.insertOne(new Document(Map.of(User.USERNAME_FIELD, "noneuser",
User.USER_SETTINGS_FIELD, Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE"))));
userCollection.insertOne(new Document(Map.of(User.USERNAME_FIELD, "nosettings")));
}
@Test
void shouldMigrateNotificationSendFor_ALL() {
migration.migrationMethod();
var user = userCollection.find(new Document(Map.of(User.USERNAME_FIELD, "alluser")));
assertThat(user.first()).contains(
entry(User.USER_SETTINGS_FIELD, new Document(Map.of(
UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "ALL",
UserSettings.VORGANG_CREATED_FIELD, true,
UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true))));
}
@Test
void shouldMigrateNotificationSendFor_NONE() {
migration.migrationMethod();
var user = userCollection.find(new Document(Map.of(User.USERNAME_FIELD, "noneuser")));
assertThat(user.first()).contains(
entry(User.USER_SETTINGS_FIELD, new Document(Map.of(
UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
UserSettings.VORGANG_CREATED_FIELD, false,
UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true))));
}
@Test
void shouldSetDefaultSettings() {
migration.migrationMethod();
var user = userCollection.find(new Document(Map.of(User.USERNAME_FIELD, "nosettings")));
assertThat(user.first()).contains(
entry(User.USER_SETTINGS_FIELD, new Document(Map.of(
UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
UserSettings.VORGANG_CREATED_FIELD, false,
UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true))));
}
}
\ No newline at end of file
......@@ -37,7 +37,9 @@ import org.mockito.Spy;
import de.ozgcloud.user.User;
import de.ozgcloud.user.UserTestFactory;
import de.ozgcloud.user.common.DocumentUtils;
import de.ozgcloud.user.settings.NotificationsSendFor;
import de.ozgcloud.user.settings.UserSettings;
import io.quarkus.mongodb.panache.PanacheQuery;
class RecipientRepositoryTest {
......@@ -50,7 +52,8 @@ class RecipientRepositoryTest {
@DisplayName("Test finding users by Organistationseinheit")
@Nested
class TestFindByOrganisationsEinheit {
private static final String QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and " + NOTIFICATION_SEND_FOR_FIELD + " = ?2";
private static final String QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and "
+ DocumentUtils.buildFieldPath(USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD) + " = ?2";
@Test
void shouldCallFind() {
......
......@@ -168,7 +168,7 @@ class UserSettingsResourceTest {
@BeforeEach
void mockAccess() {
doNothing().when(resource).checkUserAccess(anyString());
when(userSettingsService.updateByUserId(any(UserSettings.class), anyString())).thenReturn(Optional.of(updatedUserSettings));
when(userSettingsService.updateByUserId(anyString(), any(UserSettings.class))).thenReturn(Optional.of(updatedUserSettings));
}
@Test
......@@ -184,7 +184,7 @@ class UserSettingsResourceTest {
when(resourceAssembler.toResource(any(), anyString(), anyString())).thenReturn(new HalEntityWrapper(null));
resource.updateUserSettings(USER_ID, userSettings);
verify(userSettingsService).updateByUserId(userSettings, USER_ID);
verify(userSettingsService).updateByUserId(USER_ID, userSettings);
}
@Test
......
......@@ -66,7 +66,7 @@ class UserSettingsServiceITCase {
.notificationsSendFor(NotificationsSendFor.ALL)
.build();
var savedUserSettings = service.updateByUserId(userSettingsToSave, UserTestFactory.ID.toHexString());
var savedUserSettings = service.updateByUserId(UserTestFactory.ID.toHexString(), userSettingsToSave);
assertThat(savedUserSettings)
.isPresent()
......
......@@ -33,6 +33,8 @@ 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.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
......@@ -56,11 +58,54 @@ class UserSettingsServiceTest {
private final UserSettings userSettings = UserSettingsTestFactory.create();
private final String userId = UUID.randomUUID().toString();
@Captor
private ArgumentCaptor<UserSettings> userSettingsArgumentCaptor;
@Test
void shouldCallRepository() {
service.updateByUserId(userSettings, userId);
service.updateByUserId(userId, userSettings);
verify(repository).updateByUserId(eq(userId), any(UserSettings.class));
}
verify(repository).updateByUserId(userId, userSettings);
@Test
void shouldSetVorgangCreated() {
service.updateByUserId(userId, userSettings.toBuilder().notificationsSendFor(NotificationsSendFor.ALL).vorgangCreated(false).build());
verify(repository).updateByUserId(eq(userId), userSettingsArgumentCaptor.capture());
assertThat(userSettingsArgumentCaptor.getValue())
.extracting(
UserSettings::getNotificationsSendFor,
UserSettings::isVorgangCreated,
UserSettings::isVorgangAssignedToUser,
UserSettings::isPostfachNachrichtFromAntragsteller,
UserSettings::isWiedervorlageOverdue)
.containsExactly(
NotificationsSendFor.ALL,
true,
UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER,
UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER,
UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE);
}
@Test
void shouldUnsetVorgangCreated() {
service.updateByUserId(userId, userSettings.toBuilder().notificationsSendFor(NotificationsSendFor.NONE).vorgangCreated(true).build());
verify(repository).updateByUserId(eq(userId), userSettingsArgumentCaptor.capture());
assertThat(userSettingsArgumentCaptor.getValue())
.extracting(
UserSettings::getNotificationsSendFor,
UserSettings::isVorgangCreated,
UserSettings::isVorgangAssignedToUser,
UserSettings::isPostfachNachrichtFromAntragsteller,
UserSettings::isWiedervorlageOverdue)
.containsExactly(
NotificationsSendFor.NONE,
false,
UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER,
UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER,
UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE);
}
}
......
package de.ozgcloud.user.settings;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
class UserSettingsTest {
@Nested
class TestConstructor {
@Test
void shouldCreateWithVorgangCreatedSet() {
var userSettings = new UserSettings(NotificationsSendFor.ALL);
assertThat(userSettings.isVorgangCreated()).isTrue();
}
@Test
void shouldCreateWithVorgangCreatedUnset() {
var userSettings = new UserSettings(NotificationsSendFor.NONE);
assertThat(userSettings.isVorgangCreated()).isFalse();
}
@Test
void shouldCreateWithDefaultValues() {
var userSettings = new UserSettings();
assertThat(userSettings).usingRecursiveComparison().isEqualTo(UserSettings.createDefault());
}
}
@Nested
class TestCreateDefault {
@Test
void shouldHaveDefaultSettings() {
assertThat(UserSettings.createDefault()).usingRecursiveComparison().isEqualTo(
UserSettings.builder().notificationsSendFor(NotificationsSendFor.NONE).vorgangCreated(false).vorgangAssignedToUser(true)
.postfachNachrichtFromAntragsteller(true).wiedervorlageOverdue(true).build());
}
}
}
\ No newline at end of file
......@@ -26,6 +26,10 @@ package de.ozgcloud.user.settings;
public class UserSettingsTestFactory {
public static final NotificationsSendFor NOTIFICATIONS_SEND_FOR = NotificationsSendFor.NONE;
public static final boolean VORGANG_CREATED = false;
public static final boolean VORGANG_ASSIGNED_TO_USER = true;
public static final boolean POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER = true;
public static final boolean WIEDERVORLAGE_OVERDUE = true;
public static UserSettings create() {
return createBuilder().build();
......@@ -33,6 +37,10 @@ public class UserSettingsTestFactory {
public static UserSettings.UserSettingsBuilder createBuilder() {
return UserSettings.builder()
.notificationsSendFor(NOTIFICATIONS_SEND_FOR);
.notificationsSendFor(NOTIFICATIONS_SEND_FOR)
.vorgangCreated(VORGANG_CREATED)
.vorgangAssignedToUser(VORGANG_ASSIGNED_TO_USER)
.postfachNachrichtFromAntragsteller(POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER)
.wiedervorlageOverdue(WIEDERVORLAGE_OVERDUE);
}
}
\ No newline at end of file
......@@ -17,6 +17,8 @@ quarkus:
auth-server-url: https://sso.dev.by.ozg-cloud.de/realms/by-kiel-dev
management:
test-port: 9003
mongock:
enabled: false
keycloak:
url: http://localhost:8088
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment