From 7ac34818791248aa03c180a758dfd074d08d6465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 18 Sep 2020 17:52:49 +0200 Subject: [PATCH] Invalidate cache when namespace of repo was changed --- .../security/AuthorizationChangedEventProducer.java | 7 ++++++- .../AuthorizationChangedEventProducerTest.java | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationChangedEventProducer.java b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationChangedEventProducer.java index c1b5eb9f59..c05fe849bb 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationChangedEventProducer.java +++ b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationChangedEventProducer.java @@ -162,7 +162,12 @@ public class AuthorizationChangedEventProducer { Repository repository = event.getItem(); if (isAuthorizationDataModified(repository.getPermissions(), event.getItemBeforeModification().getPermissions())) { logger.debug( - "fire authorization changed event, because a relevant field of repository {}/{} has changed", repository.getNamespace(), repository.getName() + "fire authorization changed event, because the permissions of repository {}/{} have changed", repository.getNamespace(), repository.getName() + ); + fireEventForEveryUser(); + } else if (!event.getItem().getNamespace().equals(event.getItemBeforeModification().getNamespace())) { + logger.debug( + "fire authorization changed event, because the namespace of repository {}/{} has changed", repository.getNamespace(), repository.getName() ); fireEventForEveryUser(); } else { diff --git a/scm-webapp/src/test/java/sonia/scm/security/AuthorizationChangedEventProducerTest.java b/scm-webapp/src/test/java/sonia/scm/security/AuthorizationChangedEventProducerTest.java index ae5405de50..f76d3e5a0f 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/AuthorizationChangedEventProducerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/AuthorizationChangedEventProducerTest.java @@ -220,6 +220,18 @@ public class AuthorizationChangedEventProducerTest { assertEventIsNotFired(); } + @Test + public void testOnRepositoryNamespaceChanged() + { + Repository repositoryModified = RepositoryTestData.createHeartOfGold(); + repositoryModified.setName("test123"); + Repository repository = RepositoryTestData.createHeartOfGold(); + + repositoryModified.setNamespace("new_namespace"); + producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository)); + assertGlobalEventIsFired(); + } + private void resetStoredEvent(){ producer.event = null; }