1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.net; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport dalvik.annotation.KnownFailure; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport java.io.File; 26b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport java.io.FileOutputStream; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.CacheRequest; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.CacheResponse; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.HttpURLConnection; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.NetPermission; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.ResponseCache; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URI; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URISyntaxException; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URL; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URLConnection; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 40b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport java.util.Arrays; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.List; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Map; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 46b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport tests.support.Support_PortManager; 47b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport tests.support.Support_TestWebData; 48b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grobimport tests.support.Support_TestWebServer; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 50b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob@TestTargetClass(value = ResponseCache.class) 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class ResponseCacheTest extends TestCase { 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.ResponseCache#getDefault() 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getDefault method.", 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getDefault", 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_GetDefault() throws Exception { 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(ResponseCache.getDefault()); 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.ResponseCache#setDefault(ResponseCache) 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for setDefault method.", 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setDefault", 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.ResponseCache.class} 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for setDefault method.", 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ResponseCache", 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_SetDefaultLjava_net_ResponseCache_Normal() 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache rc1 = new MockResponseCache(); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache rc2 = new MockResponseCache(); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache.setDefault(rc1); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(ResponseCache.getDefault(), rc1); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache.setDefault(rc2); 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(ResponseCache.getDefault(), rc2); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache.setDefault(null); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(ResponseCache.getDefault()); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.ResponseCache#getDefault() 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getDefault method.", 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getDefault", 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_GetDefault_Security() { 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager old = System.getSecurityManager(); 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSM()); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.err.println("No setSecurityManager permission."); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.err.println("test_setDefaultLjava_net_ResponseCache_NoPermission is not tested"); 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache.getDefault(); 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(old); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.ResponseCache#setDefault(ResponseCache) 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.ADDITIONAL, 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for setDefault method.", 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setDefault", 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.ResponseCache.class} 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setDefaultLjava_net_ResponseCache_NoPermission() { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache rc = new MockResponseCache(); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager old = System.getSecurityManager(); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSM()); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.err.println("No setSecurityManager permission."); 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.err.println("test_setDefaultLjava_net_ResponseCache_NoPermission is not tested"); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ResponseCache.setDefault(rc); 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(old); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "get", 158b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob args = {URI.class, String.class, Map.class} 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 160b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public void test_get() throws Exception { 161b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob String uri = "http://localhost/"; 162b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob URL url = new URL(uri); 163b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob TestResponseCache cache = new TestResponseCache(uri, true); 164b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob ResponseCache.setDefault(cache); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpCon.setUseCaches(true); 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpCon.connect(); 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(5000); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) {} 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream is = httpCon.getInputStream(); 173b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob byte[] array = new byte [10]; 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project is.read(array); 175b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob assertEquals(url.toURI(), cache.getWasCalled); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Cache test", new String(array)); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project is.close(); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpCon.disconnect(); 179b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 182b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @TestTargetNew( 183b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob level = TestLevel.COMPLETE, 184b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob notes = "", 185b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob method = "put", 186b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob args = {URI.class, URLConnection.class} 187b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob ) 188b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @KnownFailure("the call to put is made with a wrong uri." 189b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob + " The RI calls with http://localhost:<port>/test1," 190b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob + " but android only calls with http://localhost:<port>") 191b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public void test_put() throws Exception { 192b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // Create test ResponseCache 193b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob TestResponseCache cache = new TestResponseCache( 194b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob "http://localhost/not_cached", false); 195b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob ResponseCache.setDefault(cache); 196b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 197b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // Start Server 198b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob int port = Support_PortManager.getNextPort(); 199b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob Support_TestWebServer s = new Support_TestWebServer(); 200b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob try { 201b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob s.initServer(port, 10000, false); 202b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob Thread.currentThread().sleep(2500); 203b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 204b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // Create connection to server 205b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob URL url = new URL("http://localhost:" + port + "/test1"); 206b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 207b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob httpCon.setUseCaches(true); 208b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob httpCon.connect(); 209b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob Thread.currentThread().sleep(2500); 210b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 211b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // Check that a call to the cache was made. 212b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob assertEquals(url.toURI(), cache.getWasCalled); 213b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // Make the HttpConnection get the content. It should try to 214b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // put it into the cache. 215b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob httpCon.getContent(); 216b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // Check if put was called 217b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob assertEquals(url.toURI(), cache.putWasCalled); 218b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 219b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob // get the 220b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob InputStream is = httpCon.getInputStream(); 221b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 222b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob byte[] array = new byte[Support_TestWebData.test1.length]; 223b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob is.read(array); 224b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob assertTrue(Arrays.equals(Support_TestWebData.tests[0], array)); 225b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob is.close(); 226b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob httpCon.disconnect(); 227b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } finally { 228b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob s.close(); 229b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } 230b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } 231b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * MockResponseCache for testSetDefault(ResponseCache) 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class MockResponseCache extends ResponseCache { 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public CacheResponse get(URI arg0, String arg1, Map arg2) 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public CacheRequest put(URI arg0, URLConnection arg1) 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * MockSecurityMaanger. It denies NetPermission("getResponseCache") and 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * NetPermission("setResponseCache"). 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class MockSM extends SecurityManager { 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission permission) { 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof NetPermission) { 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("setResponseCache".equals(permission.getName())) { 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof NetPermission) { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("getResponseCache".equals(permission.getName())) { 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof RuntimePermission) { 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("setSecurityManager".equals(permission.getName())) { 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestCacheResponse extends CacheResponse { 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream is = null; 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Map<String, List<String>> headers = null; 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public TestCacheResponse(String filename) { 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String path = getClass().getPackage().getName().replace(".", "/"); 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project is = getClass().getResourceAsStream("/" + path + "/" + filename); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 284b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @Override 285b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public InputStream getBody() { 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return is; 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 289b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @Override 290b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public Map getHeaders() { 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 294b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestCacheRequest extends CacheRequest { 296b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 297b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @Override 298b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public OutputStream getBody() { 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 302b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @Override 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void abort() { 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestResponseCache extends ResponseCache { 308b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 309b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob URI uri1 = null; 310b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob boolean testGet = false; 311b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 312b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public URI getWasCalled = null; 313b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public URI putWasCalled = null; 314b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 315b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob TestResponseCache(String uri, boolean testGet) { 316b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob try { 317b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob uri1 = new URI(uri); 318b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } catch (URISyntaxException e) { 319b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } 320b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob this.testGet = testGet; 321b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } 322b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob 323b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @Override 324b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public CacheResponse get(URI uri, String rqstMethod, Map rqstHeaders) { 325b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob getWasCalled = uri; 326b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob if (testGet && uri.equals(uri1)) { 327b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob return new TestCacheResponse("file1.cache"); 328b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } 329b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob return null; 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 332b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob @Override 333b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob public CacheRequest put(URI uri, URLConnection conn) { 334b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob putWasCalled = uri; 335b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob if (!testGet && uri.equals(uri1)) { 336b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob return new TestCacheRequest(); 337b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob } 338b72a4718fca6b1ccde71c785cea317f5b3c2c2e9Urs Grob return null; 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}