blob: 32f83c546d89dc863a7ab1c5866e881b58e90bd1 [file] [log] [blame]
package ValidatingXSRTests.checkin;
import org.apache.xmlbeans.impl.common.InvalidLexicalValueException;
import org.apache.xmlbeans.impl.util.XsTypeConverter;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* Created by Cezar Andrei (cezar dot andrei at gmail dot com)
* Date: Jul 23, 2009
*/
public class TestUriValidation {
@Test
public void testLexAnyUriValid()
{
String[] validURIs = {
"http://www.ics.uci.edu/pub/ietf/uri/#Related",
"http://www.ics.uci.edu/pub/ietf/uri/?query=abc#Related",
"http://a/b/c/d;p?q",
"g:h",
"./g",
"g/",
"/g",
"//g",
"?y",
"g?y",
"#s",
"g#s",
"g?y#s",
";x",
"g;x",
"g;x?y#s",
".",
"./",
"..",
"../",
"../g",
"../..",
"../../",
"../../g",
"http:// www .ics.uci.edu /pub/ietf/uri /#Related",
"http:// www .ics.uci.edu /pub/iet%20%20f/uri /#Related",
"http:\\example.com\\examples",
"http:\\\\example.com\\\\examples",
};
for (int i = 0; i < validURIs.length; i++)
{
try
{
XsTypeConverter.lexAnyURI(validURIs[i]);
}
catch (RuntimeException e)
{
System.out.println("URI should be valid: " + validURIs[i] + " " + e.getCause().getCause().getMessage());
fail("URI should be valid: " + validURIs[i]);
}
}
}
@Test
public void testLexAnyUriInvalid()
{
// From XQTS cvshead June 2009
String[] invalidURIs = {
"http:\\\\invalid>URI\\someURI", // K2-SeqExprCast-207: Construct an xs:anyURI from an invalid string. However, in F&O 17.1.1, it is said that "For xs:anyURI, the extent to which an implementation validates the lexical form of xs:anyURI is implementation dependent.".
"http://www.example.com/file%GF.html", // K2-SeqExprCast-210: '%' is not a disallowed character and therefore it's not encoded before being considered for RFC 2396 validness.
"foo://", // K2-SeqExprCast-421: Pass an invalid anyURI.
"foo:", // K2-SeqExprCast-421-2: Pass an invalid anyURI.
"%gg", // K2-SeqExprCast-422: Pass an invalid anyURI(#2).
":/cut.jpg", // K2-SeqExprCast-423: no scheme
":/images/cut.png", // K2-SeqExprCast-424: An URI without scheme, combined with a relative directory.
":/", // K2-SeqExprCast-505: ':/' is an invalid URI, no scheme.
"http:%%", // fn-resolve-uri-4: Evaluation of resolve-uri function with an invalid URI value for second argument.
":", // fn-resolve-uri-3: Evaluation of resolve-uri function with an invalid URI value for first argument.
"###Rel",
"##",
"????###",
"###????"
};
for (int i = 0; i < invalidURIs.length; i++)
{
try
{
XsTypeConverter.lexAnyURI(invalidURIs[i]);
System.out.println("URI should be invalid: " + invalidURIs[i] );
fail("URI should be invalid: " + invalidURIs[i]);
}
catch (InvalidLexicalValueException e)
{
assertTrue("URI should be invalid: " + invalidURIs[i] + " " + e.getCause().getCause().getMessage(), true);
}
}
}
}