Improving REST tests
This commit is contained in:
parent
4943c98428
commit
3f641fe61e
|
@ -0,0 +1,22 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="All Rest Services" type="JUnit" factoryName="JUnit" folderName="Redback">
|
||||||
|
<module name="redback-rest-services" />
|
||||||
|
<useClassPathOnly />
|
||||||
|
<extension name="coverage">
|
||||||
|
<pattern>
|
||||||
|
<option name="PATTERN" value="org.apache.archiva.redback.rest.services.v2.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
</pattern>
|
||||||
|
</extension>
|
||||||
|
<option name="PACKAGE_NAME" value="org.apache.archiva.redback.rest.services" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="package" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea -Dbasedir=$MODULE_DIR$ -DldapPort=10389 -javaagent:$MAVEN_REPOSITORY$/org/apache/openjpa/openjpa/3.1.1/openjpa-3.1.1.jar" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="All V2 Rest Services" type="JUnit" factoryName="JUnit" folderName="Redback">
|
||||||
|
<module name="redback-rest-services" />
|
||||||
|
<useClassPathOnly />
|
||||||
|
<extension name="coverage">
|
||||||
|
<pattern>
|
||||||
|
<option name="PATTERN" value="org.apache.archiva.redback.rest.services.v2.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
</pattern>
|
||||||
|
</extension>
|
||||||
|
<option name="PACKAGE_NAME" value="org.apache.archiva.redback.rest.services.v2" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="package" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea -Dbasedir=$MODULE_DIR$ -DldapPort=10389 -javaagent:$MAVEN_REPOSITORY$/org/apache/openjpa/openjpa/3.1.1/openjpa-3.1.1.jar" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="All in archiva-rest-services JDK11" type="JUnit" factoryName="JUnit" folderName="Archiva">
|
||||||
|
<module name="archiva-rest-services" />
|
||||||
|
<useClassPathOnly />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH" value="11" />
|
||||||
|
<option name="PACKAGE_NAME" value="" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="package" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea -Dbasedir=$MODULE_DIR$ -DldapPort=10389 -javaagent:$MAVEN_REPOSITORY$/org/apache/openjpa/openjpa/3.1.1/openjpa-3.1.1.jar" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="V2 AuthenticationServiceTest" type="JUnit" factoryName="JUnit">
|
||||||
|
<module name="redback-rest-services" />
|
||||||
|
<useClassPathOnly />
|
||||||
|
<extension name="coverage">
|
||||||
|
<pattern>
|
||||||
|
<option name="PATTERN" value="org.apache.archiva.redback.rest.services.v2.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
</pattern>
|
||||||
|
</extension>
|
||||||
|
<option name="PACKAGE_NAME" value="org.apache.archiva.redback.rest.services.v2" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="org.apache.archiva.redback.rest.services.v2.AuthenticationServiceTest" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="class" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea -Dbasedir=$MODULE_DIR$ -DldapPort=10389 -javaagent:$MAVEN_REPOSITORY$/org/apache/openjpa/openjpa/3.1.1/openjpa-3.1.1.jar" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="All V2 Rest Services" type="JUnit" factoryName="JUnit">
|
||||||
|
<module name="redback-rest-services" />
|
||||||
|
<useClassPathOnly />
|
||||||
|
<extension name="coverage">
|
||||||
|
<pattern>
|
||||||
|
<option name="PATTERN" value="org.apache.archiva.redback.rest.services.v2.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
</pattern>
|
||||||
|
</extension>
|
||||||
|
<option name="PACKAGE_NAME" value="org.apache.archiva.redback.rest.services.v2" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="package" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea -Dbasedir=$MODULE_DIR$ -DldapPort=10389 -javaagent:$MAVEN_REPOSITORY$/org/apache/openjpa/openjpa/3.1.1/openjpa-3.1.1.jar" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
1
pom.xml
1
pom.xml
|
@ -1033,6 +1033,7 @@
|
||||||
<!-- IntelliJ IDEA files -->
|
<!-- IntelliJ IDEA files -->
|
||||||
<exclude>.idea/**</exclude>
|
<exclude>.idea/**</exclude>
|
||||||
<exclude>**/*.iml</exclude>
|
<exclude>**/*.iml</exclude>
|
||||||
|
<exclude>idea.run.configuration/**</exclude>
|
||||||
<!-- Eclipse files -->
|
<!-- Eclipse files -->
|
||||||
<exclude>.project</exclude>
|
<exclude>.project</exclude>
|
||||||
<exclude>.classpath</exclude>
|
<exclude>.classpath</exclude>
|
||||||
|
|
|
@ -170,9 +170,11 @@ public class PermissionsInterceptor
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
log.debug( "Path {} is protected and needs authentication. User not authenticated.", requestPath );
|
log.debug( "Path {} is protected and needs authentication. User not authenticated.", requestPath );
|
||||||
containerRequestContext.abortWith( Response.status( Response.Status.FORBIDDEN ).build() );
|
containerRequestContext.abortWith( Response.status( Response.Status.UNAUTHORIZED ).build() );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
log.warn( "No permissions defined for the REST method and noPermission=false" );
|
||||||
containerRequestContext.abortWith( Response.status( Response.Status.FORBIDDEN ).build() );
|
containerRequestContext.abortWith( Response.status( Response.Status.FORBIDDEN ).build() );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ import io.restassured.builder.RequestSpecBuilder;
|
||||||
import io.restassured.specification.RequestSpecification;
|
import io.restassured.specification.RequestSpecification;
|
||||||
import org.apache.archiva.redback.integration.security.role.RedbackRoleConstants;
|
import org.apache.archiva.redback.integration.security.role.RedbackRoleConstants;
|
||||||
import org.apache.archiva.redback.rest.services.BaseSetup;
|
import org.apache.archiva.redback.rest.services.BaseSetup;
|
||||||
import org.apache.archiva.redback.rest.services.FakeCreateAdminServiceImpl;
|
|
||||||
import org.apache.archiva.redback.role.RoleManager;
|
import org.apache.archiva.redback.role.RoleManager;
|
||||||
import org.apache.archiva.redback.role.RoleManagerException;
|
import org.apache.archiva.redback.role.RoleManagerException;
|
||||||
import org.apache.archiva.redback.users.User;
|
import org.apache.archiva.redback.users.User;
|
||||||
|
@ -49,8 +48,8 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
import static io.restassured.RestAssured.baseURI;
|
import static io.restassured.RestAssured.baseURI;
|
||||||
import static io.restassured.RestAssured.port;
|
import static io.restassured.RestAssured.port;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
import static org.apache.archiva.redback.rest.services.BaseSetup.*;
|
import static org.apache.archiva.redback.rest.services.BaseSetup.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Native REST tests do not use the JAX-RS client and can be used with a remote
|
* Native REST tests do not use the JAX-RS client and can be used with a remote
|
||||||
|
@ -75,13 +74,11 @@ public abstract class AbstractNativeRestServices
|
||||||
private static AtomicInteger serverStarted = new AtomicInteger( STOPPED );
|
private static AtomicInteger serverStarted = new AtomicInteger( STOPPED );
|
||||||
private UserManager userManager;
|
private UserManager userManager;
|
||||||
private RoleManager roleManager;
|
private RoleManager roleManager;
|
||||||
private String adminPwd;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public AbstractNativeRestServices( )
|
public AbstractNativeRestServices( )
|
||||||
{
|
{
|
||||||
this.adminPwd = BaseSetup.getAdminPwd( );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract String getServicePath( );
|
protected abstract String getServicePath( );
|
||||||
|
@ -313,15 +310,22 @@ public abstract class AbstractNativeRestServices
|
||||||
RestAssured.baseURI = "http://localhost";
|
RestAssured.baseURI = "http://localhost";
|
||||||
}
|
}
|
||||||
String basePath = getBasePath( );
|
String basePath = getBasePath( );
|
||||||
RequestSpecBuilder builder = new RequestSpecBuilder( );
|
this.requestSpec = getRequestSpecBuilder().build( );
|
||||||
builder.setBaseUri( baseURI )
|
|
||||||
.setPort( port )
|
|
||||||
.setBasePath( basePath )
|
|
||||||
.addHeader( "Origin", RestAssured.baseURI + ":" + RestAssured.port );
|
|
||||||
this.requestSpec = builder.build( );
|
|
||||||
RestAssured.basePath = basePath;
|
RestAssured.basePath = basePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected RequestSpecBuilder getRequestSpecBuilder() {
|
||||||
|
return new RequestSpecBuilder().setBaseUri( baseURI )
|
||||||
|
.setPort( port )
|
||||||
|
.setBasePath( getBasePath() )
|
||||||
|
.addHeader( "Origin", RestAssured.baseURI + ":" + RestAssured.port );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected RequestSpecification getRequestSpec(String bearerToken) {
|
||||||
|
return getRequestSpecBuilder( ).addHeader( "Authorization", "Bearer " + bearerToken ).build();
|
||||||
|
}
|
||||||
|
|
||||||
protected void shutdownNative( ) throws Exception
|
protected void shutdownNative( ) throws Exception
|
||||||
{
|
{
|
||||||
stopServer( );
|
stopServer( );
|
||||||
|
|
|
@ -90,6 +90,15 @@ public class NativeAuthenticationServiceTest extends AbstractNativeRestServices
|
||||||
assertTrue( dateTime.toInstant( ).isBefore( afterCall ) );
|
assertTrue( dateTime.toInstant( ).isBefore( afterCall ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void authenticatedPing() {
|
||||||
|
Response result = given( ).spec( getRequestSpec() )
|
||||||
|
.contentType( JSON )
|
||||||
|
.when( ).get( "/ping/authenticated" ).then( ).statusCode( 401 )
|
||||||
|
.extract( ).response( );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void tokenLogin() {
|
void tokenLogin() {
|
||||||
Map<String, Object> jsonAsMap = new HashMap<>();
|
Map<String, Object> jsonAsMap = new HashMap<>();
|
||||||
|
@ -101,8 +110,14 @@ public class NativeAuthenticationServiceTest extends AbstractNativeRestServices
|
||||||
.body( jsonAsMap )
|
.body( jsonAsMap )
|
||||||
.when( ).post( "/authenticate").then( ).statusCode( 200 )
|
.when( ).post( "/authenticate").then( ).statusCode( 200 )
|
||||||
.extract( ).response( );
|
.extract( ).response( );
|
||||||
assertNotNull( result.body( ).jsonPath( ).getString( "access_token" ) );
|
String accessToken = result.body( ).jsonPath( ).getString( "access_token" );
|
||||||
|
assertNotNull( accessToken );
|
||||||
assertNotNull( result.body( ).jsonPath( ).getString( "refresh_token" ) );
|
assertNotNull( result.body( ).jsonPath( ).getString( "refresh_token" ) );
|
||||||
|
|
||||||
|
result = given( ).spec( getRequestSpec( accessToken ) )
|
||||||
|
.contentType( JSON )
|
||||||
|
.when( ).get( "/ping/authenticated" ).then( ).statusCode( 200 )
|
||||||
|
.extract( ).response( );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue