Home | History | Annotate | Download | only in cts
      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