Author: dklco
Date: Fri May 31 14:53:56 2013
New Revision: 1488263

URL: http://svn.apache.org/r1488263
Log:
Adding integration tests for the new Resource Access Tags

Added:
    
sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/scripting/SlingJSPTaglibTest.java
    
sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp

Added: 
sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/scripting/SlingJSPTaglibTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/scripting/SlingJSPTaglibTest.java?rev=1488263&view=auto
==============================================================================
--- 
sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/scripting/SlingJSPTaglibTest.java
 (added)
+++ 
sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/scripting/SlingJSPTaglibTest.java
 Fri May 31 14:53:56 2013
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.launchpad.webapp.integrationtest.scripting;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.sling.launchpad.webapp.integrationtest.JspTestBase;
+import org.apache.sling.servlets.post.SlingPostConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Integration test of the new taglibs. Sets up a Sling instance, posts a 
simple
+ * Test JSP and page to it and then checks to make sure the page responds with 
a
+ * 200 response.
+ */
+public class SlingJSPTaglibTest extends JspTestBase {
+       private static final Logger log = LoggerFactory
+                       .getLogger(SlingJSPTaglibTest.class);
+       private String testPage;
+
+       protected void setUp() throws Exception {
+               super.setUp();
+               log.info("setUp");
+
+               final String testRootPath = HTTP_BASE_URL + "/"
+                               + getClass().getSimpleName() + "/" + 
System.currentTimeMillis();
+               log.info("Creating testing content...");
+               Map<String, String> props = new HashMap<String, String>() {
+                       {
+                               this.put("jcr:primaryType", "nt:unstructured");
+                               this.put("sling:resourceType", 
"integration-test/taglib-test");
+                       }
+               };
+               testPage = testClient.createNode(testRootPath
+                               + SlingPostConstants.DEFAULT_CREATE_SUFFIX, 
props);
+
+               log.info("Creating testing component...");
+               testClient.mkdir(HTTP_BASE_URL + 
"/apps/integration-test/taglib-test");
+               testClient.upload(
+                               HTTP_BASE_URL
+                                               + 
"/apps/integration-test/taglib-test/taglib-test.jsp",
+                               
SlingJSPTaglibTest.class.getClassLoader().getResourceAsStream(
+                                               
"integration-test/taglib-test.jsp"));
+
+               log.info("Initialization successful");
+       }
+
+       /**
+        * Tests the taglib.
+        * 
+        * @throws Exception
+        */
+       public void testTaglib() throws Exception {
+               log.info("testTaglib");
+
+               log.info("Executing content check");
+
+               final String content = getContent(testPage + ".html", 
CONTENT_TYPE_HTML);
+               log.info(content);
+               assertContains(content, "All Tests Succeeded");
+
+               log.info("testTaglib - TEST SUCCESSFUL");
+       }
+
+}

Added: 
sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp
URL: 
http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp?rev=1488263&view=auto
==============================================================================
--- 
sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp
 (added)
+++ 
sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp
 Fri May 31 14:53:56 2013
@@ -0,0 +1,126 @@
+<%@page session="false" contentType="text/html; charset=utf-8"%>
+<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.3"; %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>
+<sling:defineObjects/><c:set var="success" value="true" />
+AdaptTo Tag
+    Test 1: AdaptTo Tag
+    result: <sling:adaptTo adaptable="${resource}" 
adaptTo="org.apache.sling.api.resource.ValueMap" var="props" 
/><c:choose><c:when test="${not empty 
props}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+    Test 2: Test Non-Existent Class Handling
+    result: <sling:adaptTo adaptable="${resource}" 
adaptTo="org.apache.sling.api.resource.ValueMap2" var="props2" 
/><c:choose><c:when test="${empty 
props2}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+    Test 3: Test Null Adaptable Handling
+    result: <sling:adaptTo adaptable="${res}" 
adaptTo="org.apache.sling.api.resource.ValueMap" var="props3" 
/><c:choose><c:when test="${empty 
props3}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+    Test 4: Test Non-Adaptable Handling
+    result: <c:catch var="adaptionException"><sling:adaptTo adaptable="res" 
adaptTo="org.apache.sling.api.resource.ValueMap" var="props3" 
/></c:catch><c:choose><c:when test="${not empty adaptionException}">SUCCESS: 
${adaptionException}</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+Find Resources Tag
+    Test 1: Find Resources
+    Result: <sling:findResources query="/jcr:root//element(*, nt:file) order 
by @jcr:score" language="xpath" var="foundResources" /><c:choose><c:when 
test="${not empty foundResources}">SUCCESS</c:when><c:otherwise>ERROR<c:set 
var="success" value="false" /></c:otherwise></c:choose>
+
+    Test 2: Invalid Query
+    Result: <c:catch var="queryException"><sling:findResources 
query="/jcr:rootelement(*, nt:file) order by @jcr:score" language="xpath" 
var="foundResources2" /></c:catch><c:choose><c:when test="${not empty 
queryException}">SUCCESS: ${queryException}</c:when><c:otherwise>ERROR<c:set 
var="success" value="false" /></c:otherwise></c:choose>
+
+    Test 3: Invalid Language
+    Result: <c:catch var="queryException2"><sling:findResources 
query="/jcr:root//element(*, nt:file) order by @jcr:score" 
language="not-a-real-lang" var="foundResources3" /></c:catch><c:choose><c:when 
test="${not empty queryException2}">SUCCESS: 
${queryException}</c:when><c:otherwise>SUCCESS: 
${foundResources3}</c:otherwise></c:choose>
+    
+Get Property Tag
+<sling:getResource path="/apps/integration-test/taglib-test" var="component" 
/><sling:adaptTo var="componentProps" adaptable="${component}" 
adaptTo="org.apache.sling.api.resource.ValueMap" />
+    Test 1: Get Property
+    Result: <sling:getProperty properties="${componentProps}" 
key="jcr:created" var="property1" /><c:choose><c:when test="${not empty 
property1}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+    Test 2: Not Found Property
+    Result: <sling:getProperty properties="${componentProps}" 
key="sling:resourceType2" var="property2" /><c:choose><c:when test="${empty 
property2}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 3: Coercing Value
+    Result: <sling:getProperty properties="${componentProps}" 
key="jcr:created" var="property3" returnClass="java.util.Calendar" 
/><c:choose><c:when test="${not empty 
property3.time.month}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 4: Default Value
+    Result: <sling:getProperty properties="${componentProps}" key="emptyKey" 
var="property4" defaultValue="bob" /><c:choose><c:when test="${not empty 
property4}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+Get Resource Tag
+    Test 1: Get Resource
+    Result: <sling:getResource path="/apps/integration-test/" 
var="contentResource" /><c:choose><c:when test="${not empty 
contentResource.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 2: Get Relative Resource
+    Result: <sling:getResource path="taglib-test" var="contentResource2" 
base="${contentResource}" /><c:choose><c:when test="${not empty 
contentResource2.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 3: Not Found Handling
+    Result: <sling:getResource path="/does/not/exist" var="nfResource" 
/><c:choose><c:when test="${empty 
nfResource.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+    Test 4: Bad Base Handling
+    Result: <sling:getResource path="does/not/exist" var="nfResource2" 
base="${nfResource}" /><c:choose><c:when test="${empty 
nfResource2.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+List Children Tag
+    Test 1: Get Children
+    Result: <sling:listChildren resource="${contentResource}" 
var="childResources" /><c:choose><c:when test="${not empty 
childResources}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 2: Non-Existing Parent Handing
+    Result: <sling:listChildren resource="${nfResource}" var="childResources2" 
/><c:choose><c:when test="${empty 
childResources2}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 3: Bad Parent Handling
+    Result: <c:catch var="listException"><sling:listChildren 
resource="nfResource" var="childResources3" /></c:catch><c:choose><c:when 
test="${not empty listException}">SUCCESS</c:when><c:otherwise>ERROR<c:set 
var="success" value="false" /></c:otherwise></c:choose>
+    
+    
+AdaptTo Function
+    Test 1: AdaptTo
+    result: <c:set var="props4" 
value="${sling:adaptTo(resource,'org.apache.sling.api.resource.ValueMap')}" 
/><c:choose><c:when test="${not empty 
props4}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+    Test 2: Test Non-Existent Class Handling
+    result: <c:set var="props5" 
value="${sling:adaptTo(resource,'org.apache.sling.api.resource.ValueMap2')}" 
/><c:choose><c:when test="${empty 
props5}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+    Test 3: Test Null Adaptable Handling
+    result: <c:set var="props6" 
value="${sling:adaptTo(res,'org.apache.sling.api.resource.ValueMap')}" 
/><c:choose><c:when test="${empty 
props6}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+    Test 4: Test Non-Adaptable Handling
+    result: <c:catch var="adaptionException2"><c:set var="props7" 
value="${sling:adaptTo('res','org.apache.sling.api.resource.ValueMap')}" 
/></c:catch><c:choose><c:when test="${not empty adaptionException2}">SUCCESS: 
${adaptionException}</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+Find Resources Function
+    Test 1: Find Resources
+    Result: <c:set var="foundResources4" 
value="${sling:findResources(resourceResolver, '/jcr:root//element(*, nt:file) 
order by @jcr:score', 'xpath')}" /><c:choose><c:when test="${not empty 
foundResources4}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 2: Invalid Query
+    Result: <c:catch var="queryException3"><c:set var="foundResources5" 
value="${sling:findResources(resourceResolver, '/jcr:rootelement(*, nt:file) 
order by @jcr:score', 'xpath')}" /></c:catch><c:choose><c:when test="${not 
empty queryException3}">SUCCESS: 
${queryException}</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+
+    Test 3: Invalid Language
+    Result: <c:catch var="queryException4"><c:set var="foundResources6" 
value="${sling:findResources(resourceResolver, '/jcr:rootelement(*, nt:file) 
order by @jcr:score', 'xpath')}" /></c:catch><c:choose><c:when test="${not 
empty queryException4}">SUCCESS: 
${queryException}</c:when><c:otherwise>ERROR<c:set var="success" value="false" 
/></c:otherwise></c:choose>
+    
+Get Relative Resource Function
+    Test 1: Get Relative Resource
+    Result: <c:set var="contentResource4" 
value="${sling:getRelativeResource(contentResource, 'taglib-test')}" 
/><c:choose><c:when test="${not empty 
contentResource4.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 2: Bad Base Handling
+    Result: <c:set var="nfresource4" 
value="${sling:getRelativeResource(nfResource, 'test123123')}" 
/><c:choose><c:when test="${empty 
nfresource4.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+    Test 3: Not Found Handling
+    Result: <c:set var="nfresource5" 
value="${sling:getRelativeResource(contentResource, 'test123123')}" 
/><c:choose><c:when test="${empty 
nfresource5.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+Get Resource Function
+    Test 1: Get Resource
+    Result: <c:set var="contentResource5" 
value="${sling:getResource(resourceResolver, '/apps')}" /><c:choose><c:when 
test="${not empty 
contentResource5.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 2: Bad Resolver
+    Result: <c:catch var="resourceException"><c:set var="nfresource6" 
value="${sling:getResource(badResolver, '/content')}" 
/></c:catch><c:choose><c:when test="${not empty 
resourceException}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+    Test 3: Not Found Handling
+    Result: <c:set var="nfresource7" 
value="${sling:getResource(resourceResolver, 'test123123')}" 
/><c:choose><c:when test="${empty 
nfresource7.path}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+    
+List Children Function
+    Test 1: Get Children
+    Result: <c:set var="childResources4" 
value="${sling:listChildren(contentResource)}" /><c:choose><c:when test="${not 
empty childResources4}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 2: Non-Existing Parent Handing
+    Result: <c:set var="childResources5" 
value="${sling:listChildren(nfResource)}" /><c:choose><c:when test="${empty 
childResources5}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" 
value="false" /></c:otherwise></c:choose>
+
+    Test 3: Bad Parent Handling
+    Result: <c:catch var="listException2"><c:set var="childResources6" 
value="${sling:listChildren('noVar')}" /></c:catch><c:choose><c:when 
test="${not empty listException2}">SUCCESS</c:when><c:otherwise>ERROR<c:set 
var="success" value="false" /></c:otherwise></c:choose>
+    
+<c:choose>
+    <c:when test="${success}">
+        All Tests Succeeded
+    </c:when>
+    <c:otherwise>
+        Test Failures
+    </c:otherwise>
+</c:choose>
\ No newline at end of file


Reply via email to