blob: 123dac3ad55102befab21096005f572fa562ceb1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2016 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ua.tests.help.webapp;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import org.eclipse.help.internal.webapp.servlet.PluginsRootResolvingStream;
import org.eclipse.ua.tests.plugin.UserAssistanceTestPlugin;
import org.eclipse.ua.tests.util.ResourceFinder;
import org.junit.Test;
/**
* Test for replacing PLUGINS_ROOT with a relative path
*/
public class PluginsRootReplacement {
@Test
public void testEmpty() {
final String input = "";
checkFilter(input, input);
}
@Test
public void testNoMatch() {
final String input = "<HEAD><HEAD/>";
checkFilter(input, input);
}
@Test
public void testPartialMatch() {
final String input = "<A href = \"PLUGINS\">";
checkFilter(input, input);
}
@Test
public void testEndsUnmatched() {
final String input = "<A href = \"PLUGIN";
checkFilter(input, input);
}
@Test
public void testNotAtStart() {
final String input = "<A href = \"../PLUGINS_ROOT/plugin/a.html\">";
checkFilter(input, input);
}
@Test
public void testAtStart() {
final String input = "<A href = \"PLUGINS_ROOT/plugin/a.html\">";
final String expected = "<A href = \"../plugin/a.html\">";
checkFilter(input, expected);
}
@Test
public void testSecondArg() {
final String input = "<A alt=\"alt\" href = \"PLUGINS_ROOT/plugin/a.html\">";
final String expected = "<A alt=\"alt\" href = \"../plugin/a.html\">";
checkFilter(input, expected);
}
@Test
public void testMultipleMatches() {
final String input = "<A href = \"PLUGINS_ROOT/plugin/a.html\"><A href = \"PLUGINS_ROOT/plugin/b.html\">";
final String expected = "<A href = \"../plugin/a.html\"><A href = \"../plugin/b.html\">";
checkFilter(input, expected);
}
private void checkFilter(final String input, final String expected) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
try (OutputStream filteredOutput = new PluginsRootResolvingStream(output, null, "../")) {
filteredOutput.write(input.getBytes());
} catch (IOException e) {
fail("IO Exception");
}
assertEquals(expected, output.toString());
}
@Test
public void testHelpContentActiveAction() throws IOException {
String filename = "ua_help_content_active_action.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentActiveDebug() throws IOException {
String filename = "ua_help_content_active_debug.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentActiveInvoke() throws IOException {
String filename = "ua_help_content_active_invoke.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentActive() throws IOException {
String filename = "ua_help_content_active.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentManifest() throws IOException {
String filename = "ua_help_content_manifest.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentProcess() throws IOException {
String filename = "ua_help_content_process.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentNested() throws IOException {
String filename = "ua_help_content_nested.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentToc() throws IOException {
String filename = "ua_help_content_toc.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContentXhtml() throws IOException {
String filename = "ua_help_content_xhtml.htm";
checkFileContentsPreserved(filename);
}
@Test
public void testHelpContent() throws IOException {
String filename = "ua_help_content.htm";
checkFileContentsPreserved(filename);
}
/*
* Test a pages from the help system to make sure there is no corruption
* when it is transformed.
*/
private void checkFileContentsPreserved(String filename) throws IOException {
URL testURL = ResourceFinder.findFile(UserAssistanceTestPlugin.getDefault(),
"/data/help/performance/search/" + filename);
assertNotNull(testURL);
try (InputStream input = testURL.openStream(); ByteArrayOutputStream output = new ByteArrayOutputStream()) {
while (input.available() > 0) {
int next = input.read();
output.write(next);
}
String data = output.toString();
checkFilter(data, data);
}
}
}