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

rombert pushed a commit to annotated tag 
org.apache.sling.junit.healthcheck-1.0.4
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-junit-healthcheck.git

commit dd11d79889edc8ad32989b2551c9db3ffac8fef3
Author: Bertrand Delacretaz <[email protected]>
AuthorDate: Tue Mar 22 15:27:12 2011 +0000

    SLING-2029 - RequestCustomizer allows for setting credentials (or other 
options) in RemoteTestHttpClient
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/testing/junit/remote@1084217 
13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/junit/remote/exported/ExampleRemoteTest.java   | 16 ++++++++++++++--
 .../junit/remote/httpclient/RemoteTestHttpClient.java    | 10 +++++++++-
 .../sling/junit/remote/ide/SlingRemoteExecutionRule.java | 11 ++++++++++-
 .../junit/remote/testrunner/SlingRemoteTestRunner.java   |  8 ++++++++
 4 files changed, 41 insertions(+), 4 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java 
b/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java
index 063a4f4..ba7b6be 100644
--- 
a/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java
+++ 
b/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java
@@ -18,8 +18,11 @@ package org.apache.sling.junit.remote.exported;
 
 import static org.junit.Assert.fail;
 import org.apache.sling.junit.remote.ide.SlingRemoteExecutionRule;
+import org.apache.sling.testing.tools.http.Request;
 import org.junit.Rule;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /** Test that can be run remotely on a Sling instance from an IDE, by
  *  setting the {@link SlingRemoteExecutionRule.SLING_REMOTE_TEST_URL}
@@ -27,9 +30,18 @@ import org.junit.Test;
  *  the Sling JUnit servlet (like http://localhost:8080/system/sling/junit)
  */
 public class ExampleRemoteTest {
-    
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
+    /** Execute this test remotely and customize the request (could be
+     *  used to set credentials for example)
+     */
     @Rule
-    public SlingRemoteExecutionRule execRule = new SlingRemoteExecutionRule();
+    public SlingRemoteExecutionRule execRule = new SlingRemoteExecutionRule() {
+        @Override
+        public void customizeRequest(Request r) {
+            log.info("Customizing request {}", r);
+        }
+    };
     
     @Test
     public void testAlwaysPasses() {
diff --git 
a/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
 
b/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
index 6cecb44..793a19e 100644
--- 
a/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
+++ 
b/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java
@@ -23,6 +23,7 @@ import org.apache.http.client.ClientProtocolException;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.sling.testing.tools.http.Request;
 import org.apache.sling.testing.tools.http.RequestBuilder;
+import org.apache.sling.testing.tools.http.RequestCustomizer;
 import org.apache.sling.testing.tools.http.RequestExecutor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,6 +35,7 @@ public class RemoteTestHttpClient {
     private final String junitServletUrl;
     private StringBuilder subpath;
     private boolean consumeContent;
+    private RequestCustomizer requestCustomizer;
     private static final String SLASH = "/";
     private static final String DOT = ".";
     
@@ -45,6 +47,10 @@ public class RemoteTestHttpClient {
         this.consumeContent = consumeContent;
     }
     
+    public void setRequestCustomizer(RequestCustomizer c) {
+        requestCustomizer = c;
+    }
+    
     public RequestExecutor runTests(String testClassesSelector, String 
testMethodSelector, String extension) 
     throws ClientProtocolException, IOException {
         final RequestBuilder builder = new RequestBuilder(junitServletUrl);
@@ -82,7 +88,9 @@ public class RemoteTestHttpClient {
         
         log.info("Executing test remotely, path={} JUnit servlet URL={}", 
                 subpath, junitServletUrl);
-        final Request r = builder.buildPostRequest(subpath.toString());
+        final Request r = builder
+        .buildPostRequest(subpath.toString())
+        .withCustomizer(requestCustomizer);
         executor.execute(r).assertStatus(200);
 
         return executor;
diff --git 
a/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java 
b/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java
index 529d785..e6551de 100644
--- 
a/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java
+++ 
b/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java
@@ -20,6 +20,8 @@ import java.io.ObjectInputStream;
 
 import org.apache.http.HttpEntity;
 import org.apache.sling.junit.remote.httpclient.RemoteTestHttpClient;
+import org.apache.sling.testing.tools.http.Request;
+import org.apache.sling.testing.tools.http.RequestCustomizer;
 import org.apache.sling.testing.tools.http.RequestExecutor;
 import org.junit.rules.MethodRule;
 import org.junit.runners.model.FrameworkMethod;
@@ -32,7 +34,7 @@ import org.slf4j.LoggerFactory;
  *  Used to execute tests from an IDE and have then run
  *  on a remote Sling instance. 
  */
-public class SlingRemoteExecutionRule implements MethodRule {
+public class SlingRemoteExecutionRule implements MethodRule, RequestCustomizer 
{
    private static final Logger log = 
        LoggerFactory.getLogger(SlingRemoteExecutionRule.class);
 
@@ -76,6 +78,7 @@ public class SlingRemoteExecutionRule implements MethodRule {
        final String methodName = method.getMethod().getName();
        
        final RemoteTestHttpClient testHttpClient = new 
RemoteTestHttpClient(remoteUrl, false);
+       testHttpClient.setRequestCustomizer(this);
        final RequestExecutor executor = testHttpClient.runTests(
                testClassesSelector, methodName, "serialized"
        );
@@ -98,4 +101,10 @@ public class SlingRemoteExecutionRule implements MethodRule 
{
            }
        }
    }
+   
+   /** @inheritDoc */
+   public void customizeRequest(Request r) {
+       // Do nothing by default, tests that use this rule can
+       // customize this method
+   }
 }
\ No newline at end of file
diff --git 
a/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java
 
b/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java
index 175b774..3f6e28a 100644
--- 
a/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java
+++ 
b/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java
@@ -23,6 +23,7 @@ import org.apache.sling.commons.json.JSONArray;
 import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.commons.json.JSONTokener;
 import org.apache.sling.junit.remote.httpclient.RemoteTestHttpClient;
+import org.apache.sling.testing.tools.http.RequestCustomizer;
 import org.apache.sling.testing.tools.http.RequestExecutor;
 import org.junit.internal.AssumptionViolatedException;
 import org.junit.internal.runners.model.EachTestNotifier;
@@ -73,6 +74,13 @@ public class SlingRemoteTestRunner extends 
ParentRunner<SlingRemoteTest> {
         }
         
         testHttpClient = new 
RemoteTestHttpClient(testParameters.getJunitServletUrl(), true);
+
+        // Let the parameters class customize the request if desired 
+        if(testParameters instanceof RequestCustomizer) {
+            
testHttpClient.setRequestCustomizer((RequestCustomizer)testParameters);
+        }
+        
+        // Run tests remotely and get response
         final RequestExecutor executor = testHttpClient.runTests(
                 testParameters.getTestClassesSelector(),
                 testParameters.getTestMethodSelector(),

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to