ProxyTest.java revision 2986f858ae6c6cc8a84614083661d1a2e2108aee
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