Add initial audit log API

Introduce audit log API which logs all creations,
modifications and deletions of annotated entities
and everything which is stored inside a
ConfigurationStore. Without the related Audit
Log Plugin installed this API does nothing.
This commit is contained in:
Eduard Heimbuch
2023-03-09 11:25:33 +01:00
committed by SCM-Manager
parent e74225e168
commit 56265be9a2
36 changed files with 590 additions and 178 deletions

View File

@@ -119,7 +119,8 @@ public class DefaultRepositoryManagerPerfTest {
repositoryDAO,
handlerSet,
Providers.of(namespaceStrategy),
repositoryPostProcessor);
repositoryPostProcessor,
Collections.emptySet());
setUpTestRepositories();

View File

@@ -48,6 +48,7 @@ import sonia.scm.NoChangesMadeException;
import sonia.scm.NotFoundException;
import sonia.scm.SCMContext;
import sonia.scm.ScmConstraintViolationException;
import sonia.scm.TempSCMContextProvider;
import sonia.scm.event.ScmEventBus;
import sonia.scm.repository.api.HookContext;
import sonia.scm.repository.api.HookContextFactory;
@@ -88,9 +89,6 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import sonia.scm.TempSCMContextProvider;
//~--- JDK imports ------------------------------------------------------------
/**
@@ -561,7 +559,7 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
when(namespaceStrategy.createNamespace(Mockito.any(Repository.class))).thenAnswer(invocation -> mockedNamespace);
return new DefaultRepositoryManager(contextProvider,
keyGenerator, repositoryDAO, handlerSet, Providers.of(namespaceStrategy), postProcessor);
keyGenerator, repositoryDAO, handlerSet, Providers.of(namespaceStrategy), postProcessor, emptySet());
}
private RepositoryDAO createRepositoryDaoMock() {

View File

@@ -21,7 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package sonia.scm.repository;
import org.apache.shiro.authz.UnauthorizedException;
@@ -48,6 +48,7 @@ import java.util.Comparator;
import java.util.List;
import static java.util.Arrays.asList;
import static java.util.Collections.emptySet;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -76,7 +77,6 @@ class DefaultRepositoryRoleManagerTest {
@Mock
private RepositoryPermissionProvider permissionProvider;
@InjectMocks
private DefaultRepositoryRoleManager manager;
@BeforeEach
@@ -103,6 +103,11 @@ class DefaultRepositoryRoleManagerTest {
when(permissionProvider.availableRoles()).thenReturn(asList(CUSTOM_ROLE, SYSTEM_ROLE));
}
@BeforeEach
void initManager() {
manager = new DefaultRepositoryRoleManager(dao, permissionProvider, emptySet());
}
@AfterEach
void cleanupContext() {
ThreadContext.unbindSubject();

View File

@@ -39,6 +39,7 @@ import sonia.scm.store.JAXBConfigurationStoreFactory;
import java.nio.file.Path;
import java.util.Optional;
import static java.util.Collections.emptySet;
import static org.mockito.Mockito.when;
import static sonia.scm.update.repository.MigrationStrategy.INLINE;
@@ -53,7 +54,7 @@ class DefaultMigrationStrategyDAOTest {
@BeforeEach
void initStore(@TempDir Path tempDir) {
when(contextProvider.getBaseDirectory()).thenReturn(tempDir.toFile());
storeFactory = new JAXBConfigurationStoreFactory(contextProvider, null, null);
storeFactory = new JAXBConfigurationStoreFactory(contextProvider, null, null, emptySet());
}
@Test

View File

@@ -36,6 +36,9 @@ import sonia.scm.NotFoundException;
import sonia.scm.store.JAXBConfigurationStoreFactory;
import sonia.scm.user.xml.XmlUserDAO;
import java.util.Collections;
import static java.util.Collections.emptySet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.anyString;
@@ -64,7 +67,7 @@ public class DefaultUserManagerTest extends UserManagerTestBase {
@Override
public UserManager createManager() {
return new DefaultUserManager(passwordService, createXmlUserDAO());
return new DefaultUserManager(passwordService, createXmlUserDAO(), emptySet());
}
@Before
@@ -78,7 +81,7 @@ public class DefaultUserManagerTest extends UserManagerTestBase {
when(passwordService.encryptPassword(anyString())).thenAnswer(invocation -> invocation.getArgument(0));
userManager = new DefaultUserManager(passwordService, userDAO);
userManager = new DefaultUserManager(passwordService, userDAO, emptySet());
}
@Test(expected = InvalidPasswordException.class)
@@ -161,6 +164,6 @@ public class DefaultUserManagerTest extends UserManagerTestBase {
}
private XmlUserDAO createXmlUserDAO() {
return new XmlUserDAO(new JAXBConfigurationStoreFactory(contextProvider, locationResolver, null));
return new XmlUserDAO(new JAXBConfigurationStoreFactory(contextProvider, locationResolver, null, emptySet()));
}
}