From 99c34f67053fed1c69d7cc022fa2f0f72ed66c13 Mon Sep 17 00:00:00 2001
From: Michael Breu <Michael.Breu@arctis.at>
Date: Fri, 2 Aug 2024 16:23:24 +0200
Subject: [PATCH] Adding tests

---
 .../gitlab_events/GitlabEventServiceIT.java   | 24 +++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/test/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventServiceIT.java b/src/test/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventServiceIT.java
index 4ccc7856c..5ccd6feeb 100644
--- a/src/test/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventServiceIT.java
+++ b/src/test/java/at/ac/uibk/gitsearch/service/gitlab_events/GitlabEventServiceIT.java
@@ -10,6 +10,7 @@ import static org.mockito.Mockito.verify;
 import at.ac.uibk.gitsearch.GitsearchApp;
 import at.ac.uibk.gitsearch.repository.gitlab.GitLabRepository;
 import at.ac.uibk.gitsearch.repository.search.ElasticSearchRepository;
+import at.ac.uibk.gitsearch.repository.search.MetaDataRepository;
 import at.ac.uibk.gitsearch.repository.search.SearchRepositoryConstants;
 import at.ac.uibk.gitsearch.repository.search.testESService.ElasticSearchTestConfiguration;
 import at.ac.uibk.gitsearch.service.MailService;
@@ -28,8 +29,10 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 import javax.el.MethodNotFoundException;
@@ -51,6 +54,8 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
 import org.springframework.security.test.context.support.WithMockUser;
 
 @SpringBootTest(classes = GitsearchApp.class)
@@ -67,6 +72,9 @@ public class GitlabEventServiceIT {
   @Autowired
   protected GitlabEventService eventService;
 
+  @Autowired
+  protected MetaDataRepository metaDataRepository;
+
   @MockBean
   private MailService mailService;
 
@@ -118,17 +126,25 @@ public class GitlabEventServiceIT {
 
   @Test
   @Timeout(value = 30, unit = TimeUnit.MINUTES)
-  void simplePermissionTest() throws StreamReadException, DatabindException, IOException, GitLabApiException {
+  @WithMockUser(value = "Michael Breu", authorities = "teacher/unauthenticatedteachers")
+  void simplePermissionTest() throws StreamReadException, DatabindException, IOException, GitLabApiException, ParseException {
     SystemHookEvent permissionCommitEvent = getPermissionCommitEvent();
     Mockito.reset(mailService);
     Mockito
       .when(mailService.sendEmail(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.eq(false), Mockito.eq(true)))
       .thenReturn(Boolean.TRUE);
 
-    logger.info("starting handleGitLabEvent for {}", permissionCommitEvent);
+    logger.info("starting permissionCommitEvent for {}", permissionCommitEvent);
     eventService.handleGitLabEvent(permissionCommitEvent);
     eventService.waitForFinish();
-    logger.info("finished handleGitLabEvent for {}", permissionCommitEvent);
+
+    User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+    metaDataRepository.getExerciseById("[274]", Optional.of(user));
+
+    final SearchResultDTO exercise = metaDataRepository.getExerciseById("[274]", Optional.of(user));
+    logger.info("finished permissionCommitEvent for {}", exercise);
+    assertThat(exercise.getProject().getGroups()).contains("teacher", "teacher/unauthenticatedteachers");
+    assertThat(exercise.getProject().getUsers()).contains("simon.priller@uibk.ac.at");
   }
 
   @Test
@@ -228,7 +244,7 @@ public class GitlabEventServiceIT {
   }
 
   @Test
-  @Timeout(value = 30, unit = TimeUnit.MINUTES)
+  @Timeout(value = 1, unit = TimeUnit.MINUTES)
   void simpleDeleteTest() throws StreamReadException, DatabindException, IOException, GitLabApiException, InterruptedException {
     assertThat(gitLabRepository.getAdminGitLabApi().getAuthToken())
       .describedAs("This test requires a valid admin access token")
-- 
GitLab