SI-1140 UnitTests
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationPublicationChannelDto.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationPublicationChannelDto.java
index 3a4b1a1..019b4f3 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationPublicationChannelDto.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationPublicationChannelDto.java
@@ -14,6 +14,7 @@
  */
 package org.eclipse.openk.gridfailureinformation.viewmodel;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -21,7 +22,7 @@
 
 @Data
 public class FailureInformationPublicationChannelDto implements Serializable {
-
+    @JsonProperty("id")
     private UUID failureInformationId;
     private String publicationChannel;
     boolean published;
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java
index e6c5506..a3d6137 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java
@@ -18,9 +18,11 @@
 import org.eclipse.openk.gridfailureinformation.GridFailureInformationApplication;
 import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState;
 import org.eclipse.openk.gridfailureinformation.exceptions.NotFoundException;
+import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationPublicationChannel;
 import org.eclipse.openk.gridfailureinformation.service.FailureInformationService;
 import org.eclipse.openk.gridfailureinformation.support.MockDataHelper;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationPublicationChannelDto;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
@@ -170,6 +172,33 @@
                 .andExpect(status().is2xxSuccessful());
     }
 
+
+    @Test
+    public void shouldInsertPublicationChannelForFailureInfo() throws Exception {
+
+        FailureInformationPublicationChannelDto publicationChannel = MockDataHelper.mockFailureInformationPublicationChannelDto();
+
+        when (failureInformationService.insertPublicationChannelForFailureInfo(any(UUID.class),anyString())).thenReturn(publicationChannel);
+
+        mockMvc.perform(post("/grid-failure-informations/{uuid}/channels?publicationChannel=MOCKMAIL", UUID.randomUUID().toString())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(publicationChannel)))
+                .andExpect(status().is2xxSuccessful());
+    }
+
+    @Test
+    public void shouldDeletePublicationChannelForFailureInfo() throws Exception {
+
+        FailureInformationPublicationChannelDto publicationChannel = MockDataHelper.mockFailureInformationPublicationChannelDto();
+
+        doNothing().when(failureInformationService).deletePublicationChannelForFailureInfo(any(UUID.class),anyString());
+
+        mockMvc.perform(delete("/grid-failure-informations/{uuid}/channels?publicationChannel=MOCKMAIL", UUID.randomUUID().toString())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(publicationChannel)))
+                .andExpect(status().is2xxSuccessful());
+    }
+
     @Test
     public void shouldCondenseFailureInformations() throws Exception {
         List<UUID> uuidList = new ArrayList<>();
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
index 4a190cb..e7cfd82 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
@@ -23,7 +23,9 @@
 import org.eclipse.openk.gridfailureinformation.repository.*;
 import org.eclipse.openk.gridfailureinformation.support.MockDataHelper;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationPublicationChannelDto;
 import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
 import org.mockito.stubbing.Answer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -39,6 +41,7 @@
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.when;
 
 @DataJpaTest
@@ -718,4 +721,48 @@
         assertThrows(BadRequestException.class, () -> failureInformationService.updateSubordinatedFailureInfos(UUID.randomUUID(), subordinatedFiUuidList));
     }
 
+    @Test
+    public void shouldInsertPublicationChannelForFailureInfo(){
+
+        TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+        TblFailureInformationPublicationChannel tblChannel = MockDataHelper.mockTblFailureInformationPublicationChannel2();
+
+        when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+        when(failureInformationPublicationChannelRepository.countByTblFailureInformationAndPublicationChannel(any(TblFailureInformation.class), anyString())).thenReturn(0);
+        when(failureInformationPublicationChannelRepository.save(any(TblFailureInformationPublicationChannel.class))).thenReturn(tblChannel);
+
+        FailureInformationPublicationChannelDto channelDto = failureInformationService.insertPublicationChannelForFailureInfo(tblFailureInformation.getUuid(), tblChannel.getPublicationChannel() );
+
+        assertEquals(tblChannel.getTblFailureInformation().getUuid(), channelDto.getFailureInformationId());
+        assertEquals(tblChannel.getPublicationChannel(), channelDto.getPublicationChannel());
+    }
+
+    @Test
+    public void shouldNotInsertPublicationChannelForFailureInfo_channelAlreadyExisting(){
+
+        TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+        TblFailureInformationPublicationChannel tblChannel = MockDataHelper.mockTblFailureInformationPublicationChannel2();
+
+        when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+        when(failureInformationPublicationChannelRepository.countByTblFailureInformationAndPublicationChannel(any(TblFailureInformation.class), anyString())).thenReturn(1);
+        when(failureInformationPublicationChannelRepository.save(any(TblFailureInformationPublicationChannel.class))).thenReturn(tblChannel);
+
+        assertThrows(BadRequestException.class, () -> failureInformationService.insertPublicationChannelForFailureInfo(tblFailureInformation.getUuid(), tblChannel.getPublicationChannel()));
+    }
+
+    @Test
+    public void shouldDeletePublicationChannelForFailureInfo(){
+
+        TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+        TblFailureInformationPublicationChannel tblChannel = MockDataHelper.mockTblFailureInformationPublicationChannel2();
+
+        when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+        when(failureInformationPublicationChannelRepository.findByTblFailureInformationAndPublicationChannel(any(TblFailureInformation.class), anyString())).thenReturn(Optional.of(tblChannel));
+
+        Mockito.doNothing().when(failureInformationPublicationChannelRepository).delete( any(TblFailureInformationPublicationChannel.class));
+        failureInformationService.deletePublicationChannelForFailureInfo(tblFailureInformation.getUuid(), tblChannel.getPublicationChannel());
+
+        Mockito.verify(failureInformationPublicationChannelRepository, times(1)).delete( tblChannel );
+    }
+
 }
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
index 1361769..0ae9daa 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
@@ -1279,6 +1279,14 @@
         return tfipChannel;
     }
 
+    public static FailureInformationPublicationChannelDto mockFailureInformationPublicationChannelDto(){
+        FailureInformationPublicationChannelDto fipChannelDto = new FailureInformationPublicationChannelDto();
+        fipChannelDto.setFailureInformationId(UUID.randomUUID());
+        fipChannelDto.setPublicationChannel("MOCKMAIL");
+        fipChannelDto.setPublished(false);
+        return fipChannelDto;
+    }
+
     public static List<TblFailureInformationPublicationChannel> mockTblFailureInformationPublicationChannelList(){
         List<TblFailureInformationPublicationChannel> channelList = new LinkedList<>();
         channelList.add(mockTblFailureInformationPublicationChannel());