1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.webkit.cts; 18 19 20 import android.test.AndroidTestCase; 21 import android.test.MoreAsserts; 22 import android.webkit.URLUtil; 23 24 public class URLUtilTest extends AndroidTestCase { 25 private final String VALID_HTTP_URL = "http://www.google.com"; 26 private final String VALID_HTTPS_URL = "https://www.google.com"; 27 private final String VALID_ASSET_URL = "file:///android_asset/test"; 28 private final String VALID_PROXY_URL = "file:///cookieless_proxy/test"; 29 private final String VALID_JAVASCRIPT_URL = "javascript:wave()"; 30 private final String VALID_CONTENT_URL = "content://test"; 31 private final String VALID_DATA_URL = "data://test"; 32 private final String VALID_ABOUT_URL = "about://test"; 33 private final String VALID_FILE_URL = "file://test"; 34 private final String VALID_FTP_URL = "ftp://www.domain.com"; 35 36 public void testIsAssetUrl() { 37 assertFalse(URLUtil.isAssetUrl(null)); 38 assertFalse(URLUtil.isAssetUrl(VALID_HTTP_URL)); 39 assertTrue(URLUtil.isAssetUrl(VALID_ASSET_URL)); 40 } 41 42 public void testIsAboutUrl() { 43 assertFalse(URLUtil.isAboutUrl(null)); 44 assertFalse(URLUtil.isAboutUrl(VALID_DATA_URL)); 45 assertTrue(URLUtil.isAboutUrl(VALID_ABOUT_URL)); 46 } 47 48 public void testIsContentUrl() { 49 assertFalse(URLUtil.isContentUrl(null)); 50 assertFalse(URLUtil.isContentUrl(VALID_DATA_URL)); 51 assertTrue(URLUtil.isContentUrl(VALID_CONTENT_URL)); 52 } 53 54 @SuppressWarnings("deprecation") 55 public void testIsCookielessProxyUrl() { 56 assertFalse(URLUtil.isCookielessProxyUrl(null)); 57 assertFalse(URLUtil.isCookielessProxyUrl(VALID_HTTP_URL)); 58 assertTrue(URLUtil.isCookielessProxyUrl(VALID_PROXY_URL)); 59 } 60 61 public void testIsDataUrl() { 62 assertFalse(URLUtil.isDataUrl(null)); 63 assertFalse(URLUtil.isDataUrl(VALID_CONTENT_URL)); 64 assertTrue(URLUtil.isDataUrl(VALID_DATA_URL)); 65 } 66 67 public void testIsFileUrl() { 68 assertFalse(URLUtil.isFileUrl(null)); 69 assertFalse(URLUtil.isFileUrl(VALID_CONTENT_URL)); 70 assertFalse(URLUtil.isFileUrl(VALID_ASSET_URL)); 71 assertFalse(URLUtil.isFileUrl(VALID_PROXY_URL)); 72 assertTrue(URLUtil.isFileUrl(VALID_FILE_URL)); 73 } 74 75 public void testIsHttpsUrl() { 76 assertFalse(URLUtil.isHttpsUrl(null)); 77 assertFalse(URLUtil.isHttpsUrl(VALID_HTTP_URL)); 78 assertTrue(URLUtil.isHttpsUrl(VALID_HTTPS_URL)); 79 } 80 81 public void testIsHttpUrl() { 82 assertFalse(URLUtil.isHttpUrl(null)); 83 assertFalse(URLUtil.isHttpUrl(VALID_FTP_URL)); 84 assertTrue(URLUtil.isHttpUrl(VALID_HTTP_URL)); 85 } 86 87 public void testIsJavaScriptUrl() { 88 assertFalse(URLUtil.isJavaScriptUrl(null)); 89 assertFalse(URLUtil.isJavaScriptUrl(VALID_FTP_URL)); 90 assertTrue(URLUtil.isJavaScriptUrl(VALID_JAVASCRIPT_URL)); 91 } 92 93 public void testIsNetworkUrl() { 94 assertFalse(URLUtil.isNetworkUrl(null)); 95 assertFalse(URLUtil.isNetworkUrl("")); 96 assertFalse(URLUtil.isNetworkUrl(VALID_FTP_URL)); 97 assertTrue(URLUtil.isNetworkUrl(VALID_HTTP_URL)); 98 assertTrue(URLUtil.isNetworkUrl(VALID_HTTPS_URL)); 99 } 100 101 public void testIsValidUrl() { 102 assertFalse(URLUtil.isValidUrl(null)); 103 assertFalse(URLUtil.isValidUrl("")); 104 assertFalse(URLUtil.isValidUrl("Error URL")); 105 assertTrue(URLUtil.isValidUrl(VALID_ASSET_URL)); 106 assertTrue(URLUtil.isValidUrl(VALID_FILE_URL)); 107 assertTrue(URLUtil.isValidUrl(VALID_ABOUT_URL)); 108 assertTrue(URLUtil.isValidUrl(VALID_HTTP_URL)); 109 assertTrue(URLUtil.isValidUrl(VALID_HTTPS_URL)); 110 assertTrue(URLUtil.isValidUrl(VALID_JAVASCRIPT_URL)); 111 assertTrue(URLUtil.isValidUrl(VALID_CONTENT_URL)); 112 } 113 114 public void testComposeSearchUrl() { 115 assertNull(URLUtil.composeSearchUrl("", "template", "no such holder")); 116 117 String expected = "http://story/test"; 118 assertEquals(expected, URLUtil.composeSearchUrl("story", "http://holder/test", "holder")); 119 120 expected = "file://query/test"; 121 assertEquals(expected, URLUtil.composeSearchUrl("query", "file://holder/test", "holder")); 122 } 123 124 public void testDecode() { 125 byte[] url = new byte[0]; 126 byte[] result = URLUtil.decode(url); 127 assertEquals(0, result.length); 128 129 url = new byte[] { 'w', 'w', 'w', '.', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm', '/', 130 '%', '2', '0', '%', '4', '5', '/' }; 131 result = URLUtil.decode(url); 132 byte[] expected = new byte[] { 'w', 'w', 'w', '.', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm', 133 '/', ' ', 'E', '/' }; 134 MoreAsserts.assertEquals(expected, result); 135 136 url = new byte[] { 'w', 'w', 'w', '.', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm', '/', 137 '%', '2', '0', '%', '4' }; 138 try { 139 result = URLUtil.decode(url); 140 fail("should throw IllegalArgumentException."); 141 } catch (IllegalArgumentException e) { 142 } 143 } 144 145 public void testGuessFileName() { 146 String url = "ftp://example.url/test"; 147 assertEquals("test.jpeg", URLUtil.guessFileName(url, null, "image/jpeg")); 148 149 assertEquals("test.bin", URLUtil.guessFileName(url, null, "application/octet-stream")); 150 } 151 152 public void testGuessUrl() { 153 assertEquals(VALID_FILE_URL, URLUtil.guessUrl(VALID_FILE_URL)); 154 assertEquals(VALID_ABOUT_URL, URLUtil.guessUrl(VALID_ABOUT_URL)); 155 assertEquals(VALID_DATA_URL, URLUtil.guessUrl(VALID_DATA_URL)); 156 assertEquals(VALID_JAVASCRIPT_URL, URLUtil.guessUrl(VALID_JAVASCRIPT_URL)); 157 158 String url = "domainName"; 159 assertEquals("http://www.domainName.com/", URLUtil.guessUrl(url)); 160 161 try { 162 URLUtil.guessUrl(null); 163 fail("should throw NullPointerException."); 164 } catch (NullPointerException e) { 165 } 166 } 167 168 public void testStripAnchor() { 169 assertEquals(VALID_HTTP_URL, URLUtil.stripAnchor(VALID_HTTP_URL)); 170 171 String url = "http://www.google.com#test"; 172 String expected = "http://www.google.com"; 173 assertEquals(expected, URLUtil.stripAnchor(url)); 174 } 175 } 176