From 512bf2065978269fc1450799e3ef97ac64bd2cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 5 Mar 2021 15:08:20 +0100 Subject: [PATCH] Run JUnit 5 integration tests again (#1571) With the migration to gradle we lost the JUnit 5 integration tests. This is fixed here. In addition we have to adapt the AnonymousAccessITCase to the change, that the anonymous access is disabled when creating the default test data. --- scm-it/build.gradle | 1 + .../sonia/scm/it/AnonymousAccessITCase.java | 22 ++++++++----------- .../java/sonia/scm/it/utils/TestData.java | 12 ++++++++++ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/scm-it/build.gradle b/scm-it/build.gradle index 2ff3db4dee..5903ed207c 100644 --- a/scm-it/build.gradle +++ b/scm-it/build.gradle @@ -80,6 +80,7 @@ task javaIntegrationTests(type: Test) { ignoreFailures = project.isCI outputs.upToDateWhen { !project.hasProperty('rerunIntegrationTests') } finalizedBy = ['stopScmServer'] + useJUnitPlatform() dependsOn 'test', 'startScmServer' mustRunAfter 'startScmServer' diff --git a/scm-it/src/test/java/sonia/scm/it/AnonymousAccessITCase.java b/scm-it/src/test/java/sonia/scm/it/AnonymousAccessITCase.java index 603942e4f7..9fac411b27 100644 --- a/scm-it/src/test/java/sonia/scm/it/AnonymousAccessITCase.java +++ b/scm-it/src/test/java/sonia/scm/it/AnonymousAccessITCase.java @@ -26,7 +26,6 @@ package sonia.scm.it; import io.restassured.RestAssured; import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -61,6 +60,11 @@ import static sonia.scm.it.utils.TestData.getDefaultRepositoryUrl; class AnonymousAccessITCase { + @BeforeEach + void createRepositoryAndSetAnonymous() { + TestData.createDefault(); + } + @Test void shouldAccessIndexResourceWithoutAuthentication() { ScmRequests.start() @@ -79,14 +83,10 @@ class AnonymousAccessITCase { @Nested @TestInstance(TestInstance.Lifecycle.PER_CLASS) class WithProtocolOnlyAnonymousAccess { - @BeforeAll - void enableAnonymousAccess() { - setAnonymousAccess(AnonymousMode.PROTOCOL_ONLY); - } @BeforeEach - void createRepository() { - TestData.createDefault(); + void createRepositoryAndSetAnonymous() { + setAnonymousAccess(AnonymousMode.PROTOCOL_ONLY); } @Test @@ -150,14 +150,10 @@ class AnonymousAccessITCase { @Nested @TestInstance(TestInstance.Lifecycle.PER_CLASS) class WithFullAnonymousAccess { - @BeforeAll - void enableAnonymousAccess() { - setAnonymousAccess(AnonymousMode.FULL); - } @BeforeEach - void createRepository() { - TestData.createDefault(); + void createRepositoryAndSetAnonymous() { + setAnonymousAccess(AnonymousMode.FULL); } @Test diff --git a/scm-it/src/test/java/sonia/scm/it/utils/TestData.java b/scm-it/src/test/java/sonia/scm/it/utils/TestData.java index fc995d7a9b..7655416d5a 100644 --- a/scm-it/src/test/java/sonia/scm/it/utils/TestData.java +++ b/scm-it/src/test/java/sonia/scm/it/utils/TestData.java @@ -230,6 +230,18 @@ public class TestData { .body().jsonPath().getList("_embedded.users._links.self.href"); LOG.info("about to delete {} users", users.size()); users.stream().filter(url -> PROTECTED_USERS.stream().noneMatch(url::contains)).forEach(TestData::delete); + + clearAnonymousUserPermissions(); + } + + private static void clearAnonymousUserPermissions() { + given(VndMediaType.PERMISSION_COLLECTION).accept("application/json") + .when() + .body("{\"permissions\":[]}") + .put(createResourceUrl("users/_anonymous/permissions")) + .then() + .statusCode(HttpStatus.SC_NO_CONTENT); + LOG.info("deleted permissions for user _anonymous"); } private static void cleanupConfig() {