blob: e877ab96ae664aaafa30ddea7ad4de677ad14a86 [file] [log] [blame]
/*
* Copyright (C) 2009 The Android Open Source Project
*
* 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 android.webkit.cts;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargets;
import android.test.AndroidTestCase;
import android.test.MoreAsserts;
import android.webkit.URLUtil;
@TestTargetClass(android.webkit.URLUtil.class)
public class URLUtilTest extends AndroidTestCase {
private final String VALID_HTTP_URL = "http://www.google.com";
private final String VALID_HTTPS_URL = "https://www.google.com";
private final String VALID_ASSET_URL = "file:///android_asset/test";
private final String VALID_PROXY_URL = "file:///cookieless_proxy/test";
private final String VALID_JAVASCRIPT_URL = "javascript:wave()";
private final String VALID_CONTENT_URL = "content://test";
private final String VALID_DATA_URL = "data://test";
private final String VALID_ABOUT_URL = "about://test";
private final String VALID_FILE_URL = "file://test";
private final String VALID_FTP_URL = "ftp://www.domain.com";
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isAssetUrl",
args = {String.class}
)
})
public void testIsAssetUrl() {
assertFalse(URLUtil.isAssetUrl(null));
assertFalse(URLUtil.isAssetUrl(VALID_HTTP_URL));
assertTrue(URLUtil.isAssetUrl(VALID_ASSET_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isAboutUrl",
args = {String.class}
)
})
public void testIsAboutUrl() {
assertFalse(URLUtil.isAboutUrl(null));
assertFalse(URLUtil.isAboutUrl(VALID_DATA_URL));
assertTrue(URLUtil.isAboutUrl(VALID_ABOUT_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isContentUrl",
args = {String.class}
)
})
public void testIsContentUrl() {
assertFalse(URLUtil.isContentUrl(null));
assertFalse(URLUtil.isContentUrl(VALID_DATA_URL));
assertTrue(URLUtil.isContentUrl(VALID_CONTENT_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isCookielessProxyUrl",
args = {String.class}
)
})
@SuppressWarnings("deprecation")
public void testIsCookielessProxyUrl() {
assertFalse(URLUtil.isCookielessProxyUrl(null));
assertFalse(URLUtil.isCookielessProxyUrl(VALID_HTTP_URL));
assertTrue(URLUtil.isCookielessProxyUrl(VALID_PROXY_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isDataUrl",
args = {String.class}
)
})
public void testIsDataUrl() {
assertFalse(URLUtil.isDataUrl(null));
assertFalse(URLUtil.isDataUrl(VALID_CONTENT_URL));
assertTrue(URLUtil.isDataUrl(VALID_DATA_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isFileUrl",
args = {String.class}
)
})
public void testIsFileUrl() {
assertFalse(URLUtil.isFileUrl(null));
assertFalse(URLUtil.isFileUrl(VALID_CONTENT_URL));
assertFalse(URLUtil.isFileUrl(VALID_ASSET_URL));
assertFalse(URLUtil.isFileUrl(VALID_PROXY_URL));
assertTrue(URLUtil.isFileUrl(VALID_FILE_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isHttpsUrl",
args = {String.class}
)
})
public void testIsHttpsUrl() {
assertFalse(URLUtil.isHttpsUrl(null));
assertFalse(URLUtil.isHttpsUrl(VALID_HTTP_URL));
assertTrue(URLUtil.isHttpsUrl(VALID_HTTPS_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isHttpUrl",
args = {String.class}
)
})
public void testIsHttpUrl() {
assertFalse(URLUtil.isHttpUrl(null));
assertFalse(URLUtil.isHttpUrl(VALID_FTP_URL));
assertTrue(URLUtil.isHttpUrl(VALID_HTTP_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isJavaScriptUrl",
args = {String.class}
)
})
public void testIsJavaScriptUrl() {
assertFalse(URLUtil.isJavaScriptUrl(null));
assertFalse(URLUtil.isJavaScriptUrl(VALID_FTP_URL));
assertTrue(URLUtil.isJavaScriptUrl(VALID_JAVASCRIPT_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isNetworkUrl",
args = {String.class}
)
})
public void testIsNetworkUrl() {
assertFalse(URLUtil.isNetworkUrl(null));
assertFalse(URLUtil.isNetworkUrl(""));
assertFalse(URLUtil.isNetworkUrl(VALID_FTP_URL));
assertTrue(URLUtil.isNetworkUrl(VALID_HTTP_URL));
assertTrue(URLUtil.isNetworkUrl(VALID_HTTPS_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "isValidUrl",
args = {String.class}
)
})
public void testIsValidUrl() {
assertFalse(URLUtil.isValidUrl(null));
assertFalse(URLUtil.isValidUrl(""));
assertFalse(URLUtil.isValidUrl("Error URL"));
assertTrue(URLUtil.isValidUrl(VALID_ASSET_URL));
assertTrue(URLUtil.isValidUrl(VALID_FILE_URL));
assertTrue(URLUtil.isValidUrl(VALID_ABOUT_URL));
assertTrue(URLUtil.isValidUrl(VALID_HTTP_URL));
assertTrue(URLUtil.isValidUrl(VALID_HTTPS_URL));
assertTrue(URLUtil.isValidUrl(VALID_JAVASCRIPT_URL));
assertTrue(URLUtil.isValidUrl(VALID_CONTENT_URL));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "composeSearchUrl",
args = {String.class, String.class, String.class}
)
})
public void testComposeSearchUrl() {
assertNull(URLUtil.composeSearchUrl("", "template", "no such holder"));
String expected = "http://story/test";
assertEquals(expected, URLUtil.composeSearchUrl("story", "http://holder/test", "holder"));
expected = "file://query/test";
assertEquals(expected, URLUtil.composeSearchUrl("query", "file://holder/test", "holder"));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "decode",
args = {byte[].class}
)
})
public void testDecode() {
byte[] url = new byte[0];
byte[] result = URLUtil.decode(url);
assertEquals(0, result.length);
url = new byte[] { 'w', 'w', 'w', '.', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm', '/',
'%', '2', '0', '%', '4', '5', '/' };
result = URLUtil.decode(url);
byte[] expected = new byte[] { 'w', 'w', 'w', '.', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm',
'/', ' ', 'E', '/' };
MoreAsserts.assertEquals(expected, result);
url = new byte[] { 'w', 'w', 'w', '.', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm', '/',
'%', '2', '0', '%', '4' };
try {
result = URLUtil.decode(url);
fail("should throw IllegalArgumentException.");
} catch (IllegalArgumentException e) {
}
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "guessFileName",
args = {String.class, String.class, String.class}
)
})
public void testGuessFileName() {
String url = "ftp://example.url/test";
assertEquals("test.jpeg", URLUtil.guessFileName(url, null, "image/jpeg"));
assertEquals("test.bin", URLUtil.guessFileName(url, null, "application/octet-stream"));
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "guessUrl",
args = {String.class}
)
})
public void testGuessUrl() {
assertEquals(VALID_FILE_URL, URLUtil.guessUrl(VALID_FILE_URL));
assertEquals(VALID_ABOUT_URL, URLUtil.guessUrl(VALID_ABOUT_URL));
assertEquals(VALID_DATA_URL, URLUtil.guessUrl(VALID_DATA_URL));
assertEquals(VALID_JAVASCRIPT_URL, URLUtil.guessUrl(VALID_JAVASCRIPT_URL));
String url = "domainName";
assertEquals("http://www.domainName.com/", URLUtil.guessUrl(url));
try {
URLUtil.guessUrl(null);
fail("should throw NullPointerException.");
} catch (NullPointerException e) {
}
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "stripAnchor",
args = {String.class}
)
})
public void testStripAnchor() {
assertEquals(VALID_HTTP_URL, URLUtil.stripAnchor(VALID_HTTP_URL));
String url = "http://www.google.com#test";
String expected = "http://www.google.com";
assertEquals(expected, URLUtil.stripAnchor(url));
}
}