HBASE-19020 HBase Rest test for xml parsing external entities should not rely on implementation of java XML APIs.

Signed-off-by: Chia-Ping Tsai <chia7712@gmail.com>
This commit is contained in:
Sean Busbey 2017-10-16 16:11:39 -05:00
parent e804dd0b60
commit e320df5a0c
1 changed files with 9 additions and 1 deletions

View File

@ -23,7 +23,10 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.IOException;
import javax.xml.bind.UnmarshalException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.rest.Constants;
import org.apache.hadoop.hbase.rest.model.StorageClusterVersionModel;
@ -37,6 +40,7 @@ import org.junit.experimental.categories.Category;
*/
@Category(SmallTests.class)
public class TestXmlParsing {
private static final Log LOG = LogFactory.getLog(TestXmlParsing.class);
@Test
public void testParsingClusterVersion() throws Exception {
@ -68,8 +72,12 @@ public class TestXmlParsing {
admin.getClusterVersion();
fail("Expected getClusterVersion() to throw an exception");
} catch (IOException e) {
assertEquals("Cause of exception ought to be a failure to parse the stream due to our " +
"invalid external entity. Make sure this isn't just a false positive due to " +
"implementation. see HBASE-19020.", UnmarshalException.class, e.getCause().getClass());
final String exceptionText = StringUtils.stringifyException(e);
final String expectedText = "The entity \"xee\" was referenced, but not declared.";
final String expectedText = "\"xee\"";
LOG.debug("exception text: '" + exceptionText + "'", e);
assertTrue("Exception does not contain expected text", exceptionText.contains(expectedText));
}
}