12986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad/* 22986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * Copyright (C) 2010 The Android Open Source Project 32986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * 42986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * Licensed under the Apache License, Version 2.0 (the "License"); 52986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * you may not use this file except in compliance with the License. 62986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * You may obtain a copy of the License at 72986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * 82986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * http://www.apache.org/licenses/LICENSE-2.0 92986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * 102986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * Unless required by applicable law or agreed to in writing, software 112986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * distributed under the License is distributed on an "AS IS" BASIS, 122986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * See the License for the specific language governing permissions and 142986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * limitations under the License. 152986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad */ 162986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 172986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandbladpackage android.core; 182986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 192986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandbladimport org.apache.http.HttpHost; 202986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 212986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandbladimport android.content.Context; 222986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandbladimport android.net.Proxy; 232986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandbladimport android.test.AndroidTestCase; 242986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 252986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad/** 262986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * Proxy tests 272986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad */ 282986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandbladpublic class ProxyTest extends AndroidTestCase { 292986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad private Context mContext; 302986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad private HttpHost mHttpHost; 312986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 322986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad @Override 332986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad protected void setUp() throws Exception { 342986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad super.setUp(); 352986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 362986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad mContext = getContext(); 372986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad mHttpHost = null; 382986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad String proxyHost = Proxy.getHost(mContext); 392986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad int proxyPort = Proxy.getPort(mContext); 402986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad if (proxyHost != null) { 412986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad mHttpHost = new HttpHost(proxyHost, proxyPort, "http"); 422986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad } 432986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad } 442986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 452986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad @Override 462986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad protected void tearDown() throws Exception { 472986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad super.tearDown(); 482986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad } 492986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 502986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad /** 512986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * Bad url parameter should not cause any exception. 522986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad */ 532986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad public void testProxyGetPreferredHttpHost_UrlBad() throws Exception { 542986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, null)); 552986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "")); 562986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad:")); 572986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad")); 582986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad:\\")); 592986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad://#")); 602986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "://#")); 612986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad } 622986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 632986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad /** 642986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * Proxy (if available) should be returned when url parameter is not localhost. 652986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad */ 662986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad public void testProxyGetPreferredHttpHost_UrlNotlLocalhost() throws Exception { 672986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://")); 682986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://example.com")); 692986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://example.com/")); 702986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://192.168.0.1/")); 712986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "file:///foo/bar")); 722986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "rtsp://example.com")); 732986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "rtsp://example.com/")); 742986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "javascript:alert(1)")); 752986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad } 762986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad 772986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad /** 782986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad * No proxy should be returned when url parameter is localhost. 792986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad */ 802986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad public void testProxyGetPreferredHttpHost_UrlLocalhost() throws Exception { 812986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://localhost")); 822986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://localhost/")); 832986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://localhost/hej.html")); 842986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1")); 852986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1/")); 862986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1/hej.html")); 872986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1:80/")); 882986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1:8080/")); 892986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "rtsp://127.0.0.1/")); 902986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "rtsp://localhost/")); 912986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad assertNull(Proxy.getPreferredHttpHost(mContext, "https://localhost/")); 922986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad } 932986f858ae6c6cc8a84614083661d1a2e2108aeeAndreas Sandblad} 94