blob: d312b42430456a15cf7484e8dc449f011e39663c [file] [log] [blame]
/*
* Copyright 2016 Webindex authors (see AUTHORS)
*
* Licensed 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 webindex.data.util;
import org.junit.Assert;
import org.junit.Test;
import webindex.core.models.URL;
public class DataUrlTest {
public static URL build(String rawUrl) {
return DataUrl.from(rawUrl);
}
public static boolean isValid(String rawUrl) {
return DataUrl.isValid(rawUrl);
}
@Test
public void testBasic() throws Exception {
// valid urls
Assert.assertTrue(isValid(" \thttp://example.com/ \t\n\r\n"));
Assert.assertTrue(isValid("http://1.2.3.4:80/test?a=b&c=d"));
Assert.assertTrue(isValid("http://1.2.3.4/"));
Assert.assertTrue(isValid("http://a.b.c.d.com/1/2/3/4/5"));
Assert.assertTrue(isValid("http://a.b.com:281/1/2"));
Assert.assertTrue(isValid("http://A.B.Com:281/a/b"));
Assert.assertTrue(isValid("http://A.b.Com:281/A/b"));
Assert.assertTrue(isValid("http://a.B.Com?A/b/C"));
Assert.assertTrue(isValid("http://A.Be.COM"));
Assert.assertTrue(isValid("http://1.2.3.4:281/1/2"));
// invalid urls
Assert.assertFalse(isValid("http://a.com:/test"));
Assert.assertFalse(isValid("http://z.com:"));
Assert.assertFalse(isValid("http://1.2.3:80/test?a=b&c=d"));
Assert.assertFalse(isValid("http://1.2.3/"));
Assert.assertFalse(isValid("http://com/"));
Assert.assertFalse(isValid("http://a.b.c.com/bad>et"));
Assert.assertFalse(isValid("http://test"));
Assert.assertFalse(isValid("http://co.uk"));
Assert.assertFalse(isValid("http:///example.com/"));
Assert.assertFalse(isValid("http:://example.com/"));
Assert.assertFalse(isValid("example.com"));
Assert.assertFalse(isValid("127.0.0.1"));
Assert.assertFalse(isValid("http://ab@example.com"));
Assert.assertFalse(isValid("ftp://example.com"));
Assert.assertEquals("example.com", build("http://example.com:281/1/2").getHost());
Assert.assertEquals("a.b.example.com", build("http://a.b.example.com/1/2").getHost());
Assert.assertEquals("a.b.example.com", build("http://A.B.Example.Com/1/2").getHost());
Assert.assertEquals("1.2.3.4", build("http://1.2.3.4:89/1/2").getHost());
Assert.assertEquals("/A/b/C", build("http://A.B.Example.Com/A/b/C").getPath());
Assert.assertEquals("?D/E/f", build("http://A.B.Example.Com?D/E/f").getPath());
URL u = build("http://a.b.c.d.com/1/2/3");
Assert.assertEquals("a.b.c.d.com", u.getHost());
Assert.assertEquals("com.d.c.b.a", u.getReverseHost());
Assert.assertEquals("d.com", u.getDomain());
Assert.assertEquals("com.d", u.getReverseDomain());
Assert.assertEquals("com.example", build("http://example.com:281/1").getReverseHost());
Assert.assertEquals("com.example.b.a", build("http://a.b.example.com/1/2").getReverseHost());
Assert.assertEquals("1.2.3.4", build("http://1.2.3.4:89/1/2").getReverseHost());
Assert.assertTrue(build("http://a.com/a.jpg").isImage());
Assert.assertTrue(build("http://a.com/a.JPEG").isImage());
Assert.assertTrue(build("http://a.com/c/b/a.png").isImage());
Assert.assertEquals("c.com", build("http://a.b.c.com").getDomain());
Assert.assertEquals("com.c", build("http://a.b.c.com").getReverseDomain());
Assert.assertEquals("c.co.uk", build("http://a.b.c.co.uk").getDomain());
Assert.assertEquals("uk.co.c", build("http://a.b.c.co.uk").getReverseDomain());
Assert.assertEquals("d.com.au", build("http://www.d.com.au").getDomain());
Assert.assertEquals("au.com.d", build("http://www.d.com.au").getReverseDomain());
u = build("https://www.d.com.au:9443/a/bc");
Assert.assertEquals("au.com.d>.www>s9443>/a/bc", u.toPageID());
Assert.assertEquals("https://www.d.com.au:9443/a/bc", u.toString());
URL u2 = URL.fromPageID(u.toPageID());
Assert.assertEquals("https://www.d.com.au:9443/a/bc", u2.toString());
Assert.assertEquals("d.com.au", u2.getDomain());
Assert.assertEquals("www.d.com.au", u2.getHost());
}
}