mirror of https://github.com/apache/lucene.git
SOLR-12316: Fix test to work on linux and test also windows in a better way
This commit is contained in:
parent
1b76011421
commit
fb5b42a0e4
|
@ -19,6 +19,7 @@ package org.apache.solr.util;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.lucene.analysis.util.ResourceLoader;
|
import org.apache.lucene.analysis.util.ResourceLoader;
|
||||||
|
@ -29,11 +30,6 @@ import org.xml.sax.InputSource;
|
||||||
|
|
||||||
public class TestSystemIdResolver extends LuceneTestCase {
|
public class TestSystemIdResolver extends LuceneTestCase {
|
||||||
|
|
||||||
public void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
System.setProperty("solr.allow.unsafe.resourceloading", "true");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
System.clearProperty("solr.allow.unsafe.resourceloading");
|
System.clearProperty("solr.allow.unsafe.resourceloading");
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
|
@ -74,8 +70,6 @@ public class TestSystemIdResolver extends LuceneTestCase {
|
||||||
"solrres:/org/apache/solr/util/RTimer.class", "TestSystemIdResolver.class");
|
"solrres:/org/apache/solr/util/RTimer.class", "TestSystemIdResolver.class");
|
||||||
assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(testHome+"/collection1/conf/schema.xml"),
|
assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(testHome+"/collection1/conf/schema.xml"),
|
||||||
SystemIdResolver.createSystemIdFromResourceName(testHome+"/collection1/conf/solrconfig.xml"), "schema.xml");
|
SystemIdResolver.createSystemIdFromResourceName(testHome+"/collection1/conf/solrconfig.xml"), "schema.xml");
|
||||||
assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(testHome+"/crazy-path-to-schema.xml"),
|
|
||||||
SystemIdResolver.createSystemIdFromResourceName(testHome+"/crazy-path-to-config.xml"), "crazy-path-to-schema.xml");
|
|
||||||
|
|
||||||
// if somebody uses an absolute uri (e.g., file://) we should fail resolving:
|
// if somebody uses an absolute uri (e.g., file://) we should fail resolving:
|
||||||
IOException ioe = expectThrows(IOException.class, () -> {
|
IOException ioe = expectThrows(IOException.class, () -> {
|
||||||
|
@ -89,10 +83,24 @@ public class TestSystemIdResolver extends LuceneTestCase {
|
||||||
assertTrue(ioe.getMessage().startsWith("Cannot resolve absolute"));
|
assertTrue(ioe.getMessage().startsWith("Cannot resolve absolute"));
|
||||||
|
|
||||||
// check that we can't escape with absolute file paths:
|
// check that we can't escape with absolute file paths:
|
||||||
|
for (String path : Arrays.asList("/etc/passwd", "/windows/notepad.exe")) {
|
||||||
ioe = expectThrows(IOException.class, () -> {
|
ioe = expectThrows(IOException.class, () -> {
|
||||||
resolver.resolveEntity(null, null, "solrres:/solrconfig.xml", "/etc/passwd");
|
resolver.resolveEntity(null, null, "solrres:/solrconfig.xml", path);
|
||||||
});
|
});
|
||||||
assertTrue(ioe.getMessage().startsWith("Can't find resource '/etc/passwd' in classpath or"));
|
assertTrue(ioe.getMessage().startsWith("Can't find resource")
|
||||||
|
|| ioe.getMessage().contains("is outside resource loader dir"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testUnsafeResolving() throws Exception {
|
||||||
|
System.setProperty("solr.allow.unsafe.resourceloading", "true");
|
||||||
|
|
||||||
|
final Path testHome = SolrTestCaseJ4.getFile("solr/collection1").getParentFile().toPath();
|
||||||
|
final ResourceLoader loader = new SolrResourceLoader(testHome.resolve("collection1"), this.getClass().getClassLoader());
|
||||||
|
final SystemIdResolver resolver = new SystemIdResolver(loader);
|
||||||
|
|
||||||
|
assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(testHome+"/crazy-path-to-schema.xml"),
|
||||||
|
SystemIdResolver.createSystemIdFromResourceName(testHome+"/crazy-path-to-config.xml"), "crazy-path-to-schema.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue