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

rombert pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-rules.git

commit 0a457c572138e72dbf2752b49f252e4eeb959446
Author: Bertrand Delacretaz <[email protected]>
AuthorDate: Tue May 3 08:20:23 2016 +0000

    README.md enhancements provided by Andrei Dulvac, thanks!
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1742067 
13f79535-47bb-0310-9956-ffa450edef68
---
 README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..999dedc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,61 @@
+# Sling Http Testing Rules
+The Sling Http Testing Rules allow writing integration tests easily. They are 
primarily meant to be used for tests that use http against 
+a Sling instance and make use of the `org.apache.sling.testing.clients` which 
offer a simple, immutable and extendable way of working 
+with specialized http clients.
+
+The junit rules incorporate boiler-plate logic that is shared in tests and 
take the modern approach of using junit rules rather than 
+inheritance. The `SlingRule` (for methods) or `SlingClassRule` are base rules, 
chaining other rules like `TestTimeoutRule`, 
+`TestDescriptionRule`, `FilterRule`. The `SlingInstanceRule` extends that and 
starts a Sling instance if needed and also allows 
+instantiating a `SlingClient` pointing to the instance - base url, 
credentials, etc.
+    
+
+## <a name="starting"></a> Starting an Integration Test
+Starting an integration is very simple out of the box, but is very extendable, 
both by combining or configuring the junit rules and by 
+using the versatile `SlingClient` (which can be extended or adapted by calling 
`adaptTo(MyClient.class)` without losing the client 
+configuration)
+ 
+### Simple Example using SlingInstanceRule
+
+```java   
+    public class MySimpleIT {
+    
+        @ClassRule
+        public static SlingInstanceRule instanceRule = new SlingInstanceRule();
+    
+        @Rule
+        public SlingRule methodRule = new SlingRule(); // will configure test 
timeout, description, etc.
+    
+        @Test
+        public void testChangeOSGiConfig() {
+           SlingClient client = instanceRule.getAdminClient();
+           client.createNode("/content/myNode", "nt:unstructured");
+           Assert.assertTrue("Node should be there", 
client.exists("/content/myNode"));
+        }
+            
+    } 
+```
+ 
+### Example using SlingInstanceRule and the clients
+
+```java   
+    public class MyOSGiIT {
+        @ClassRule
+        public static SlingInstanceRule instanceRule = new SlingInstanceRule();
+    
+        @Rule
+        public SlingRule methodRule = new SlingRule(); // will configure test 
timeout, description, etc.
+    
+        @Test
+        public void testChangeOSGiConfig() {
+           OsgiConsoleClient osgiClient = 
instanceRule.getAdminClient(OsgiConsoleClient.class);
+           // Save osgi config for pid (to be restored later) 
+           InstanceConfig osgiConfig = new OsgiInstanceConfig(osgiClient, 
"MYPID").save();
+           // edit the config for this test
+           osgiClient.editConfigurationWithWait(20, "MYPID", null, myMap);
+           SlingHttpResponse response = 
osgiClient.adaptTo(MyClient.class).myClientMethod();
+           response.checkContentContains("my expected content");
+           osgiConfig.restore();
+        }
+            
+    } 
+```
\ No newline at end of file

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

Reply via email to