diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index e5ac048..91e9e30 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -1,22 +1,29 @@ package mops.gruppen2.controller; +import mops.gruppen2.domain.event.CreateGroupEvent; +import mops.gruppen2.service.EventService; +import mops.gruppen2.service.GroupService; import mops.gruppen2.service.KeyCloakService; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; import javax.annotation.security.RolesAllowed; +import javax.swing.*; @Controller @RequestMapping("/gruppen2") public class Gruppen2Controller { private final KeyCloakService keyCloakService; + private final EventService eventService; + private final GroupService groupService; - public Gruppen2Controller(KeyCloakService keyCloakService) { + public Gruppen2Controller(KeyCloakService keyCloakService, EventService eventService, GroupService groupService) { this.keyCloakService = keyCloakService; + this.eventService = eventService; + this.groupService = groupService; } /**Zeigt die index.html an. @@ -31,4 +38,32 @@ public class Gruppen2Controller { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); return "index"; } + + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("/createGroup") + public String createGroup(KeycloakAuthenticationToken token, Model model) { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + return "create"; + } + + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("/findGroup") + public String findGroup(KeycloakAuthenticationToken token, Model model) { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + return "search"; + } + + @PostMapping("/createGroup") + public String pCreateGroup(KeycloakAuthenticationToken token, + @RequestParam(value = "title") String title, + @RequestParam(value = "beschreibung") String beschreibung) { + + //Hier muss alles in eine separate Klasse + CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), "faker", title, beschreibung); + eventService.saveEvent(createGroupEvent); + groupService.buildGroupFromEvent(createGroupEvent); + + return "redirect:/"; + } + } diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIController.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIController.java index a0b2253..687625e 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIController.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIController.java @@ -1,10 +1,13 @@ package mops.gruppen2.controller; +import com.fasterxml.jackson.core.JsonProcessingException; import com.github.javafaker.Faker; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import mops.gruppen2.domain.ProductSwaggerExample; +import mops.gruppen2.domain.event.AddUserEvent; +import mops.gruppen2.service.SerializationService; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -19,6 +22,11 @@ public class SwaggerAPIController { private final Faker faker = new Faker(); private final List products = new ArrayList<>(); + private final SerializationService serializationService; + + public SwaggerAPIControllerExample(SerializationService serializationService) { + this.serializationService = serializationService; + } @GetMapping("/get/all") @ApiOperation(value = "Erzeugt eine Liste mit allen gespeicherten Produkten") @@ -44,4 +52,5 @@ public class SwaggerAPIController { return "Product saved successfully"; } + } diff --git a/src/main/java/mops/gruppen2/domain/EventDTO.java b/src/main/java/mops/gruppen2/domain/EventDTO.java new file mode 100644 index 0000000..df78071 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/EventDTO.java @@ -0,0 +1,15 @@ +package mops.gruppen2.domain; + +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.relational.core.mapping.Table; + +@Table("event") +@Data +public class EventDTO { + @Id + Long event_id; + Long group_id; + String user_id; + String event_payload; +} diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index fd66ee9..1fd066d 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -1,27 +1,29 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; import mops.gruppen2.domain.User; /** * Fügt einen einzelnen Nutzer einer Gruppe hinzu. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class AddUserEvent extends Event { String givenname; String familyname; String email; - public AddUserEvent(long event_id, long group_id, String user_id, String givenname, String familyname, String email) { + public AddUserEvent(Long event_id, Long group_id, String user_id, String givenname, String familyname, String email) { super(event_id, group_id, user_id); this.givenname = givenname; this.familyname = familyname; this.email = email; } - public AddUserEvent(long event_id, long group_id, User user) { + public AddUserEvent(Long event_id, Long group_id, User user) { super(event_id, group_id, user.getUser_id()); this.givenname = user.getGivenname(); this.familyname = user.getFamilyname(); diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index 1f2a3e1..eaef7ff 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -1,17 +1,24 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class CreateGroupEvent extends Event { String groupTitle; String groupDescription; - public CreateGroupEvent(long event_id, long group_id, String user_id, String groupTitle, String groupDescription) { + public CreateGroupEvent(long event_id, Long group_id, String user_id, String groupTitle, String groupDescription) { super(event_id, group_id, user_id); this.groupTitle = groupTitle; this.groupDescription = groupDescription; } + public CreateGroupEvent(Long group_id, String user_id, String groupTitle, String groupDescription) { + super(group_id, user_id); + this.groupTitle = groupTitle; + this.groupDescription = groupDescription; + } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 366dae2..080004a 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,16 +1,14 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.*; /** * Entfernt ein einzelnes Mitglied einer Gruppe. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter public class DeleteUserEvent extends Event { - public DeleteUserEvent(long event_id, long group_id, String user_id) { + public DeleteUserEvent(Long event_id, Long group_id, String user_id) { super(event_id, group_id, user_id); } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 6835d96..be5b292 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -1,12 +1,35 @@ package mops.gruppen2.domain.event; -import lombok.Value; -import lombok.experimental.NonFinal; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; -@Value -@NonFinal + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@JsonTypeInfo( + include = JsonTypeInfo.As.PROPERTY, + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = AddUserEvent.class, name = "AddUserEvent"), + @JsonSubTypes.Type(value = CreateGroupEvent.class, name = "CreateGroupEvent"), + @JsonSubTypes.Type(value = DeleteUserEvent.class, name = "DeleteUserEvent"), + @JsonSubTypes.Type(value = UpdateGroupDescriptionEvent.class, name = "UpdateGroupDescriptionEvent"), + @JsonSubTypes.Type(value = UpdateGroupTitleEvent.class, name = "UpdateGroupTitleEvent"), + @JsonSubTypes.Type(value = UpdateRoleEvent.class, name = "UpdateRoleEvent"), +}) public class Event { - long event_id; - long group_id; + Long event_id; + Long group_id; String user_id; + + public Event(Long group_id,String user_id){ + this.group_id = group_id; + this.user_id = user_id; + } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index d4bc16c..6387a7d 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -1,17 +1,19 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; /** * Ändert nur die Gruppenbeschreibung. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateGroupDescriptionEvent extends Event { String newGroupDescription; - public UpdateGroupDescriptionEvent(long event_id, long group_id, String user_id, String newGroupDescription) { + public UpdateGroupDescriptionEvent(Long event_id, Long group_id, String user_id, String newGroupDescription) { super(event_id, group_id, user_id); this.newGroupDescription = newGroupDescription; } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index 4f78f17..d57b609 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -1,17 +1,19 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; /** * Ändert nur den Gruppentitel. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateGroupTitleEvent extends Event { String newGroupTitle; - public UpdateGroupTitleEvent(long event_id, long group_id, String user_id, String newGroupTitle) { + public UpdateGroupTitleEvent(Long event_id, Long group_id, String user_id, String newGroupTitle) { super(event_id, group_id, user_id); this.newGroupTitle = newGroupTitle; } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index ae8bd5e..a4301de 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,19 +1,19 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.*; import mops.gruppen2.domain.Role; /** * Aktualisiert die Gruppenrolle eines Teilnehmers. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateRoleEvent extends Event { Role newRole; - public UpdateRoleEvent(long event_id, long group_id, String user_id, Role newRole) { + public UpdateRoleEvent(Long event_id, Long group_id, String user_id, Role newRole) { super(event_id, group_id, user_id); this.newRole = newRole; diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 0e04761..c4b1249 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -1,7 +1,7 @@ package mops.gruppen2.repository; -import mops.gruppen2.domain.event.Event; +import mops.gruppen2.domain.EventDTO; import org.springframework.data.repository.CrudRepository; -public interface EventRepository extends CrudRepository { +public interface EventRepository extends CrudRepository { } diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java new file mode 100644 index 0000000..0c1e879 --- /dev/null +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -0,0 +1,51 @@ +package mops.gruppen2.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.domain.EventDTO; +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.springframework.stereotype.Service; + +@Service +public class EventService { + private final SerializationService serializationService; + private final EventRepository eventStore; + + public EventService(SerializationService serializationService, EventRepository eventStore) { + this.serializationService = serializationService; + this.eventStore = eventStore; + } + + + public void saveEvent(Event event){ + EventDTO eventDTO = getDTO(event); + eventStore.save(eventDTO); + + } + + public EventDTO getDTO(Event event){ + EventDTO eventDTO = new EventDTO(); + eventDTO.setGroup_id(event.getGroup_id()); + eventDTO.setUser_id(event.getUser_id()); + try { + eventDTO.setEvent_payload(serializationService.serializeEvent(event)); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return eventDTO; + } + + public Long checkGroup() { + Long tmpId = 1L; + Iterable eventDTOS = eventStore.findAll(); + for (EventDTO event : eventDTOS) { + if (event.getGroup_id() == null) { + return tmpId; + } + if (tmpId <= event.getGroup_id()) { + tmpId++; + } + } + return tmpId; + } +} diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 06356fa..1347334 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -13,7 +13,6 @@ public class GroupService { /** * Konstruiert eine vollständige Gruppe aus Events, welche dieselbe Gruppe betreffen. * - * @param event Initiales CreateGroup-Event * @param eventList Die restlichen Events für diese Gruppe * @return Gruppe auf aktuellem Stand */ diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index 8d3452c..1737ccc 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -1,5 +1,12 @@ package mops.gruppen2.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import mops.gruppen2.domain.EventDTO; +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; /** @@ -7,4 +14,21 @@ import org.springframework.stereotype.Service; */ @Service public class SerializationService { + + private final EventRepository eventStore; + private final Logger log = LoggerFactory.getLogger(SerializationService.class); + + public SerializationService(EventRepository eventStore) { + this.eventStore = eventStore; + } + + public String serializeEvent(Event event) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(event); + } + + public Event deserializeEvent(String json) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(json, Event.class); + } } diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html new file mode 100644 index 0000000..5f28fb5 --- /dev/null +++ b/src/main/resources/templates/create.html @@ -0,0 +1,50 @@ + + + + + Name des Subsystems + + + + + +
+ +
+
+

Gruppenerstellung

+
+
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index b9f629d..20ff1c4 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -1,6 +1,6 @@ + th:replace="~{mopslayout :: html(name='Gruppenbildung', headcontent=~{:: headcontent}, navigation=~{:: navigation}, bodycontent=~{:: bodycontent})}"> Name des Subsystems @@ -10,12 +10,30 @@
- +
- +

Meine Gruppen

+
+
+
+

Titel der Gruppe

+

Beschreibung der Gruppe ...

+
+
+
\ No newline at end of file diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html new file mode 100644 index 0000000..c722a7d --- /dev/null +++ b/src/main/resources/templates/search.html @@ -0,0 +1,81 @@ + + + + + Name des Subsystems + + + + + +
+ +
+
+
+
+

Gruppensuche

+
+
+
+
+ + +
+
+ Öffentliche Gruppen + Private Gruppen +
+ Suchbegriff im Namen + Suchbegriff in der Beschreibung + Suchbegriff in der Veranstaltung +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GruppennameBeschreibungÖffentlich/PrivatMitgliederanzahl
LA1 KursgruppeGruppe für den Kurs LA1Öffentlich318
Lerngruppe LA1Lerngruppe zur Bearbeitung von ÜbungszettelnPrivat6
+
+
+
+
+ + \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/builder/EventBuilder.java b/src/test/java/mops/gruppen2/builder/EventBuilder.java new file mode 100644 index 0000000..a06fdf7 --- /dev/null +++ b/src/test/java/mops/gruppen2/builder/EventBuilder.java @@ -0,0 +1,92 @@ +package mops.gruppen2.builder; + +import com.github.javafaker.Faker; +import mops.gruppen2.domain.Role; +import mops.gruppen2.domain.event.*; + +import java.util.ArrayList; +import java.util.List; + +public class EventBuilder { + + public static CreateGroupEvent randomCreateGroupEvent() { + Faker faker = new Faker(); + + return new CreateGroupEvent( + faker.random().nextLong(), + faker.random().nextLong(), + faker.random().hex(), + faker.leagueOfLegends().champion(), + faker.leagueOfLegends().quote() + ); + } + + public static AddUserEvent randomAddUserEvent() { + Faker faker = new Faker(); + + String firstname = faker.name().firstName(); + String lastname = faker.name().lastName(); + + return new AddUserEvent( + faker.random().nextLong(), + faker.random().nextLong(), + faker.random().hex(), + firstname, + lastname, + firstname + "." + lastname + "@mail.de" + ); + } + + public static List randomAddUserEvents(int count) { + List eventList = new ArrayList<>(); + + for (int i = 0; i < count; i++) { + eventList.add(EventBuilder.randomAddUserEvent()); + } + + return eventList; + } + + public static DeleteUserEvent randomDeleteUserEvent(long group_id, String user_id) { + Faker faker = new Faker(); + + return new DeleteUserEvent( + faker.random().nextLong(), + group_id, + user_id + ); + } + + public static UpdateGroupDescriptionEvent randomUpdateGroupDescriptionEvent(long group_id) { + Faker faker = new Faker(); + + return new UpdateGroupDescriptionEvent( + faker.random().nextLong(), + group_id, + faker.random().hex(), + faker.leagueOfLegends().quote() + ); + } + + public static UpdateGroupTitleEvent randomUpdateGroupTitleEvent(long group_id) { + Faker faker = new Faker(); + + return new UpdateGroupTitleEvent( + faker.random().nextLong(), + group_id, + faker.random().hex(), + faker.leagueOfLegends().champion() + ); + } + + public static UpdateRoleEvent randomUpdateRoleEvent(long group_id, String user_id, Role role) { + Faker faker = new Faker(); + + return new UpdateRoleEvent( + faker.random().nextLong(), + group_id, + user_id, + role + ); + } +} diff --git a/src/test/java/mops/gruppen2/service/EventServiceTest.java b/src/test/java/mops/gruppen2/service/EventServiceTest.java new file mode 100644 index 0000000..7506c3b --- /dev/null +++ b/src/test/java/mops/gruppen2/service/EventServiceTest.java @@ -0,0 +1,7 @@ +package mops.gruppen2.service; + +import static org.junit.jupiter.api.Assertions.*; + +class EventServiceTest { + +} \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java new file mode 100644 index 0000000..bcb95df --- /dev/null +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -0,0 +1,57 @@ +package mops.gruppen2.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.builder.EventBuilder; +import mops.gruppen2.domain.event.AddUserEvent; +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +class SerializationServiceTest { + + + @BeforeEach + public void setUp() { + } + + + @Test + void serializeEventTest() { + event = new Event(1L,1L,"1"); + + SerializationService serializationService = new SerializationService(eventRepository); + + try { + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"Event\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + + @Test + void deserializeAddUserEvent() throws JsonProcessingException { + SerializationService serializationService = new SerializationService(mock(EventRepository.class)); + + String json = "{\"type\":\"Event\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"; + + Event event = serializationService.deserializeEvent(json); + + assertThat(event).isInstanceOf(Event.class); + } + + @Test + void serializeEventTestAddUserEvent(){ + AddUserEvent event = new AddUserEvent(1,1,"user_id","peter","mueller","a@a"); + SerializationService serializationService = new SerializationService(mock(EventRepository.class)); + try { + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"AddUserEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"user_id\",\"givenname\":\"peter\",\"familyname\":\"mueller\",\"email\":\"a@a\"}"); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } +}