1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17package org.apache.harmony.luni.tests.internal.net.www.protocol.file; 18 19import java.io.IOException; 20import java.net.URL; 21import java.net.URLConnection; 22 23import junit.framework.TestCase; 24 25import libcore.net.url.FileURLConnection; 26 27/** 28 * Tests for <code>FileURLConnection</code> class constructors and methods. 29 */ 30public class FileURLConnectionTest extends TestCase { 31 32 static String getContentType(String fileName) throws IOException { 33 String resourceName = "org/apache/harmony/luni/tests/" + fileName; 34 URL url = ClassLoader.getSystemClassLoader().getResource(resourceName); 35 assertNotNull("Cannot find test resource " + resourceName, url); 36 return new FileURLConnection(url).getContentType(); 37 } 38 39 public void testGetContentType() throws IOException { 40 // Regression for HARMONY-4699 41 assertEquals("application/rtf", getContentType("test.rtf")); 42 assertEquals("text/plain", getContentType("test.java")); 43 // RI would return "content/unknown" 44 assertEquals("application/msword", getContentType("test.doc")); 45 assertEquals("text/html", getContentType("test.htx")); 46 assertEquals("application/xml", getContentType("test.xml")); 47 assertEquals("text/plain", getContentType(".")); 48 } 49 50 public void testGetInputStream() throws IOException { 51 // Regression for Harmony-5737 52 String resourceName = "org/apache/harmony/luni/tests/" + "test.rtf"; 53 URL url = ClassLoader.getSystemClassLoader().getResource(resourceName); 54 URL anchorUrl = new URL(url, "#anchor"); 55 assertNotNull("Cannot find test resource " + resourceName, anchorUrl); 56 57 FileURLConnection conn = new FileURLConnection(anchorUrl); 58 assertNotNull(conn.getInputStream()); 59 60 // Regression for Harmony-5779 61 String localURLString = "file://localhost/" + url.getFile(); 62 URL localURL = new URL(localURLString); 63 conn = new FileURLConnection(localURL); 64 assertNotNull(conn.getInputStream()); 65 assertEquals("file", conn.getURL().getProtocol()); 66 } 67 68 public void testHeaderFunctions() throws IOException { 69 String resourceName = "org/apache/harmony/luni/tests/"; //folder name 70 URL url = ClassLoader.getSystemClassLoader().getResource(resourceName); 71 FileURLConnection conn = new FileURLConnection(url); 72 assertNotNull(conn.getInputStream()); 73 assertEquals(conn.getContentType(), conn.getHeaderField("content-type")); 74 75 resourceName = "org/apache/harmony/luni/tests/" + "test.rtf"; 76 ; //folder name 77 url = ClassLoader.getSystemClassLoader().getResource(resourceName); 78 conn = new FileURLConnection(url); 79 assertNotNull(conn.getInputStream()); 80 assertEquals(conn.getContentType(), conn.getHeaderField("content-type")); 81 assertEquals(Integer.toString(conn.getContentLength()), conn.getHeaderField("content-length")); 82 assertEquals(conn.getHeaderField(0), conn.getHeaderField("content-type")); 83 assertEquals(conn.getHeaderField(1), conn.getHeaderField("content-length")); 84 assertEquals(conn.getHeaderField(2), conn.getHeaderField("last-modified")); 85 assertEquals("last-modified", conn.getHeaderFieldKey(2)); 86 assertEquals("content-length", conn.getHeaderFieldKey(1)); 87 assertEquals("content-type", conn.getHeaderFieldKey(0)); 88 } 89 90 public void testHeader_BoundaryCheck() throws IOException { 91 String resourceName = "org/apache/harmony/luni/tests/"; 92 URL url = ClassLoader.getSystemClassLoader().getResource(resourceName); 93 URLConnection urlConnection = url.openConnection(); 94 assertNull(urlConnection.getHeaderField(Integer.MIN_VALUE)); 95 assertNull(urlConnection.getHeaderField(Integer.MAX_VALUE)); 96 assertNull(urlConnection.getHeaderFieldKey(Integer.MIN_VALUE)); 97 assertNull(urlConnection.getHeaderFieldKey(Integer.MAX_VALUE)); 98 assertNull(urlConnection.getHeaderField(null)); 99 } 100} 101