diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java b/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java index 1e787d24c3..964ebf605b 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java +++ b/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java @@ -94,5 +94,5 @@ public interface PluginManager { */ void executePendingAndRestart(); - void cancelInstallations(); + void cancelPending(); } diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index c03cfdab84..ed5e7f78db 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -274,7 +274,8 @@ public class DefaultPluginManager implements PluginManager { } @Override - public void cancelInstallations() { + public void cancelPending() { + PluginPermissions.manage().check(); pendingUninstallQueue.forEach(PendingPluginUninstallation::cancel); pendingInstallQueue.forEach(PendingPluginInstallation::cancel); } diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java index 520fcbbbef..84bf843ca2 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java @@ -467,7 +467,7 @@ class DefaultPluginManagerTest { manager.install("scm-git-plugin", false); manager.uninstall("scm-ssh-plugin", false); - manager.cancelInstallations(); + manager.cancelPending(); assertThat(mailPluginPath.resolve("uninstall")).doesNotExist(); verify(gitPendingPluginInformation).cancel(); @@ -529,5 +529,9 @@ class DefaultPluginManagerTest { assertThrows(AuthorizationException.class, () -> manager.executePendingAndRestart()); } + @Test + void shouldThrowAuthorizationExceptionsForCancelPending() { + assertThrows(AuthorizationException.class, () -> manager.cancelPending()); + } } }