This is an automated email from the ASF dual-hosted git repository. olli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-launchpad-test-services.git
The following commit(s) were added to refs/heads/master by this push: new 231694f SLING-7485 Do not rely on Launchpad Content 231694f is described below commit 231694fccb146241007d1b243d2c7e51ee136cf4 Author: Oliver Lietz <o...@apache.org> AuthorDate: Fri Feb 9 11:36:04 2018 +0100 SLING-7485 Do not rely on Launchpad Content add test content from Launchpad Content --- pom.xml | 3 +- .../SLING-INF/content/initial-content-folder.json | 6 + .../resources/SLING-INF/content/sling/assert.js | 42 ++++++ .../content/sling/initial-content-test.json | 4 + .../SLING-INF/content/sling/sling-test.html | 153 +++++++++++++++++++++ src/main/resources/SLING-INF/root/ROOT.json | 5 + src/main/resources/SLING-INF/root/index.html | 22 +++ 7 files changed, 234 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6ddea96..2e04d1f 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,8 @@ </Sling-Nodetypes> <Sling-Initial-Content> SLING-INF/content;path:=/sling-test;overwrite=true;uninstall=true, - SLING-INF/install;path:=/apps/sling-test/install;overwrite=true;uninstall=true + SLING-INF/install;path:=/apps/sling-test/install;overwrite=true;uninstall=true, + SLING-INF/root;path:=/;overwrite=false;uninstall=false, </Sling-Initial-Content> <Sling-Bundle-Resources> /sling-test/sling/from-bundle;path:=/SLING-INF/res/sling-test/sling/from-bundle, diff --git a/src/main/resources/SLING-INF/content/initial-content-folder.json b/src/main/resources/SLING-INF/content/initial-content-folder.json new file mode 100644 index 0000000..b1042e9 --- /dev/null +++ b/src/main/resources/SLING-INF/content/initial-content-folder.json @@ -0,0 +1,6 @@ +{ + "folder-content-test" : { + "text" : "This node is used to test initial content loading", + "marker" : "46" + } +} diff --git a/src/main/resources/SLING-INF/content/sling/assert.js b/src/main/resources/SLING-INF/content/sling/assert.js new file mode 100755 index 0000000..7337816 --- /dev/null +++ b/src/main/resources/SLING-INF/content/sling/assert.js @@ -0,0 +1,42 @@ +/* + * 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. + */ + +// Minimal javascript assertion framework, used for sling client library automated testing. + +function assert(message,condition) { + if(condition != true) { + alert("Assertion failed: " + message); + } +} + +function assertEquals(message,a,b) { + if(a!=b) { + alert("assertEquals failed: " + message + ": " + a + "!=" + b); + } +} + +function assertNotNull(message,o) { + if(o==null) { + alert("assertNotNull failed: " + message); + } +} + +function assertNull(message,o) { + if(o!=null) { + alert("assertNull failed: " + message); + } +} diff --git a/src/main/resources/SLING-INF/content/sling/initial-content-test.json b/src/main/resources/SLING-INF/content/sling/initial-content-test.json new file mode 100644 index 0000000..3e3de03 --- /dev/null +++ b/src/main/resources/SLING-INF/content/sling/initial-content-test.json @@ -0,0 +1,4 @@ +{ + "text" : "This node is used to test initial content loading", + "marker" : "42" +} \ No newline at end of file diff --git a/src/main/resources/SLING-INF/content/sling/sling-test.html b/src/main/resources/SLING-INF/content/sling/sling-test.html new file mode 100755 index 0000000..3066d65 --- /dev/null +++ b/src/main/resources/SLING-INF/content/sling/sling-test.html @@ -0,0 +1,153 @@ + <html> + +<!-- + 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. +--> + +<head> + <title>Sling client library test page</title> + + <script src="/system/sling.js"></script> + <script src="assert.js"></script> + + <style type="text/css"> + .output { + background-color: #FFFF99; + border: solid #FF9900 1px; + padding: 2px; + } + .warning { + border: solid yellow 1px; + background-color: red; + color: white; + padding: 0.5em; + font-weight: bold; + } + </style> +</head> + +<body onload="runTests()"> + +<h1>Automated Sling client library tests</h1> +<p>Loading this page executes some simple automated javascript tests +of the Sling client library.</p> + +<p> +Note that you need to <a href="../../../?sling:authRequestLogin=1">login</a> before running these tests. +</p> + +<h2>Test results</h2> +<p>If all goes well, the paragraph styled <span class="output">like +this</span> below should say "Done running tests".</p> +<p>Tests run quickly, this might have happened already.</p> +<p>To run the tests again click <a href="javascript:runTests()">here</a>. +</p> +<div id="output" class="output" style="padding: 1em;">Tests are +running...</div> + +<h2>More info</h2> +<p>After running the tests at least once, <a + href="/test-data/sling-test/testhtml-nodes.infinity.json">/sling-test/testhtml-nodes.json</a> +should show the JSON data of the nodes created by the test cases.</p> +<p>See the source code of this page for details.</p> + + +<script language="javascript"> + function slingPost(url,params) { + var httpcon = Sling.getXHR(); + httpcon.open("POST", url, false); + httpcon.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + httpcon.setRequestHeader("Content-length", params.length); + httpcon.setRequestHeader("Connection", "close"); + httpcon.send(params); + return httpcon; + } + + function uniqueId() { + return new Date().getTime(); + } + + var passes = 0; + var baseTestPath = "/test-data/sling-test/testhtml-nodes"; + var testPath = baseTestPath + "/test-" + uniqueId(); + var testTime = uniqueId(); + + function testPost() { + var path = testPath + "/" + uniqueId(); + var c = slingPost(path,"title=hello&created=&empty=&time=" + testTime); + assert("testPost(): Expected 201 status for POST, got " + c.status,c.status == 201); + return path; + } + + function verifyPostedElement(path) { + var data = Sling.getContent(path,1); + assertNotNull("data",data); + assertEquals("verifyPostedElement: title matches","hello",data.title); + assertEquals("verifyPostedElement: time matches",testTime,data.time); + assertEquals("verifyPostedElement: created property is a string","string",typeof(data.created)); + // TODO implement 'created' autoset property + // assert("created property is not empty",data.created.length > 0); + assertEquals("verifyPostedElement: empty property is not stored","undefined",typeof(data.dummy)); + } + + function testGetSessionInfo() { + var session = Sling.getSessionInfo(); + assertNotNull("testGetSessionInfo: Sling.getSessionInfo()", session); + assertEquals("testGetSessionInfo: session.userID is a string","string",typeof(session.userID)); + assertEquals("testGetSessionInfo: session.userID == 'admin'","admin",session.userID); + + // since using Oak this is undefined + assertEquals("testGetSessionInfo: session.workspace is undefined","undefined",typeof(session.workspace)); + } + + function testRemoveContent() { + var deletePath = baseTestPath + "/sling-test/testhtml-nodes/delete-" + uniqueId(); + var c = slingPost(deletePath,"title=hello&created=&dummy=&time=" + uniqueId()); + assert("testRemoveContent: Expected 201 status for POST, got " + c.status,c.status == 201); + + var data = Sling.getContent(deletePath,1); + assertNotNull("testRemoveContent: data must be found before removeContent",data); + + var d = Sling.removeContent(deletePath); + assert("testRemoveContent: Expected 200 status for removeContent, got " + d.status,d.status == 200); + data = Sling.getContent(deletePath,1); + assertNull("testRemoveContent: data should be gone after deletePath (" + deletePath + ")",data); + } + + function testJsonLevels() { + var c = slingPost(baseTestPath + "/json-levels", "title=JsonLevelsTest"); + var data0 = Sling.getContent(baseTestPath,0); + var data1 = Sling.getContent(baseTestPath,1); + assert("testJsonLevels: Level 0 must not provide child", typeof data0['json-levels'] == "undefined"); + assert("testJsonLevels: Level 1 must provide child", typeof data1['json-levels'] == "object"); + assert("testJsonLevels: Level 1 must provide child title", data1['json-levels'].title == "JsonLevelsTest"); + } + + function runTests() { + var out = document.getElementById("output"); + out.innerHTML = "Tests are running..."; + assert(null,2 + 2 == 4); + var path = testPost(); + verifyPostedElement(path); + testGetSessionInfo(); + testRemoveContent(); + testJsonLevels(); + out.innerHTML = "<b>Done running tests, pass " + (++passes) + "</b>"; + } + </script> + +</body> +</html> diff --git a/src/main/resources/SLING-INF/root/ROOT.json b/src/main/resources/SLING-INF/root/ROOT.json new file mode 100644 index 0000000..3d46866 --- /dev/null +++ b/src/main/resources/SLING-INF/root/ROOT.json @@ -0,0 +1,5 @@ +{ + "jcr:mixinTypes": [ "sling:Redirect" ], + "sling:resourceType": "sling:redirect", + "sling:target": "/index.html" +} diff --git a/src/main/resources/SLING-INF/root/index.html b/src/main/resources/SLING-INF/root/index.html new file mode 100644 index 0000000..7cac9df --- /dev/null +++ b/src/main/resources/SLING-INF/root/index.html @@ -0,0 +1,22 @@ +<!-- +/* + * 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. + */ +--> +<html> +<!-- Do not remove this comment, used for Launchpad integration tests --> +This is some HTML for testing Sling. +</html> -- To stop receiving notification emails like this one, please contact o...@apache.org.