Skip to content

Commit 6dbba8d

Browse files
authored
Merge pull request #160 from yma96/main
Add ftest and unit mock test for Group Constituent Add function
2 parents dba5d41 + ae80151 commit 6dbba8d

File tree

3 files changed

+180
-5
lines changed

3 files changed

+180
-5
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/**
2+
* Copyright (C) 2022-2023 Red Hat, Inc. (https://github.com/Commonjava/indy-repository-service)
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.commonjava.indy.service.repository.ftests.admin;
17+
18+
import io.quarkus.test.junit.QuarkusTest;
19+
import io.quarkus.test.junit.TestProfile;
20+
import org.commonjava.indy.service.repository.ftests.AbstractStoreManagementTest;
21+
import org.commonjava.indy.service.repository.ftests.matchers.RepoEqualMatcher;
22+
import org.commonjava.indy.service.repository.ftests.profile.MemoryFunctionProfile;
23+
import org.commonjava.indy.service.repository.model.Group;
24+
import org.commonjava.indy.service.repository.model.RemoteRepository;
25+
import org.commonjava.test.http.expect.ExpectationServer;
26+
import org.commonjava.test.http.quarkus.InjectExpected;
27+
import org.junit.jupiter.api.Tag;
28+
import org.junit.jupiter.api.Test;
29+
30+
import static io.restassured.RestAssured.given;
31+
import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON;
32+
import static jakarta.ws.rs.core.Response.Status.OK;
33+
import static org.commonjava.indy.service.repository.model.pkg.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
34+
import static org.junit.Assert.assertTrue;
35+
36+
/**
37+
* This case tests the group member add
38+
*
39+
* <br/>
40+
* <b>GIVEN:</b>
41+
* <ul>
42+
* <li>create group G repo</li>
43+
* <li>create remote M repo</li>
44+
* </ul>
45+
*
46+
* <br/>
47+
* <b>WHEN:</b>
48+
* <ul>
49+
* <li>add remote M as member into group G></li>
50+
* </ul>
51+
*
52+
* <br/>
53+
* <b>THEN:</b>
54+
* <ul>
55+
* <li>get the group G and verify the member M existence</li>
56+
* </ul>
57+
*/
58+
@QuarkusTest
59+
@TestProfile( MemoryFunctionProfile.class )
60+
@Tag( "function" )
61+
public class AddGroupConstituentTest
62+
extends AbstractStoreManagementTest
63+
{
64+
65+
@InjectExpected()
66+
public final ExpectationServer server = new ExpectationServer();
67+
68+
@Test
69+
public void addGroupConstituentIt()
70+
throws Exception
71+
{
72+
final String name = "G";
73+
final Group group = new Group( MAVEN_PKG_KEY, name );
74+
String json = mapper.writeValueAsString( group );
75+
given().body( json )
76+
.contentType( APPLICATION_JSON )
77+
.post( getRepoTypeUrl( group.getKey() ) )
78+
.then()
79+
.body( new RepoEqualMatcher<>( mapper, group, Group.class ) );
80+
81+
final String urlName = "urltest";
82+
final String url = server.formatUrl( urlName );
83+
final RemoteRepository member = new RemoteRepository( MAVEN_PKG_KEY, "M", url );
84+
json = mapper.writeValueAsString( member );
85+
given().body( json )
86+
.contentType( APPLICATION_JSON )
87+
.post( getRepoTypeUrl( member.getKey() ) )
88+
.then()
89+
.body( new RepoEqualMatcher<>( mapper, member, RemoteRepository.class ) );
90+
91+
final String repoUrl = getRepoUrl( group.getKey() );
92+
given().body( json )
93+
.contentType( APPLICATION_JSON )
94+
.put( repoUrl + "addConstituent" )
95+
.then()
96+
.statusCode( OK.getStatusCode() );
97+
98+
String result = given().get( repoUrl )
99+
.then()
100+
.statusCode( OK.getStatusCode() )
101+
.body( new RepoEqualMatcher<>( mapper, group, Group.class ) )
102+
.extract()
103+
.asString();
104+
assertTrue( result.contains( "\"constituents\" : [ \"maven:remote:M\" ]" ) );
105+
}
106+
}

src/test/java/org/commonjava/indy/service/repository/jaxrs/RepositoryAdminResourcesTest.java

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
import io.quarkus.test.security.TestSecurity;
2121
import io.restassured.RestAssured;
2222
import io.restassured.parsing.Parser;
23+
import jakarta.ws.rs.core.MediaType;
2324
import org.junit.jupiter.api.Test;
2425

25-
import jakarta.ws.rs.core.MediaType;
2626
import java.util.HashMap;
2727
import java.util.Map;
2828

@@ -37,8 +37,8 @@
3737
import static jakarta.ws.rs.core.Response.Status.NOT_MODIFIED;
3838
import static jakarta.ws.rs.core.Response.Status.NO_CONTENT;
3939
import static jakarta.ws.rs.core.Response.Status.OK;
40-
import static org.hamcrest.CoreMatchers.is;
4140
import static org.commonjava.indy.service.repository.util.PathUtils.normalize;
41+
import static org.hamcrest.CoreMatchers.is;
4242

4343
@QuarkusTest
4444
@TestProfile( MockTestProfile.class )
@@ -332,4 +332,56 @@ public void testGetAllInValidErrorType()
332332
.contentType( MediaType.APPLICATION_JSON )
333333
.body( "error", is( "Not supporte repository type of hosted" ) );
334334
}
335+
336+
@Test
337+
public void testAddGroupConstituentSuccess()
338+
{
339+
Map<String, String> member = new HashMap<>();
340+
member.put( "packageType", "maven" );
341+
member.put( "type", "remote" );
342+
member.put( "name", "member" );
343+
member.put( "url", "http://repo.member" );
344+
member.put( "key", "maven:remote:member" );
345+
346+
given().when()
347+
.body( member )
348+
.contentType( APPLICATION_JSON )
349+
.put( normalize( BASE_STORE_PATH, "maven/group/success/addConstituent" ) )
350+
.then()
351+
.statusCode( OK.getStatusCode() );
352+
}
353+
354+
@Test
355+
public void testAddGroupConstituentNonSuccess()
356+
{
357+
Map<String, String> member = new HashMap<>();
358+
member.put( "packageType", "maven" );
359+
member.put( "type", "remote" );
360+
member.put( "name", "member" );
361+
member.put( "url", "http://repo.member" );
362+
member.put( "key", "maven:remote:member" );
363+
given().when()
364+
.body( member )
365+
.contentType( APPLICATION_JSON )
366+
.put( normalize( BASE_STORE_PATH, "maven/group/nonsuccess/addConstituent" ) )
367+
.then()
368+
.statusCode( NOT_MODIFIED.getStatusCode() );
369+
}
370+
371+
@Test
372+
public void testAddGroupConstituentError()
373+
{
374+
Map<String, String> member = new HashMap<>();
375+
member.put( "packageType", "maven" );
376+
member.put( "type", "remote" );
377+
member.put( "name", "member" );
378+
member.put( "url", "http://repo.member" );
379+
member.put( "key", "maven:remote:member" );
380+
given().when()
381+
.body( member )
382+
.contentType( APPLICATION_JSON )
383+
.put( normalize( BASE_STORE_PATH, "maven/group/error/addConstituent" ) )
384+
.then()
385+
.statusCode( INTERNAL_SERVER_ERROR.getStatusCode() );
386+
}
335387
}

src/test/java/org/commonjava/indy/service/repository/jaxrs/mock/MockAdminController.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
package org.commonjava.indy.service.repository.jaxrs.mock;
1717

18+
import jakarta.enterprise.context.ApplicationScoped;
19+
import jakarta.enterprise.inject.Alternative;
20+
import jakarta.ws.rs.core.Response;
1821
import org.commonjava.indy.service.repository.controller.AdminController;
1922
import org.commonjava.indy.service.repository.exception.IndyWorkflowException;
2023
import org.commonjava.indy.service.repository.model.ArtifactStore;
@@ -26,9 +29,6 @@
2629
import org.commonjava.indy.service.repository.model.StoreType;
2730
import org.junit.jupiter.api.Test;
2831

29-
import jakarta.enterprise.context.ApplicationScoped;
30-
import jakarta.enterprise.inject.Alternative;
31-
import jakarta.ws.rs.core.Response;
3232
import java.util.Arrays;
3333
import java.util.Collections;
3434
import java.util.List;
@@ -141,4 +141,21 @@ public List<ArtifactStore> getAllStores()
141141
Group group = new Group( MAVEN_PKG_KEY, "test3", repo1.getKey(), repo2.getKey() );
142142
return Arrays.asList( repo1, repo2, group );
143143
}
144+
145+
@Override
146+
public boolean addConstituentToGroup( final StoreKey key, final StoreKey member )
147+
throws IndyWorkflowException
148+
{
149+
if ( key.equals( StoreKey.fromString( "maven:group:success" ) ) && member.equals(
150+
StoreKey.fromString( "maven:remote:member" ) ) )
151+
{
152+
return true;
153+
}
154+
if ( key.equals( StoreKey.fromString( "maven:group:error" ) ) && member.equals(
155+
StoreKey.fromString( "maven:remote:member" ) ) )
156+
{
157+
throw new IndyWorkflowException( "error happened" );
158+
}
159+
return false;
160+
}
144161
}

0 commit comments

Comments
 (0)