/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package javax.mail; import java.net.MalformedURLException; import java.net.URL; import junit.framework.TestCase; /** * @version $Rev$ $Date$ */ public class URLNameTest extends TestCase { public URLNameTest(final String name) { super(name); } public void testURLNameString() { String s; URLName name; s = "http://www.apache.org"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL(s), name.getURL()); } catch (final MalformedURLException e) { fail(); } s = "http://www.apache.org/file/file1#ref"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file1", name.getFile()); assertEquals("ref", name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL(s), name.getURL()); } catch (final MalformedURLException e) { fail(); } s = "http://www.apache.org/file/"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/", name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL(s), name.getURL()); } catch (final MalformedURLException e) { fail(); } s = "http://john@www.apache.org/file/"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/", name.getFile()); assertNull(name.getRef()); assertEquals("john", name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL(s), name.getURL()); } catch (final MalformedURLException e) { fail(); } s = "http://john:doe@www.apache.org/file/"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/", name.getFile()); assertNull(name.getRef()); assertEquals("john", name.getUsername()); assertEquals("doe", name.getPassword()); try { assertEquals(new URL(s), name.getURL()); } catch (final MalformedURLException e) { fail(); } s = "http://john%40gmail.com:doe@www.apache.org/file/"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/", name.getFile()); assertNull(name.getRef()); assertEquals("john@gmail.com", name.getUsername()); assertEquals("doe", name.getPassword()); try { assertEquals(new URL(s), name.getURL()); } catch (final MalformedURLException e) { fail(); } s = "file/file2"; name = new URLName(s); assertNull(name.getProtocol()); assertNull(name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file2", name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { name.getURL(); fail(); } catch (final MalformedURLException e) { // OK } name = new URLName((String) null); assertNull( name.getProtocol()); assertNull(name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { name.getURL(); fail(); } catch (final MalformedURLException e) { // OK } name = new URLName(""); assertNull( name.getProtocol()); assertNull(name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { name.getURL(); fail(); } catch (final MalformedURLException e) { // OK } } public void testURLNameAll() { URLName name; name = new URLName(null, null, -1, null, null, null); assertNull(name.getProtocol()); assertNull(name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { name.getURL(); fail(); } catch (final MalformedURLException e) { // OK } name = new URLName("", "", -1, "", "", ""); assertNull(name.getProtocol()); assertNull(name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { name.getURL(); fail(); } catch (final MalformedURLException e) { // OK } name = new URLName("http", "www.apache.org", -1, null, null, null); assertEquals("http://www.apache.org", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL("http://www.apache.org"), name.getURL()); } catch (final MalformedURLException e) { fail(); } name = new URLName("http", "www.apache.org", 8080, "", "", ""); assertEquals("http://www.apache.org:8080", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(8080, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL("http://www.apache.org:8080"), name.getURL()); } catch (final MalformedURLException e) { fail(); } name = new URLName("http", "www.apache.org", -1, "file/file2", "", ""); assertEquals("http://www.apache.org/file/file2", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file2", name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL("http://www.apache.org/file/file2"), name.getURL()); } catch (final MalformedURLException e) { fail(); } name = new URLName("http", "www.apache.org", -1, "file/file2", "john", ""); assertEquals("http://john@www.apache.org/file/file2", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file2", name.getFile()); assertNull(name.getRef()); assertEquals("john", name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL("http://john@www.apache.org/file/file2"), name.getURL()); } catch (final MalformedURLException e) { fail(); } name = new URLName("http", "www.apache.org", -1, "file/file2", "john", "doe"); assertEquals("http://john:doe@www.apache.org/file/file2", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file2", name.getFile()); assertNull(name.getRef()); assertEquals("john", name.getUsername()); assertEquals("doe", name.getPassword()); try { assertEquals(new URL("http://john:doe@www.apache.org/file/file2"), name.getURL()); } catch (final MalformedURLException e) { fail(); } name = new URLName("http", "www.apache.org", -1, "file/file2", "john@gmail.com", "doe"); assertEquals("http://john%40gmail.com:doe@www.apache.org/file/file2", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file2", name.getFile()); assertNull(name.getRef()); assertEquals("john@gmail.com", name.getUsername()); assertEquals("doe", name.getPassword()); try { assertEquals(new URL("http://john%40gmail.com:doe@www.apache.org/file/file2"), name.getURL()); } catch (final MalformedURLException e) { fail(); } name = new URLName("http", "www.apache.org", -1, "file/file2", "", "doe"); assertEquals("http://www.apache.org/file/file2", name.toString()); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("file/file2", name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(new URL("http://www.apache.org/file/file2"), name.getURL()); } catch (final MalformedURLException e) { fail(); } } public void testURLNameURL() throws MalformedURLException { URL url; URLName name; url = new URL("http://www.apache.org"); name = new URLName(url); assertEquals("http", name.getProtocol()); assertEquals("www.apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertNull(name.getFile()); assertNull(name.getRef()); assertNull(name.getUsername()); assertNull(name.getPassword()); try { assertEquals(url, name.getURL()); } catch (final MalformedURLException e) { fail(); } } public void testEquals() throws MalformedURLException { URLName name1 = new URLName("http://www.apache.org"); assertEquals(name1, new URLName("http://www.apache.org")); assertEquals(name1, new URLName(new URL("http://www.apache.org"))); assertEquals(name1, new URLName("http", "www.apache.org", -1, null, null, null)); assertEquals(name1, new URLName("http://www.apache.org#foo")); // wierd but ref is not part of the equals contract assertTrue(!name1.equals(new URLName("http://www.apache.org:8080"))); assertTrue(!name1.equals(new URLName("http://cvs.apache.org"))); assertTrue(!name1.equals(new URLName("https://www.apache.org"))); name1 = new URLName("http://john:doe@www.apache.org"); assertEquals(name1, new URLName(new URL("http://john:doe@www.apache.org"))); assertEquals(name1, new URLName("http", "www.apache.org", -1, null, "john", "doe")); assertTrue(!name1.equals(new URLName("http://john:xxx@www.apache.org"))); assertTrue(!name1.equals(new URLName("http://xxx:doe@www.apache.org"))); assertTrue(!name1.equals(new URLName("http://www.apache.org"))); assertEquals(new URLName("http://john@www.apache.org"), new URLName("http", "www.apache.org", -1, null, "john", null)); assertEquals(new URLName("http://www.apache.org"), new URLName("http", "www.apache.org", -1, null, null, "doe")); } public void testHashCode() { final URLName name1 = new URLName("http://www.apache.org/file"); final URLName name2 = new URLName("http://www.apache.org/file#ref"); assertTrue(name1.equals(name2)); assertTrue(name1.hashCode() == name2.hashCode()); } public void testNullProtocol() { final URLName name1 = new URLName(null, "www.apache.org", -1, null, null, null); final URLName name2 = new URLName(null, "www.apache.org", -1, null, null, null); assertTrue(!name2.equals(name1)); } public void testOpaqueSchemes() { String s; URLName name; // not strictly opaque but no protocol handler installed s = "foo://jdoe@apache.org/INBOX"; name = new URLName(s); assertEquals(s, name.toString()); assertEquals("foo", name.getProtocol()); assertEquals("apache.org", name.getHost()); assertEquals(-1, name.getPort()); assertEquals("INBOX", name.getFile()); assertNull(name.getRef()); assertEquals("jdoe", name.getUsername()); assertNull(name.getPassword()); // TBD as I am not sure what other URL formats to use } }