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-redback-core.git

commit 3f641fe61e1e3964272601012b895620a987134a
Author: Martin Stockhammer <[email protected]>
AuthorDate: Tue Jul 14 07:52:10 2020 +0200

    Improving REST tests
---
 idea.run.configuration/All Rest Services.run.xml   | 22 ++++++++++++++++++++
 .../All V2 Rest Services.run.xml                   | 22 ++++++++++++++++++++
 .../All in archiva-rest-services JDK11.run.xml     | 18 ++++++++++++++++
 .../V2 AuthenticationServiceTest.run.xml           | 22 ++++++++++++++++++++
 ...st.services.v2 in redback-rest-services.run.xml | 22 ++++++++++++++++++++
 pom.xml                                            |  1 +
 .../interceptors/PermissionsInterceptor.java       |  4 +++-
 .../services/v2/AbstractNativeRestServices.java    | 24 +++++++++++++---------
 .../v2/NativeAuthenticationServiceTest.java        | 17 ++++++++++++++-
 9 files changed, 140 insertions(+), 12 deletions(-)

diff --git a/idea.run.configuration/All Rest Services.run.xml 
b/idea.run.configuration/All Rest Services.run.xml
new file mode 100644
index 0000000..07152e8
--- /dev/null
+++ b/idea.run.configuration/All Rest Services.run.xml  
@@ -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>
\ No newline at end of file
diff --git a/idea.run.configuration/All V2 Rest Services.run.xml 
b/idea.run.configuration/All V2 Rest Services.run.xml
new file mode 100644
index 0000000..817305f
--- /dev/null
+++ b/idea.run.configuration/All V2 Rest Services.run.xml       
@@ -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>
\ No newline at end of file
diff --git a/idea.run.configuration/All in archiva-rest-services JDK11.run.xml 
b/idea.run.configuration/All in archiva-rest-services JDK11.run.xml
new file mode 100644
index 0000000..50a49d7
--- /dev/null
+++ b/idea.run.configuration/All in archiva-rest-services JDK11.run.xml 
@@ -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>
\ No newline at end of file
diff --git a/idea.run.configuration/V2 AuthenticationServiceTest.run.xml 
b/idea.run.configuration/V2 AuthenticationServiceTest.run.xml
new file mode 100644
index 0000000..2e822b7
--- /dev/null
+++ b/idea.run.configuration/V2 AuthenticationServiceTest.run.xml       
@@ -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>
\ No newline at end of file
diff --git a/idea.run.configuration/org.apache.archiva.redback.rest.services.v2 
in redback-rest-services.run.xml 
b/idea.run.configuration/org.apache.archiva.redback.rest.services.v2 in 
redback-rest-services.run.xml
new file mode 100644
index 0000000..56e3851
--- /dev/null
+++ b/idea.run.configuration/org.apache.archiva.redback.rest.services.v2 in 
redback-rest-services.run.xml       
@@ -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>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 477b692..7798486 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1033,6 +1033,7 @@
             <!-- IntelliJ IDEA files -->
             <exclude>.idea/**</exclude>
             <exclude>**/*.iml</exclude>
+            <exclude>idea.run.configuration/**</exclude>
             <!-- Eclipse files -->
             <exclude>.project</exclude>
             <exclude>.classpath</exclude>
diff --git 
a/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/interceptors/PermissionsInterceptor.java
 
b/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/interceptors/PermissionsInterceptor.java
index 2ab5fb2..0504a2b 100644
--- 
a/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/interceptors/PermissionsInterceptor.java
+++ 
b/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/interceptors/PermissionsInterceptor.java
@@ -170,9 +170,11 @@ public class PermissionsInterceptor
                         return;
                     } else {
                         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() );
                 return;
             }
diff --git 
a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
 
b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
index 5677519..1f33566 100644
--- 
a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
+++ 
b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
@@ -23,7 +23,6 @@ import io.restassured.builder.RequestSpecBuilder;
 import io.restassured.specification.RequestSpecification;
 import 
org.apache.archiva.redback.integration.security.role.RedbackRoleConstants;
 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.RoleManagerException;
 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.port;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 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
@@ -75,13 +74,11 @@ public abstract class AbstractNativeRestServices
     private static AtomicInteger serverStarted = new AtomicInteger( STOPPED );
     private UserManager userManager;
     private RoleManager roleManager;
-    private String adminPwd;
-
 
 
     public AbstractNativeRestServices( )
     {
-        this.adminPwd = BaseSetup.getAdminPwd( );
+
     }
 
     protected abstract String getServicePath( );
@@ -313,13 +310,20 @@ public abstract class AbstractNativeRestServices
             RestAssured.baseURI = "http://localhost";;
         }
         String basePath = getBasePath( );
-        RequestSpecBuilder builder = new RequestSpecBuilder( );
-        builder.setBaseUri( baseURI )
+        this.requestSpec = getRequestSpecBuilder().build( );
+        RestAssured.basePath = basePath;
+    }
+
+    protected RequestSpecBuilder getRequestSpecBuilder() {
+        return new RequestSpecBuilder().setBaseUri( baseURI )
             .setPort( port )
-            .setBasePath( basePath )
+            .setBasePath( getBasePath() )
             .addHeader( "Origin", RestAssured.baseURI + ":" + RestAssured.port 
);
-        this.requestSpec = builder.build( );
-        RestAssured.basePath = basePath;
+
+    }
+
+    protected RequestSpecification getRequestSpec(String bearerToken) {
+        return getRequestSpecBuilder( ).addHeader( "Authorization", "Bearer " 
+ bearerToken ).build();
     }
 
     protected void shutdownNative( ) throws Exception
diff --git 
a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeAuthenticationServiceTest.java
 
b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeAuthenticationServiceTest.java
index a3373ee..3fd9730 100644
--- 
a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeAuthenticationServiceTest.java
+++ 
b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeAuthenticationServiceTest.java
@@ -91,6 +91,15 @@ public class NativeAuthenticationServiceTest extends 
AbstractNativeRestServices
     }
 
     @Test
+    void authenticatedPing() {
+        Response result = given( ).spec( getRequestSpec() )
+            .contentType( JSON )
+            .when( ).get( "/ping/authenticated" ).then( ).statusCode( 401 )
+            .extract( ).response( );
+
+    }
+
+    @Test
     void tokenLogin() {
         Map<String, Object> jsonAsMap = new HashMap<>();
         jsonAsMap.put( "grant_type", "authorization_code" );
@@ -101,8 +110,14 @@ public class NativeAuthenticationServiceTest extends 
AbstractNativeRestServices
             .body( jsonAsMap )
             .when( ).post( "/authenticate").then( ).statusCode( 200 )
             .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" ) 
);
+
+        result = given( ).spec( getRequestSpec( accessToken ) )
+            .contentType( JSON )
+            .when( ).get( "/ping/authenticated" ).then( ).statusCode( 200 )
+            .extract( ).response( );
     }
 
     @Test

Reply via email to