This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 32cf20409208f30c458ec9fc992e2bec1d64fd87
Author: Martin Stockhammer <[email protected]>
AuthorDate: Sun Aug 1 17:14:27 2021 +0200

    Adding cleanup for unit test methods
---
 .../base/group/RepositoryGroupHandler.java         |   5 +-
 .../base/group/RepositoryGroupHandlerTest.java     | 304 ++++++++++++++-------
 2 files changed, 207 insertions(+), 102 deletions(-)

diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
index eb8fbd3..2a8a505 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
@@ -437,8 +437,7 @@ public class RepositoryGroupHandler
     {
         final String id = repositoryConfiguration.getId( );
         RepositoryGroup currentGroup = repositoryGroups.get( id );
-        Configuration configuration = 
configurationHandler.getBaseConfiguration( );
-        RepositoryGroup repositoryGroup = put( repositoryConfiguration, 
configuration );
+        RepositoryGroup repositoryGroup = newInstance( repositoryConfiguration 
);
         CheckedResult<RepositoryGroup, D> result;
         if ( currentGroup == null )
         {
@@ -593,7 +592,7 @@ public class RepositoryGroupHandler
     @Override
     public Collection<RepositoryGroup> getAll( )
     {
-        return repositoryGroups.values( );
+        return Collections.unmodifiableCollection( repositoryGroups.values( ) 
);
     }
 
     @Override
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
index cf8de1c..7c114b7 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
@@ -20,8 +20,12 @@ package org.apache.archiva.repository.base.group;
 
 import org.apache.archiva.common.filelock.DefaultFileLockManager;
 import org.apache.archiva.common.filelock.FileLockManager;
+import org.apache.archiva.common.utils.FileUtils;
+import org.apache.archiva.common.utils.PathUtil;
+import org.apache.archiva.components.registry.RegistryException;
 import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.Configuration;
+import org.apache.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.archiva.configuration.RepositoryGroupConfiguration;
 import org.apache.archiva.indexer.merger.MergedRemoteIndexesScheduler;
 import org.apache.archiva.repository.EditableRepositoryGroup;
@@ -36,6 +40,7 @@ import 
org.apache.archiva.repository.storage.fs.FilesystemStorage;
 import org.apache.archiva.repository.validation.CheckedResult;
 import org.apache.archiva.repository.validation.RepositoryValidator;
 import org.apache.archiva.repository.validation.ValidationError;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
@@ -48,7 +53,9 @@ import javax.inject.Named;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -65,6 +72,9 @@ import static org.mockito.Mockito.verify;
 @ContextConfiguration( locations = {"classpath*:/META-INF/spring-context.xml", 
"classpath:/spring-context-group.xml"} )
 class RepositoryGroupHandlerTest
 {
+    static {
+        initialize();
+    }
 
     @Inject
     @Named( "repositoryRegistry" )
@@ -85,6 +95,51 @@ class RepositoryGroupHandlerTest
 
     Path repoBaseDir;
 
+
+    private static void initialize() {
+        Path baseDir = Paths.get( FileUtils.getBasedir( ) );
+        Path config = baseDir.resolve( "src/test/resources/archiva-group.xml" 
);
+        if ( Files.exists( config ) )
+        {
+            Path destConfig = baseDir.resolve( 
"target/test-classes/archiva-group.xml" );
+            try
+            {
+                Files.copy( config, destConfig );
+            }
+            catch ( IOException e )
+            {
+                System.err.println( "Could not copy file: " + e.getMessage( ) 
);
+            }
+        }
+    }
+
+    // Helper method that removes a group from the configuration
+    private void removeGroupFromConfig(String groupId) {
+        Configuration configuration = 
configurationHandler.getBaseConfiguration( );
+        Iterator<RepositoryGroupConfiguration> groupIter = 
configuration.getRepositoryGroups().iterator();
+        while(groupIter.hasNext()) {
+            RepositoryGroupConfiguration group = groupIter.next( );
+            if (groupId.equals(group.getId())) {
+                groupIter.remove();
+                break;
+            }
+        }
+        try
+        {
+            configurationHandler.save( configuration );
+        }
+        catch ( Throwable e )
+        {
+            System.err.println( "Could not remove repo group from config 
"+groupId );
+        }
+    }
+
+    private boolean hasGroupInConfig(String groupId) {
+        assertNotNull( configurationHandler.getBaseConfiguration( 
).getRepositoryGroups( ) );
+        return configurationHandler.getBaseConfiguration( 
).getRepositoryGroups( ).stream( ).anyMatch( g -> g != null && groupId.equals( 
g.getId( ) ) ) ;
+    }
+
+
     private RepositoryGroupHandler createHandler( )
     {
         RepositoryGroupHandler groupHandler = new RepositoryGroupHandler( 
repositoryRegistry, configurationHandler, mergedRemoteIndexesScheduler, 
repositoryValidatorList );
@@ -133,11 +188,13 @@ class RepositoryGroupHandlerTest
     @Test
     void activateRepository( ) throws RepositoryException
     {
+        String id = "test-group-02";
         RepositoryGroupHandler groupHandler = createHandler( );
-        RepositoryGroup repo = groupHandler.newInstance( RepositoryType.MAVEN, 
"test-group-02" );
+        RepositoryGroup repo = groupHandler.newInstance( RepositoryType.MAVEN, 
id );
         groupHandler.activateRepository( repo );
         verify( mergedRemoteIndexesScheduler ).schedule( eq( repo ), any( ) );
         assertEquals( RepositoryState.INITIALIZED, repo.getLastState( ) );
+        assertFalse(hasGroupInConfig( id ));
     }
 
     @Test
@@ -153,59 +210,74 @@ class RepositoryGroupHandlerTest
     @Test
     void newInstance( ) throws RepositoryException
     {
+        String id = "test-group-03";
         RepositoryGroupHandler groupHandler = createHandler( );
-        RepositoryGroup instance = groupHandler.newInstance( 
RepositoryType.MAVEN, "test-group-03" );
+        RepositoryGroup instance = groupHandler.newInstance( 
RepositoryType.MAVEN, id );
         assertNotNull( instance );
-        assertEquals( "test-group-03", instance.getId( ) );
-        assertFalse( groupHandler.hasRepository( "test-group-03" ) );
+        assertEquals( id, instance.getId( ) );
+        assertFalse( groupHandler.hasRepository( id ) );
         assertEquals( RepositoryState.REFERENCES_SET, instance.getLastState( ) 
);
+        assertFalse( hasGroupInConfig( id ) );
     }
 
 
     @Test
     void put( ) throws IOException, RepositoryException
     {
-        RepositoryGroupHandler groupHandler = createHandler( );
-        EditableRepositoryGroup repositoryGroup = createRepository( 
"test-group-04", "n-test-group-04" );
-        groupHandler.put( repositoryGroup );
-        RepositoryGroup storedGroup = groupHandler.get( "test-group-04" );
-        assertNotNull( storedGroup );
-        assertEquals( "test-group-04", storedGroup.getId( ) );
-        assertEquals( "n-test-group-04", storedGroup.getName( ) );
-
-        EditableRepositoryGroup repositoryGroup2 = createRepository( 
"test-group-04", "n2-test-group-04" );
-        groupHandler.put( repositoryGroup2 );
-        storedGroup = groupHandler.get( "test-group-04" );
-        assertNotNull( storedGroup );
-        assertEquals( "test-group-04", storedGroup.getId( ) );
-        assertEquals( "n2-test-group-04", storedGroup.getName( ) );
-
-        assertNotNull( 
configurationHandler.getBaseConfiguration().getRepositoryGroups( ) );
-        assertTrue( 
configurationHandler.getBaseConfiguration().getRepositoryGroups( ).stream( 
).anyMatch( g -> g!=null && "test-group-04".equals( g.getId( ) ) ) );
+        final String id = "test-group-04";
+        try
+        {
+            RepositoryGroupHandler groupHandler = createHandler( );
+            EditableRepositoryGroup repositoryGroup = createRepository( id, 
"n-"+id );
+            groupHandler.put( repositoryGroup );
+            RepositoryGroup storedGroup = groupHandler.get( id );
+            assertNotNull( storedGroup );
+            assertEquals( id, storedGroup.getId( ) );
+            assertEquals( "n-"+id, storedGroup.getName( ) );
+
+            EditableRepositoryGroup repositoryGroup2 = createRepository( id, 
"n2-"+id );
+            groupHandler.put( repositoryGroup2 );
+            storedGroup = groupHandler.get( id );
+            assertNotNull( storedGroup );
+            assertEquals( id, storedGroup.getId( ) );
+            assertEquals( "n2-"+id, storedGroup.getName( ) );
+
+            assertTrue( hasGroupInConfig( id ));
+        } finally {
+            removeGroupFromConfig( id );
+        }
     }
 
     @Test
-    void testPut( ) throws RepositoryException
+    void putWithConfiguration( ) throws RepositoryException
     {
-        RepositoryGroupHandler groupHandler = createHandler( );
-        RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
-        configuration.setId( "test-group-05" );
-        configuration.setName( "n-test-group-05" );
-        ArrayList<String> repos = new ArrayList<>( );
-        repos.add( "internal" );
-        configuration.setRepositories( repos );
-        groupHandler.put( configuration );
-
-        RepositoryGroup repo = groupHandler.get( "test-group-05" );
-        assertNotNull( repo );
-        assertEquals( "test-group-05", repo.getId( ) );
-        assertEquals( "n-test-group-05", repo.getName( ) );
-
-        assertNotNull( repo.getRepositories( ) );
-        assertEquals( 1, repo.getRepositories( ).size( ) );
-        assertEquals( "internal", repo.getRepositories( ).get( 0 ).getId( ) );
-        assertNotNull( 
configurationHandler.getBaseConfiguration().getRepositoryGroups( ) );
-        assertTrue( 
configurationHandler.getBaseConfiguration().getRepositoryGroups( ).stream( 
).anyMatch( g -> g!=null && "test-group-05".equals( g.getId( ) ) ) );
+        String id = "test-group-05";
+
+        try
+        {
+            RepositoryGroupHandler groupHandler = createHandler( );
+            RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
+            configuration.setId( id );
+            configuration.setName( "n-" + id );
+            ArrayList<String> repos = new ArrayList<>( );
+            repos.add( "internal" );
+            configuration.setRepositories( repos );
+            groupHandler.put( configuration );
+
+            RepositoryGroup repo = groupHandler.get( id );
+            assertNotNull( repo );
+            assertEquals( id, repo.getId( ) );
+            assertEquals( "n-" + id, repo.getName( ) );
+
+            assertNotNull( repo.getRepositories( ) );
+            assertEquals( 1, repo.getRepositories( ).size( ) );
+            assertEquals( "internal", repo.getRepositories( ).get( 0 ).getId( 
) );
+            assertTrue( hasGroupInConfig( id ) );
+        }
+        finally
+        {
+            removeGroupFromConfig( id );
+        }
     }
 
     @Test
@@ -214,38 +286,48 @@ class RepositoryGroupHandlerTest
         RepositoryGroupHandler groupHandler = createHandler( );
         Configuration aCfg = new Configuration( );
         RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
-        configuration.setId( "test-group-06" );
-        configuration.setName( "n-test-group-06" );
+        final String id = "test-group-06";
+        configuration.setId( id );
+        configuration.setName( "n-"+id );
         ArrayList<String> repos = new ArrayList<>( );
         repos.add( "internal" );
         configuration.setRepositories( repos );
         groupHandler.put( configuration, aCfg );
 
-        RepositoryGroup repo = groupHandler.get( "test-group-06" );
+        RepositoryGroup repo = groupHandler.get( id );
         assertNull( repo );
-        assertNotNull( 
configurationHandler.getBaseConfiguration().getRepositoryGroups( ) );
-        assertTrue( 
configurationHandler.getBaseConfiguration().getRepositoryGroups( ).stream( 
).noneMatch( g -> g!=null && "test-group-06".equals( g.getId( ) ) ) );
-        assertTrue( aCfg.getRepositoryGroups( ).stream( ).anyMatch( g -> 
g!=null && "test-group-06".equals( g.getId( ) ) ) );
+        assertFalse( hasGroupInConfig( id ) );
+        assertTrue( aCfg.getRepositoryGroups( ).stream( ).anyMatch( g -> 
g!=null && id.equals( g.getId( ) ) ) );
 
     }
 
     @Test
-    void putWithCheck( ) throws RepositoryException
+    void putWithCheck_invalid( ) throws RepositoryException
     {
-        RepositoryGroupHandler groupHandler = createHandler( );
-        BasicRepositoryGroupValidator checker = new 
BasicRepositoryGroupValidator( configurationHandler );
-        RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
-        configuration.setId( "" );
-        configuration.setName( "n-test-group-07" );
-        ArrayList<String> repos = new ArrayList<>( );
-        repos.add( "internal" );
-        configuration.setRepositories( repos );
-        CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.putWithCheck( configuration, checker );
-        assertNull( groupHandler.get( "test-group-07" ) );
-        assertNotNull( result.getResult( ) );
-        assertNotNull( result.getResult( ).get( "id" ) );
-        assertEquals( 1, result.getResult( ).get( "id" ).size( ) );
-        assertEquals( ISEMPTY, result.getResult( ).get( "id" ).get( 0 
).getType( ) );
+        final String id = "test-group-07";
+        final String name = "n-"+id;
+        try
+        {
+            RepositoryGroupHandler groupHandler = createHandler( );
+            BasicRepositoryGroupValidator checker = new 
BasicRepositoryGroupValidator( configurationHandler );
+            RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
+            configuration.setId( "" );
+            configuration.setName( name );
+            ArrayList<String> repos = new ArrayList<>( );
+            repos.add( "internal" );
+            configuration.setRepositories( repos );
+            CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.putWithCheck( configuration, checker );
+            assertNull( groupHandler.get( id ) );
+            assertNotNull( result.getResult( ) );
+            assertNotNull( result.getResult( ).get( "id" ) );
+            assertEquals( 1, result.getResult( ).get( "id" ).size( ) );
+            assertEquals( ISEMPTY, result.getResult( ).get( "id" ).get( 0 
).getType( ) );
+            assertFalse( hasGroupInConfig( id ) );
+            assertFalse( hasGroupInConfig( "" ) );
+        } finally
+        {
+            removeGroupFromConfig( id );
+        }
     }
 
     @Test
@@ -253,31 +335,35 @@ class RepositoryGroupHandlerTest
     {
         RepositoryGroupHandler groupHandler = createHandler( );
         RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
-        configuration.setId( "test-group-08" );
-        configuration.setName( "n-test-group-08" );
+        final String id = "test-group-08";
+        configuration.setId( id );
+        configuration.setName( "n-"+id );
         groupHandler.put( configuration );
-        assertNotNull( groupHandler.get( "test-group-08" ) );
-        groupHandler.remove( "test-group-08" );
-        assertNull( groupHandler.get( "test-group-08" ) );
+        assertTrue( hasGroupInConfig( id ) );
+        assertNotNull( groupHandler.get( id ) );
+        groupHandler.remove( id );
+        assertNull( groupHandler.get( id ) );
+        assertFalse( hasGroupInConfig( id ) );
     }
 
     @Test
-    void testRemove( ) throws RepositoryException
+    void removeWithoutSave( ) throws RepositoryException
     {
         RepositoryGroupHandler groupHandler = createHandler( );
         Configuration aCfg = new Configuration( );
         RepositoryGroupConfiguration configuration = new 
RepositoryGroupConfiguration( );
-        configuration.setId( "test-group-09" );
-        configuration.setName( "n-test-group-09" );
+        final String id = "test-group-09";
+        configuration.setId( id );
+        configuration.setName( "n-"+id );
         ArrayList<String> repos = new ArrayList<>( );
         repos.add( "internal" );
         configuration.setRepositories( repos );
         groupHandler.put( configuration, aCfg );
-        assertTrue( aCfg.getRepositoryGroups( ).stream( ).anyMatch( g -> g != 
null && "test-group-09".equals( g.getId( ) ) ) );
-        groupHandler.remove( "test-group-09", aCfg );
-        assertNull( groupHandler.get( "test-group-09" ) );
-        assertTrue( aCfg.getRepositoryGroups( ).stream( ).noneMatch( g -> g != 
null && "test-group-09".equals( g.getId( ) ) ) );
-        assertNull( groupHandler.get( "test-group-09" ) );
+        assertTrue( aCfg.getRepositoryGroups( ).stream( ).anyMatch( g -> g != 
null && id.equals( g.getId( ) ) ) );
+        groupHandler.remove( id, aCfg );
+        assertNull( groupHandler.get( id ) );
+        assertTrue( aCfg.getRepositoryGroups( ).stream( ).noneMatch( g -> g != 
null && id.equals( g.getId( ) ) ) );
+        assertNull( groupHandler.get( id ) );
 
     }
 
@@ -286,13 +372,14 @@ class RepositoryGroupHandlerTest
     void validateRepository( ) throws IOException
     {
         RepositoryGroupHandler groupHandler = createHandler( );
-        EditableRepositoryGroup repositoryGroup = createRepository( 
"test-group-10", "n-test-group-10" );
+        final String id = "test-group-10";
+        EditableRepositoryGroup repositoryGroup = createRepository( id, 
"n-"+id );
         repositoryGroup.setMergedIndexTTL( 5 );
         CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.validateRepository( repositoryGroup );
         assertNotNull( result );
         assertEquals( 0, result.getResult( ).size( ) );
 
-        repositoryGroup = createRepository( "test-group-10", 
"n-test-group-10###" );
+        repositoryGroup = createRepository( id, "n-test-group-10###" );
         result = groupHandler.validateRepository( repositoryGroup );
         assertNotNull( result );
         assertEquals( 2, result.getResult( ).size( ) );
@@ -304,39 +391,58 @@ class RepositoryGroupHandlerTest
     @Test
     void validateRepositoryIfExisting( ) throws IOException, 
RepositoryException
     {
-        RepositoryGroupHandler groupHandler = createHandler( );
-        EditableRepositoryGroup repositoryGroup = createRepository( 
"test-group-11", "n-test-group-11" );
-        repositoryGroup.setMergedIndexTTL( 5 );
-        groupHandler.put( repositoryGroup );
-        CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.validateRepository( repositoryGroup );
-        assertNotNull( result );
-        assertEquals( 1, result.getResult( ).size( ) );
-
+        final String id = "test-group-11";
+        try
+        {
+            RepositoryGroupHandler groupHandler = createHandler( );
+            EditableRepositoryGroup repositoryGroup = createRepository( id, 
"n-" + id );
+            repositoryGroup.setMergedIndexTTL( 5 );
+            groupHandler.put( repositoryGroup );
+            CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.validateRepository( repositoryGroup );
+            assertNotNull( result );
+            assertEquals( 1, result.getResult( ).size( ) );
+        } finally
+        {
+            removeGroupFromConfig( id );
+        }
 
     }
 
     @Test
     void validateRepositoryForUpdate( ) throws IOException, RepositoryException
     {
-        RepositoryGroupHandler groupHandler = createHandler( );
-        EditableRepositoryGroup repositoryGroup = createRepository( 
"test-group-12", "n-test-group-12" );
-        repositoryGroup.setMergedIndexTTL( 5 );
-        groupHandler.put( repositoryGroup );
-        CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.validateRepositoryForUpdate( repositoryGroup );
-        assertNotNull( result );
-        assertEquals( 0, result.getResult( ).size( ) );
-
+        final String id = "test-group-12";
+        try
+        {
+            RepositoryGroupHandler groupHandler = createHandler( );
+            EditableRepositoryGroup repositoryGroup = createRepository( id, 
"n-" + id );
+            repositoryGroup.setMergedIndexTTL( 5 );
+            groupHandler.put( repositoryGroup );
+            CheckedResult<RepositoryGroup, Map<String, List<ValidationError>>> 
result = groupHandler.validateRepositoryForUpdate( repositoryGroup );
+            assertNotNull( result );
+            assertEquals( 0, result.getResult( ).size( ) );
+        } finally
+        {
+            removeGroupFromConfig( id );
+        }
     }
 
     @Test
     void has( ) throws IOException, RepositoryException
     {
-        RepositoryGroupHandler groupHandler = createHandler( );
-        EditableRepositoryGroup repositoryGroup = createRepository( 
"test-group-13", "n-test-group-13" );
-        repositoryGroup.setMergedIndexTTL( 5 );
-        assertFalse( groupHandler.hasRepository( "test-group-13" ) );
-        groupHandler.put( repositoryGroup );
-        assertTrue( groupHandler.hasRepository( "test-group-13" ) );
+        final String id = "test-group-13";
+        try
+        {
+            RepositoryGroupHandler groupHandler = createHandler( );
+            EditableRepositoryGroup repositoryGroup = createRepository( id, 
"n-" + id );
+            repositoryGroup.setMergedIndexTTL( 5 );
+            assertFalse( groupHandler.hasRepository( id ) );
+            groupHandler.put( repositoryGroup );
+            assertTrue( groupHandler.hasRepository( id ) );
+        } finally
+        {
+            removeGroupFromConfig( id );
+        }
     }
 
 }
\ No newline at end of file

Reply via email to