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


The following commit(s) were added to refs/heads/master by this push:
     new 0f1a03e  Fix for group and additional tests
0f1a03e is described below

commit 0f1a03e0863031e781b129f81f068c9bc4b12ff9
Author: Martin Stockhammer <[email protected]>
AuthorDate: Tue Jun 29 22:16:34 2021 +0200

    Fix for group and additional tests
---
 .../repository/base/RepositoryGroupHandler.java    |   3 +-
 .../v2/NativeRepositoryGroupServiceTest.java       | 160 ++++++++++++++++++++-
 2 files changed, 160 insertions(+), 3 deletions(-)

diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/RepositoryGroupHandler.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/RepositoryGroupHandler.java
index 6783f74..8604ba9 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/RepositoryGroupHandler.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/RepositoryGroupHandler.java
@@ -401,6 +401,7 @@ public class RepositoryGroupHandler implements 
RepositoryHandler<RepositoryGroup
             repo = repositoryRegistry.getProvider( repoType 
).createRepositoryGroup( repositoryGroupConfiguration );
         }
         replaceOrAddRepositoryConfig( repositoryGroupConfiguration, 
configuration );
+        updateReferences( repo, repositoryGroupConfiguration );
         return repo;
     }
 
@@ -422,7 +423,7 @@ public class RepositoryGroupHandler implements 
RepositoryHandler<RepositoryGroup
         }
         if ( result.isValid( ) )
         {
-            put( repositoryConfiguration );
+            put( result.getRepository() );
         }
         return result;
     }
diff --git 
a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/v2/NativeRepositoryGroupServiceTest.java
 
b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/v2/NativeRepositoryGroupServiceTest.java
index 226c5a8..594b79c 100644
--- 
a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/v2/NativeRepositoryGroupServiceTest.java
+++ 
b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/v2/NativeRepositoryGroupServiceTest.java
@@ -31,6 +31,7 @@ import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.TestMethodOrder;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -39,8 +40,7 @@ import static io.restassured.RestAssured.given;
 import static io.restassured.http.ContentType.JSON;
 import static org.easymock.EasyMock.contains;
 import static org.hamcrest.Matchers.endsWith;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * @author Martin Stockhammer <[email protected]>
@@ -191,4 +191,160 @@ public class NativeRepositoryGroupServiceTest extends 
AbstractNativeRestServices
         }
     }
 
+    @Test
+    void testAddRepositoryToGroup( )
+    {
+        String token = getAdminToken( );
+        try
+        {
+            Map<String, Object> jsonAsMap = new HashMap<>( );
+            jsonAsMap.put( "id", "group_001" );
+            Response response = given( ).spec( getRequestSpec( token ) 
).contentType( JSON )
+                .when( )
+                .body( jsonAsMap )
+                .post( "" )
+                .prettyPeek()
+                .then( ).statusCode( 201 ).extract( ).response( );
+            assertNotNull( response );
+            RepositoryGroup result = response.getBody( ).jsonPath( 
).getObject( "", RepositoryGroup.class );
+            assertNotNull( result );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .get( "" )
+                .then( ).statusCode( 200 ).extract( ).response( );
+            assertNotNull( response );
+            PagedResult resultList = response.getBody( ).jsonPath( 
).getObject( "", PagedResult.class );
+            assertEquals( 1, resultList.getPagination( ).getTotalCount( ) );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .body( jsonAsMap )
+                .put( "group_001/repositories/internal" )
+                .prettyPeek()
+                .then( ).statusCode( 200 ).extract( ).response( );
+
+            assertNotNull( response );
+            result = response.getBody( ).jsonPath( ).getObject( "", 
RepositoryGroup.class );
+            assertNotNull( result );
+            assertEquals( 1, result.getRepositories( ).size( ) );
+            assertTrue( result.getRepositories( ).contains( "internal" ) );
+
+        } finally
+        {
+            given( ).spec( getRequestSpec( token ) ).contentType( JSON )
+                .when( )
+                .delete( "group_001" )
+                .then( ).statusCode( 200 );
+        }
+    }
+
+    @Test
+    void testAddRepositoryToGroupIdempotency( )
+    {
+        String token = getAdminToken( );
+        try
+        {
+            Map<String, Object> jsonAsMap = new HashMap<>( );
+            jsonAsMap.put( "id", "group_001" );
+            Response response = given( ).spec( getRequestSpec( token ) 
).contentType( JSON )
+                .when( )
+                .body( jsonAsMap )
+                .post( "" )
+                .prettyPeek()
+                .then( ).statusCode( 201 ).extract( ).response( );
+            assertNotNull( response );
+            RepositoryGroup result = response.getBody( ).jsonPath( 
).getObject( "", RepositoryGroup.class );
+            assertNotNull( result );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .get( "" )
+                .then( ).statusCode( 200 ).extract( ).response( );
+            assertNotNull( response );
+            PagedResult resultList = response.getBody( ).jsonPath( 
).getObject( "", PagedResult.class );
+            assertEquals( 1, resultList.getPagination( ).getTotalCount( ) );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .body( jsonAsMap )
+                .put( "group_001/repositories/internal" )
+                .prettyPeek()
+                .then( ).statusCode( 200 ).extract( ).response( );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .body( jsonAsMap )
+                .put( "group_001/repositories/internal" )
+                .prettyPeek()
+                .then( ).statusCode( 200 ).extract( ).response( );
+
+            assertNotNull( response );
+            result = response.getBody( ).jsonPath( ).getObject( "", 
RepositoryGroup.class );
+            assertNotNull( result );
+            assertEquals( 1, result.getRepositories( ).size( ) );
+            assertTrue( result.getRepositories( ).contains( "internal" ) );
+
+        } finally
+        {
+            given( ).spec( getRequestSpec( token ) ).contentType( JSON )
+                .when( )
+                .delete( "group_001" )
+                .then( ).statusCode( 200 );
+        }
+    }
+
+
+    @Test
+    void testRemoveRepositoryFromGroup( )
+    {
+        String token = getAdminToken( );
+        try
+        {
+            Map<String, Object> jsonAsMap = new HashMap<>( );
+            jsonAsMap.put( "id", "group_001" );
+            jsonAsMap.put( "repositories", Arrays.asList( "internal" ) );
+            Response response = given( ).spec( getRequestSpec( token ) 
).contentType( JSON )
+                .when( )
+                .body( jsonAsMap )
+                .post( "" )
+                .prettyPeek()
+                .then( ).statusCode( 201 ).extract( ).response( );
+            assertNotNull( response );
+            RepositoryGroup result = response.getBody( ).jsonPath( 
).getObject( "", RepositoryGroup.class );
+            assertNotNull( result );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .get( "" )
+                .then( ).statusCode( 200 ).extract( ).response( );
+            assertNotNull( response );
+            PagedResult resultList = response.getBody( ).jsonPath( 
).getObject( "", PagedResult.class );
+            assertEquals( 1, resultList.getPagination( ).getTotalCount( ) );
+
+            assertNotNull( result.getRepositories( ) );
+            assertEquals( 1, result.getRepositories( ).size( ) );
+            assertTrue( result.getRepositories( ).contains( "internal" ) );
+
+            response = given( ).spec( getRequestSpec( token ) ).contentType( 
JSON )
+                .when( )
+                .body( jsonAsMap )
+                .delete( "group_001/repositories/internal" )
+                .prettyPeek()
+                .then( ).statusCode( 200 ).extract( ).response( );
+
+            assertNotNull( response );
+            result = response.getBody( ).jsonPath( ).getObject( "", 
RepositoryGroup.class );
+            assertNotNull( result );
+            assertEquals( 0, result.getRepositories( ).size( ) );
+
+        } finally
+        {
+            given( ).spec( getRequestSpec( token ) ).contentType( JSON )
+                .when( )
+                .delete( "group_001" )
+                .then( ).statusCode( 200 );
+        }
+    }
+
 }

Reply via email to