blob: fd687c698c75e94c5acff3a1d5b45c7659d072ad [file] [log] [blame]
/*******************************************************************************
* 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.scripting.sightly.it;
import java.io.IOException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.sling.testing.clients.util.FormEntityBuilder;
import org.junit.BeforeClass;
import org.junit.Test;
import io.sightly.tck.html.HTMLExtractor;
import io.sightly.tck.http.Client;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
public class SlingSpecificsSightlyIT {
private static Client client;
private static String launchpadURL;
private static final String SLING_USE = "/content/sightly/use.html";
private static final String SLING_JAVA_USE_NPE = "/content/sightly/use.javaerror.html";
private static final String SLING_JAVA_USE_INTERFACE = "/content/sightly/use.interface.html";
private static final String SLING_JAVA_USE_ABSTRACT = "/content/sightly/use.abstractClass.html";
private static final String SLING_JAVA_USE_SLING_MODEL_ERROR = "/content/sightly/use.slingmodel-error.html";
private static final String SLING_RESOURCE = "/content/sightly/resource.html";
private static final String SLING_RESOURCE_ACTUAL = "/content/sightly/actualresource.html";
private static final String SLING_TEMPLATE = "/content/sightly/template.html";
private static final String SLING_TEMPLATE_BAD_IDENTIFIER = "/content/sightly/template.bad-id.html";
private static final String SLING_JS_USE = "/content/sightly/use.jsuse.html";
private static final String SLING_JS_DEPENDENCY_RESOLUTION = "/content/sightly/use-sibling-dependency-resolution.html";
private static final String SLING_USE_INHERITANCE_WITHOVERLAY = "/content/sightly/useinheritance.html";
private static final String SLING_USE_INHERITANCE_WITHOUTOVERLAY = "/content/sightly/useinheritance.notoverlaid.html";
private static final String SLING_USE_INHERITANCE_AND_OVERLAY = "/content/sightly/inherit.html";
private static final String SLING_JAVA_USE_POJO_UPDATE = "/content/sightly/use.repopojo.html";
private static final String SLING_ATTRIBUTE_QUOTES = "/content/sightly/attributequotes.html";
private static final String SLING_CRLF = "/content/sightly/crlf";
private static final String SLING_CRLF_NOPKG = SLING_CRLF + ".nopkg.html";
private static final String SLING_CRLF_PKG = SLING_CRLF + ".pkg.html";
private static final String SLING_CRLF_WRONGPKG = SLING_CRLF + ".wrongpkg.html";
private static final String SLING_FORMAT = "/content/sightly/format.html";
private static final String SLING_SCRIPT_UPDATE = "/content/sightly/update.html";
private static final String SLING_REQUEST_ATTRIBUTES = "/content/sightly/requestattributes.html";
private static final String SLING_REQUEST_ATTRIBUTES_INCLUDE = "/content/sightly/requestattributes.include.html";
private static final String SLING_RESOURCE_USE = "/content/sightly/use.resource.html";
private static final String SLING_I18N = "/content/sightly/i18n";
private static final String TCK_XSS = "/sightlytck/exprlang/xss.html";
private static final String WHITESPACE = "/content/sightly/whitespace.html";
private static final String SYNTHETIC_RESOURCE = "/content/sightly/synthetic-resource.html";
private static final String PRECOMPILED = "/sightly-testing/precompiled.html";
@BeforeClass
public static void init() {
launchpadURL = System.getProperty("launchpad.http.server.url");
client = new Client();
}
@Test
public void testSlingModelsUseAPI() {
String url = launchpadURL + SLING_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#reqmodel"));
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#reqmodel-reqarg"));
assertEquals("nt:unstructured", HTMLExtractor.innerHTML(url, pageContent, "#reqmodel-bindings"));
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#resmodel"));
}
@Test
public void testAdaptablesUseAPI() {
String url = launchpadURL + SLING_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#resadapt"));
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#reqadapt"));
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#rradapt"));
}
@Test
public void testUseAPIWithOSGIService() {
String url = launchpadURL + SLING_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("Hello World!", HTMLExtractor.innerHTML(url, pageContent, "#osgi"));
}
@Test
public void testEnumConstantAsString() {
String url = launchpadURL + SLING_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("ENUM_CONSTANT", HTMLExtractor.innerHTML(url, pageContent, "#test-enum"));
}
@Test
public void testErroneousUseObject() {
String url = launchpadURL + SLING_JAVA_USE_NPE;
String pageContent = client.getStringContent(url, 500);
assertTrue(pageContent.contains("java.lang.NullPointerException"));
}
@Test
public void testInterfaceUset() {
String url = launchpadURL + SLING_JAVA_USE_INTERFACE;
String pageContent = client.getStringContent(url, 500);
assertTrue(pageContent.contains(
"org.apache.sling.scripting.sightly.testing.adaptable.NonImplementedInterface represents an interface or an abstract class which cannot be instantiated"));
}
@Test
public void testAbstractClassUse() {
String url = launchpadURL + SLING_JAVA_USE_ABSTRACT;
String pageContent = client.getStringContent(url, 500);
assertTrue(pageContent.contains(
"org.apache.sling.scripting.sightly.testing.adaptable.AbstractRequestAdapterUseObject represents an interface or an abstract class which cannot be instantiated"));
}
@Test
public void testDataSlyResourceArraySelectors() {
String url = launchpadURL + SLING_RESOURCE;
String pageContent = client.getStringContent(url, 200);
assertEquals("selectors: a.b", HTMLExtractor.innerHTML(url, pageContent, "#selectors span.selectors"));
assertEquals("selectors: a.b", HTMLExtractor.innerHTML(url, pageContent, "#selectors-remove-c span.selectors"));
assertEquals("selectors: a.c", HTMLExtractor.innerHTML(url, pageContent, "#removeselectors-remove-b span.selectors"));
assertEquals("selectors: a.b.c", HTMLExtractor.innerHTML(url, pageContent, "#addselectors span.selectors"));
assertEquals("It works", HTMLExtractor.innerHTML(url, pageContent, "#dot"));
assertEquals("path: /content/sightly/text.txt", HTMLExtractor.innerHTML(url, pageContent, "#extension-selectors span.path"));
assertEquals("selectors: a.b", HTMLExtractor.innerHTML(url, pageContent, "#extension-selectors span.selectors"));
assertEquals("path: /content/sightly/text.txt", HTMLExtractor.innerHTML(url, pageContent, "#extension-replaceselectors span.path"));
assertEquals("selectors: c", HTMLExtractor.innerHTML(url, pageContent, "#extension-replaceselectors span.selectors"));
}
@Test
public void testDataSlyResourceResolution() {
String url = launchpadURL + SLING_RESOURCE;
String pageContent = client.getStringContent(url, 200);
assertEquals("resource.with.dots.in.path", HTMLExtractor.innerHTML(url, pageContent,
"#_content_sightly_resource_with_dots_in_path span" +
".name"));
assertEquals("/content/sightly/resource.with.dots.in.path", HTMLExtractor.innerHTML(url, pageContent,
"#_content_sightly_resource_with_dots_in_path span" +
".path"));
assertEquals("false", HTMLExtractor.innerHTML(url, pageContent, "#_content_sightly_resource_with_dots_in_path span" +
".synthetic"));
assertEquals("nonexistingresource", HTMLExtractor.innerHTML(url, pageContent, "#_content_sightly_nonexistingresource span" +
".name"));
assertEquals("/content/sightly/nonexistingresource", HTMLExtractor.innerHTML(url, pageContent,
"#_content_sightly_nonexistingresource span" +
".path"));
assertEquals("true", HTMLExtractor.innerHTML(url, pageContent, "#_content_sightly_nonexistingresource span.synthetic"));
assertEquals("resource", HTMLExtractor.innerHTML(url, pageContent, "#_content_sightly_resource span" +
".name"));
assertEquals("/content/sightly/resource", HTMLExtractor.innerHTML(url, pageContent, "#_content_sightly_resource span" +
".path"));
assertEquals("false", HTMLExtractor.innerHTML(url, pageContent, "#_content_sightly_resource span.synthetic"));
assertEquals("", HTMLExtractor.innerHTML(url, pageContent, "#wrapper-no-recursion"));
}
@Test
public void testDataSlyTemplate() {
String url = launchpadURL + SLING_TEMPLATE;
String pageContent = client.getStringContent(url, 200);
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "#template"));
}
@Test
public void testBadTemplateIdentifier() {
String url = launchpadURL + SLING_TEMPLATE_BAD_IDENTIFIER;
String pageContent = client.getStringContent(url, 500);
assertTrue(pageContent.contains(
"org.apache.sling.scripting.sightly.java.compiler.SightlyJavaCompilerException: Unsupported identifier name: bad-template-id"));
}
@Test
public void testJSUseAPI() {
String url = launchpadURL + SLING_JS_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("use", HTMLExtractor.innerHTML(url, pageContent, "#resource-name"));
assertEquals("use", HTMLExtractor.innerHTML(url, pageContent, "#resource-getName"));
assertEquals("/apps/sightly/scripts/use", HTMLExtractor.innerHTML(url, pageContent, "#resource-resourceType"));
assertEquals("/apps/sightly/scripts/use", HTMLExtractor.innerHTML(url, pageContent, "#resource-getResourceType"));
}
@Test
public void testJSUseAPISiblingDependencies() {
String url = launchpadURL + SLING_JS_DEPENDENCY_RESOLUTION;
String pageContent = client.getStringContent(url, 200);
assertEquals("/apps/sightly/scripts/siblingdeps/dependency.js", HTMLExtractor.innerHTML(url, pageContent, "#js-rep-res"));
}
@Test
public void testUseAPIInheritanceOverlaying() {
String url = launchpadURL + SLING_USE_INHERITANCE_WITHOVERLAY;
String pageContent = client.getStringContent(url, 200);
assertEquals("child.javaobject", HTMLExtractor.innerHTML(url, pageContent, "#javaobj"));
assertEquals("child.javascriptobject", HTMLExtractor.innerHTML(url, pageContent, "#javascriptobj"));
assertEquals("child.ecmaobject", HTMLExtractor.innerHTML(url, pageContent, "#ecmaobj"));
assertEquals("child.template", HTMLExtractor.innerHTML(url, pageContent, "#templateobj"));
assertEquals("child.partials.javascript", HTMLExtractor.innerHTML(url, pageContent, "#partialsjs"));
assertEquals("child.partials.ecmaobject", HTMLExtractor.innerHTML(url, pageContent, "#partialsecma"));
assertEquals("child.partials.template", HTMLExtractor.innerHTML(url, pageContent, "#partialstemplate"));
assertEquals("child.partials.included", HTMLExtractor.innerHTML(url, pageContent, "#partialsincluded"));
assertEquals("child.partials.javaobject", HTMLExtractor.innerHTML(url, pageContent, "#partialsjava"));
assertEquals("child.partials.javascript", HTMLExtractor.innerHTML(url, pageContent, "#partials-included-js"));
}
@Test
public void testUseAPIInheritanceWithoutOverlay() {
String url = launchpadURL + SLING_USE_INHERITANCE_WITHOUTOVERLAY;
String pageContent = client.getStringContent(url, 200);
assertEquals("notoverlaid", HTMLExtractor.innerHTML(url, pageContent, "#notoverlaid"));
}
@Test
public void testUseAPIInheritanceAndOverlay() {
String url = launchpadURL + SLING_USE_INHERITANCE_AND_OVERLAY;
String pageContent = client.getStringContent(url, 200);
assertEquals("base.js", HTMLExtractor.innerHTML(url, pageContent, "div.include-inherit"));
}
@Test
public void testRepositoryPojoUpdate() throws Exception {
String url = launchpadURL + SLING_JAVA_USE_POJO_UPDATE;
String pageContent = client.getStringContent(url, 200);
assertEquals("original", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
uploadFile("RepoPojo.java.updated", "RepoPojo.java", "/apps/sightly/scripts/use");
Thread.sleep(1000);
pageContent = client.getStringContent(url, 200);
assertEquals("updated", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
uploadFile("RepoPojo.java.original", "RepoPojo.java", "/apps/sightly/scripts/use");
Thread.sleep(1000);
pageContent = client.getStringContent(url, 200);
assertEquals("original", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
}
@Test
public void testRepositoryPojoUpdateDirty() throws Exception {
String url = launchpadURL + SLING_JAVA_USE_POJO_UPDATE;
String pageContent = client.getStringContent(url, 200);
assertEquals("original", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
uploadFile("RepoPojo.java.updated", "RepoPojo.java", "/apps/sightly/scripts/use");
Thread.sleep(1000);
restartSightlyEngineBundle();
pageContent = client.getStringContent(url, 200);
assertEquals("updated", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
uploadFile("RepoPojo.java.original", "RepoPojo.java", "/apps/sightly/scripts/use");
Thread.sleep(1000);
restartSightlyEngineBundle();
pageContent = client.getStringContent(url, 200);
assertEquals("original", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
}
@Test
public void testScriptUpdate() throws Exception {
String url = launchpadURL + SLING_SCRIPT_UPDATE;
String pageContent = client.getStringContent(url, 200);
assertEquals("Hello world!", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#update"));
uploadFile("update.v2.html", "update.html", "/apps/sightly/scripts/update");
Thread.sleep(1000);
pageContent = client.getStringContent(url, 200);
assertEquals("Hello, John Doe!", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#update"));
uploadFile("update.html", "update.html", "/apps/sightly/scripts/update");
Thread.sleep(1000);
pageContent = client.getStringContent(url, 200);
assertEquals("Hello world!", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#update"));
}
@Test
public void testRepositoryPojoNoPkg() {
String url = launchpadURL + SLING_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("nopkg", HTMLExtractor.innerHTML(url, pageContent, "#repopojo-nopkg"));
}
@Test
public void testAttributeQuotes() {
String url = launchpadURL + SLING_ATTRIBUTE_QUOTES;
String pageContent = client.getStringContent(url, 200);
// need to test against the raw content
assertTrue(pageContent.contains("<span data-resource='{\"resource\" : " +
"\"/content/sightly/attributequotes\"}'>/content/sightly/attributequotes</span>"));
assertTrue(pageContent.contains("<span data-resource=\"/content/sightly/attributequotes\">/content/sightly/attributequotes</span" +
">"));
assertTrue(pageContent.contains("<span data-resource=\"/content/sightly/attributequotes\">/content/sightly/attributequotes</span" +
">"));
}
@Test
public void testCRLFNoPkg() {
String url = launchpadURL + SLING_CRLF_NOPKG;
String pageContent = client.getStringContent(url, 200);
assertEquals("nopkg", HTMLExtractor.innerHTML(url, pageContent, "#repopojocrlf-nopkg"));
}
@Test
public void testCRLFPkg() {
String url = launchpadURL + SLING_CRLF_PKG;
String pageContent = client.getStringContent(url, 200);
assertEquals("pkg", HTMLExtractor.innerHTML(url, pageContent, "#repopojocrlf-pkg"));
}
@Test
public void testCRLFWrongPkg() {
String url = launchpadURL + SLING_CRLF_WRONGPKG;
String pageContent = client.getStringContent(url, 500);
assertTrue(pageContent.contains("Compilation errors in apps/sightly/scripts/crlf/RepoPojoWrongPkgCRLF.java"));
}
@Test
public void actualResource() {
String url = launchpadURL + SLING_RESOURCE_ACTUAL;
String pageContent = client.getStringContent(url, 200);
String hash = HTMLExtractor.innerHTML(url, pageContent, "#hash");
String actual = HTMLExtractor.innerHTML(url, pageContent, "#actual");
String path = HTMLExtractor.innerHTML(url, pageContent, "#path");
assertEquals(hash, actual);
assertNotEquals(hash, path);
}
@Test
public void testRequestAttributes() {
String url = launchpadURL + SLING_REQUEST_ATTRIBUTES;
String pageContent = client.getStringContent(url, 200);
assertEquals("testValue", HTMLExtractor.innerHTML(url, pageContent, "#attrs-set"));
assertEquals("", HTMLExtractor.innerHTML(url, pageContent, "#attrs-unset"));
}
@Test
public void testRequestAttributesInclude() {
String url = launchpadURL + SLING_REQUEST_ATTRIBUTES_INCLUDE;
String pageContent = client.getStringContent(url, 200);
assertEquals("testValue", HTMLExtractor.innerHTML(url, pageContent, "#attrs-set"));
assertEquals("", HTMLExtractor.innerHTML(url, pageContent, "#attrs-unset"));
}
@Test
public void testResourceUse() {
String url = launchpadURL + SLING_RESOURCE_USE;
String pageContent = client.getStringContent(url, 200);
assertEquals("foobar-someresource", HTMLExtractor.innerHTML(url, pageContent, "#someresource .data"));
assertEquals("foobar-somefolder", HTMLExtractor.innerHTML(url, pageContent, "#somefolder .data"));
assertEquals("foobar-sometemplate", HTMLExtractor.innerHTML(url, pageContent, "#sometemplate .data"));
assertEquals("foobar-somejava", HTMLExtractor.innerHTML(url, pageContent, "#somejava .data"));
assertEquals("foobar-somejs", HTMLExtractor.innerHTML(url, pageContent, "#somejs .data"));
assertEquals("foobar-someecma", HTMLExtractor.innerHTML(url, pageContent, "#someecma .data"));
}
@Test
public void testI18nBasename() {
String url = launchpadURL + SLING_I18N + ".basename.html";
String pageContent = client.getStringContent(url, 200);
assertEquals("die Bank", HTMLExtractor.innerHTML(url, pageContent, "#i18n-basename-finance"));
assertEquals("das Ufer", HTMLExtractor.innerHTML(url, pageContent, "#i18n-nobasename"));
}
@Test
public void testFormatWithPredefinedStyles() {
String url = launchpadURL + SLING_FORMAT;
String pageContent = client.getStringContent(url, 200);
assertEquals("01.12.1918", HTMLExtractor.innerHTML(url, pageContent, "#format-date-1"));
assertEquals("01.12.18", HTMLExtractor.innerHTML(url, pageContent, "#format-date-2"));
assertEquals("01.12.18", HTMLExtractor.innerHTML(url, pageContent, "#format-date-3"));
assertEquals("Sonntag, 1. Dezember 1918", HTMLExtractor.innerHTML(url, pageContent, "#format-date-4"));
}
@Test
public void testXSSAttributeEscaping() {
String url = launchpadURL + TCK_XSS;
String pageContent = client.getStringContent(url, 200);
assertTrue(pageContent.contains("<p id=\"req-context-8\" onclick=\"console.log('red')\">Paragraph</p>"));
}
@Test
public void testWhiteSpaceExpressions() {
String url = launchpadURL + WHITESPACE;
String pageContent = client.getStringContent(url, 200);
assertEquals("true", HTMLExtractor.innerHTML(url, pageContent, "#nbsp"));
assertEquals("true", HTMLExtractor.innerHTML(url, pageContent, "#tab"));
assertEquals("true", HTMLExtractor.innerHTML(url, pageContent, "#newline"));
}
@Test
public void testSyntheticResourceResolution() {
String url = launchpadURL + SYNTHETIC_RESOURCE;
String pageContent = client.getStringContent(url, 200);
assertEquals("It works!", HTMLExtractor.innerHTML(url, pageContent, "#synthetic-resource-selector"));
}
@Test
public void testPrecompiled() {
final String title = "HTL Precompiled Scripts Test";
String url = launchpadURL + PRECOMPILED;
String pageContent = client.getStringContent(url, 200);
assertEquals("/content/sightly-testing/precompiled", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span" +
".internal-use-pojo-fqcn"));
assertEquals("/content/sightly-testing/precompiled", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span" +
".internal-use-pojo-scn"));
assertEquals(title, HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.request-adapter"));
assertEquals(title, HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.resource-adapter"));
assertEquals("SUCCESS", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.resolver-adapter"));
assertEquals(title, HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.request-model"));
assertEquals(title, HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.resource-model"));
assertEquals("Hello World!", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.test-service"));
assertEquals("Hello, John Doe", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.internal-exported-sling-model"));
assertEquals("Hello, John Doe", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.internal-sling-model"));
assertEquals("Evaluating ECMA scripts works just fine!", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.internal-script"));
assertEquals("Evaluating Use JS-objects works just fine!", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span" +
".internal-jsuse-script"));
assertEquals("precompiled - org/apache/sling/scripting/sightly/testing/precompiled", HTMLExtractor.innerHTML(url, pageContent, "div.precompiled > span.provided-jsuse-script"));
}
@Test
public void testSlingModelError() {
String url = launchpadURL + SLING_JAVA_USE_SLING_MODEL_ERROR;
String pageContent = client.getStringContent(url, 500);
assertTrue("Expected that the Sling Model would be instantiated directly via the ModelFactory.",
pageContent.contains(
"Could not inject private java.lang.String org.apache.sling.scripting.sightly.testing.models.ResourceResolverModel.userID"
)
);
}
@Test
public void testSlingTemplatesAccessControlRepositoryScripts() {
String classic = launchpadURL + "/content/sightly-testing/templates-access-control/classic.html";
String classicPageContent = client.getStringContent(classic, 200);
assertEquals("template loaded", HTMLExtractor.innerHTML(classic, classicPageContent, "div.wrapper > div.include-wrapper > div" +
".template"));
}
@Test
public void testSlingTemplatesAccessControlBundledScripts() {
String precompiled = launchpadURL + "/content/sightly-testing/templates-access-control/precompiled.html";
String precompiledPageContent = client.getStringContent(precompiled, 200);
assertEquals("template loaded", HTMLExtractor.innerHTML(precompiled, precompiledPageContent, "div.precompiled-wrapper > div" +
".precompiled-include-wrapper > div.template"));
}
private void restartSightlyEngineBundle() throws InterruptedException, IOException {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(launchpadURL + "/system/console/bundles/org.apache.sling.scripting.sightly");
// Stop bundle
FormEntityBuilder formBuilder = FormEntityBuilder.create();
post.setHeader("Authorization", "Basic YWRtaW46YWRtaW4=");
formBuilder.addParameter("action", "stop");
post.setEntity(formBuilder.build());
httpClient.execute(post);
Thread.sleep(1000);
// Start bundle
formBuilder = FormEntityBuilder.create();
post.setHeader("Authorization", "Basic YWRtaW46YWRtaW4=");
formBuilder.addParameter("action", "start");
post.setEntity(formBuilder.build());
httpClient.execute(post);
Thread.sleep(1000);
}
private void uploadFile(String fileName, String serverFileName, String url) throws IOException {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(launchpadURL + url);
post.setHeader("Authorization", "Basic YWRtaW46YWRtaW4=");
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
InputStreamBody inputStreamBody = new InputStreamBody(this.getClass().getClassLoader().getResourceAsStream(fileName),
ContentType.TEXT_PLAIN, fileName);
entityBuilder.addPart(serverFileName, inputStreamBody);
post.setEntity(entityBuilder.build());
httpClient.execute(post);
}
}