Home | History | Annotate | Download | only in net
      1 /* Licensed to the Apache Software Foundation (ASF) under one or more
      2  * contributor license agreements.  See the NOTICE file distributed with
      3  * this work for additional information regarding copyright ownership.
      4  * The ASF licenses this file to You under the Apache License, Version 2.0
      5  * (the "License"); you may not use this file except in compliance with
      6  * the License.  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 libcore.java.net;
     18 
     19 import java.io.IOException;
     20 import java.net.Inet6Address;
     21 import java.net.InetAddress;
     22 import java.net.MalformedURLException;
     23 import java.net.Proxy;
     24 import java.net.URL;
     25 import java.net.URLConnection;
     26 import java.net.URLStreamHandler;
     27 import java.net.UnknownHostException;
     28 import junit.framework.TestCase;
     29 
     30 public class OldURLStreamHandlerTest extends TestCase {
     31 
     32     MockURLStreamHandler handler = null;
     33 
     34     public void test_equalsLjava_net_URLLjava_net_URL() throws MalformedURLException {
     35         URL url1 = new URL("ftp://test_url/test?a=b&c=%D0+%D1");
     36         URL url2 = new URL("http://test_url/test?a=b&c=%D0+%D1");
     37         assertFalse(url1.equals(url2));
     38 
     39         new URL("http://test_url+/test?a=b&c=%D0+%D1");
     40         assertFalse(handler.equals(url1,url2));
     41 
     42         try {
     43             assertFalse(handler.equals(null, url1));
     44             fail("NullPointerException was not thrown.");
     45         } catch(NullPointerException npe) {
     46             //expected
     47         }
     48     }
     49 
     50     public void test_getDefaultPort() {
     51         assertEquals(-1, handler.getDefaultPort());
     52     }
     53 
     54     public void test_getHostAddress() throws MalformedURLException, UnknownHostException {
     55         URL url1 = new URL("ftp://test_url/test?a=b&c=%D0+%D1");
     56         assertNull(handler.getHostAddress(url1));
     57 
     58         URL url2 = new URL("http://test:pwd@fakehostname.fakedomain/test?a=b&c=%D0+%D1");
     59         assertNull(handler.getHostAddress(url2));
     60 
     61         URL url3 = new URL("http://localhost/test");
     62         assertEquals(InetAddress.getByName("localhost"), handler.getHostAddress(url3));
     63     }
     64 
     65     public void test_hashCodeLjava_net_URL() throws MalformedURLException {
     66         URL url1 = new URL("ftp://test_url/test?a=b&c=%D0+%D1");
     67         URL url2 = new URL("http://test_url/test?a=b&c=%D0+%D1");
     68         assertTrue(handler.hashCode(url1) != handler.hashCode(url2));
     69 
     70         new URL("http://test_url+/test?a=b&c=%D0+%D1");
     71         assertFalse(handler.equals(url1,url2));
     72 
     73         try {
     74             handler.hashCode(null);
     75             fail("NullPointerException was not thrown.");
     76         } catch(NullPointerException expected) {
     77         }
     78     }
     79 
     80     public void test_hostsEqualLjava_net_URLLjava_net_URL() throws Exception {
     81         URL url1 = new URL("ftp://localhost:21/*test");
     82         URL url2 = new URL("http://localhost/_test");
     83         assertTrue(handler.hostsEqual(url1, url2));
     84 
     85         URL url3 = new URL("http://foo/_test_goo");
     86         assertFalse(handler.hostsEqual(url1, url3));
     87     }
     88 
     89     public void test_openConnectionLjava_net_URL() throws IOException {
     90         // abstract method, it doesn't check anything
     91         assertNull(handler.openConnection(null));
     92     }
     93 
     94     public void test_openConnectionLjava_net_URLLjava_net_Proxy() {
     95         try {
     96             handler.openConnection(null, null);
     97             fail("UnsupportedOperationException was not thrown.");
     98         } catch(UnsupportedOperationException  uoe) {
     99             //expected
    100         } catch (IOException e) {
    101             fail("IOException was thrown.");
    102         }
    103     }
    104 
    105     public void test_parseURLLjava_net_URLLjava_lang_StringII()
    106                                                 throws MalformedURLException {
    107         String str  = "http://test.org/foo?a=123&b=%D5D6D7&c=++&d=";
    108         URL url = new URL("http://test.org");
    109 
    110         try {
    111             handler.parseURL(url, str, 0, str.length());
    112             fail("SecurityException should be thrown.");
    113         } catch(SecurityException se) {
    114             //SecurityException is expected
    115         }
    116     }
    117 
    118     public void test_sameFile() throws Exception {
    119         URL url1  = new URL("http://test:pwd@localhost:80/foo/foo1.c");
    120         URL url2  = new URL("http://test:pwd@localhost:80/foo/foo1.c");
    121         URL url3  = new URL("http://test:pwd@localhost:80/foo/foo2.c");
    122         URL url4  = new URL("ftp://test:pwd@localhost:21/foo/foo2.c");
    123         URL url5  = new URL("ftp://test:pwd@localhost:21/foo/foo1/foo2.c");
    124         URL url6  = new URL("http://test/foo/foo1.c");
    125 
    126         assertTrue("Test case 1", handler.sameFile(url1, url2));
    127         assertFalse("Test case 2", handler.sameFile(url3, url2));
    128         assertFalse("Test case 3", handler.sameFile(url3, url4));
    129         assertFalse("Test case 4", handler.sameFile(url4, url5));
    130         assertFalse("Test case 5", handler.sameFile(url1, url6));
    131     }
    132 
    133     public void test_setURL1() throws MalformedURLException {
    134         URL url = new URL("http://test.org");
    135 
    136         try {
    137             handler.setURL(url, "http", "localhost", 80, "foo.c", "ref");
    138             fail("SecurityException should be thrown.");
    139         } catch(SecurityException expected) {
    140         }
    141     }
    142 
    143     public void test_setURL2() throws MalformedURLException {
    144         URL url = new URL("http://test.org");
    145 
    146         try {
    147             handler.setURL(url, "http", "localhost", 80, "authority",
    148                     "user", "foo.c", "query", "ref");
    149             fail("SecurityException should be thrown.");
    150         } catch(SecurityException expected) {
    151         }
    152     }
    153 
    154     public void test_toExternalForm() throws MalformedURLException {
    155         URL [] urls = { new URL("ftp://test_url/test?a=b&c=%D0+%D1"),
    156                         new URL("http://test_url/test?a=b&c=%D0+%D1"),
    157                         new URL("http://test:pwd@localhost:80/foo/foo1.c")};
    158 
    159         for(URL url : urls) {
    160             assertEquals("Test case for " + url.toString(),
    161                     url.toString(), handler.toExternalForm(url));
    162         }
    163     }
    164 
    165     public void test_Constructor() {
    166         MockURLStreamHandler msh = new MockURLStreamHandler();
    167         assertEquals(-1, msh.getDefaultPort());
    168     }
    169 
    170     public void setUp() {
    171         handler = new MockURLStreamHandler();
    172     }
    173 
    174     class MockURLStreamHandler extends URLStreamHandler {
    175 
    176         @Override protected URLConnection openConnection(URL arg0) throws IOException {
    177             return null;
    178         }
    179 
    180         @Override public boolean equals(URL a, URL b) {
    181             return super.equals(a, b);
    182         }
    183 
    184         @Override public int getDefaultPort() {
    185             return super.getDefaultPort();
    186         }
    187 
    188         @Override public InetAddress getHostAddress(URL u) {
    189             return super.getHostAddress(u);
    190         }
    191 
    192         @Override public int hashCode(URL u) {
    193             return super.hashCode(u);
    194         }
    195 
    196         @Override public boolean hostsEqual(URL a, URL b) {
    197             return super.hostsEqual(a, b);
    198         }
    199 
    200         @Override public URLConnection openConnection(URL u, Proxy p) throws IOException {
    201             return super.openConnection(u, p);
    202         }
    203 
    204         @Override public void parseURL(URL url, String spec, int start, int limit) {
    205             super.parseURL(url, spec, start, limit);
    206         }
    207 
    208         @Override public boolean sameFile(URL a, URL b) {
    209             return super.sameFile(a, b);
    210         }
    211 
    212         @Override public void setURL(URL u,
    213                 String protocol,
    214                 String host,
    215                 int port,
    216                 String file,
    217                 String ref) {
    218             super.setURL(u, protocol, host, port, file, ref);
    219         }
    220 
    221         @Override public void setURL(URL u,
    222                 String protocol,
    223                 String host,
    224                 int port,
    225                 String authority,
    226                 String userInfo,
    227                 String path,
    228                 String query,
    229                 String ref) {
    230             super.setURL(u, protocol, host, port, authority,
    231                     userInfo, path, query, ref);
    232         }
    233 
    234         @Override public String toExternalForm(URL u) {
    235             return super.toExternalForm(u);
    236         }
    237     }
    238 }
    239