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 4ccc7856cdcfcfcc5980861c5de4ad1375980415..5ccd6feebc9de8a4ef60b6d038a7371001b8f4d4 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")