1 /* 2 * Copyright 2009 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.mockftpserver.core.util 17 18 import org.slf4j.Logger; 19 import org.slf4j.LoggerFactory; 20 import org.mockftpserver.core.CommandSyntaxException 21 import org.mockftpserver.test.AbstractGroovyTestCase 22 23 /** 24 * Tests for the PortParser class 25 * 26 * @author Chris Mair 27 * @version $Revision$ - $Date$ 28 */ 29 class PortParserTest extends AbstractGroovyTestCase { 30 31 static final Logger LOG = LoggerFactory.getLogger(PortParserTest.class) 32 static final String[] PARAMETERS = ["192", "22", "250", "44", "1", "206"] 33 static final String[] PARAMETERS_INSUFFICIENT = ["7", "29", "99", "11", "77"] 34 static final int PORT = (1 << 8) + 206 35 static final InetAddress HOST = inetAddress("192.22.250.44") 36 37 static final PARAMETER_IPV4 = "|1|132.235.1.2|6275|" 38 static final HOST_IPV4 = InetAddress.getByName("132.235.1.2") 39 static final PARAMETER_IPV6 = "|2|1080::8:800:200C:417A|6275|" 40 static final HOST_IPV6 = InetAddress.getByName("1080::8:800:200C:417A") 41 static final E_PORT = 6275 42 43 void testParseExtendedAddressHostAndPort_IPv4() { 44 def client = PortParser.parseExtendedAddressHostAndPort(PARAMETER_IPV4) 45 assert client.host == HOST_IPV4 46 assert client.port == E_PORT 47 } 48 49 void testParseExtendedAddressHostAndPort_IPv6() { 50 def client = PortParser.parseExtendedAddressHostAndPort(PARAMETER_IPV6) 51 assert client.host == HOST_IPV6 52 assert client.port == E_PORT 53 } 54 55 void testParseExtendedAddressHostAndPort_IPv6_CustomDelimiter() { 56 def client = PortParser.parseExtendedAddressHostAndPort("@2@1080::8:800:200C:417A@6275@") 57 assert client.host == HOST_IPV6 58 assert client.port == E_PORT 59 } 60 61 void testParseExtendedAddressHostAndPort_IllegalParameterFormat() { 62 final PARM = 'abcdef' 63 shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(PARM) } 64 } 65 66 void testParseExtendedAddressHostAndPort_PortMissing() { 67 final PARM = '|1|132.235.1.2|' 68 shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(PARM) } 69 } 70 71 void testParseExtendedAddressHostAndPort_IllegalHostName() { 72 final PARM = '|1|132.@|6275|' 73 shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(PARM) } 74 } 75 76 void testParseExtendedAddressHostAndPort_Null() { 77 shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(null) } 78 } 79 80 void testParseExtendedAddressHostAndPort_Empty() { 81 shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort('') } 82 } 83 84 void testParseHostAndPort() { 85 def client = PortParser.parseHostAndPort(PARAMETERS) 86 assert client.host == HOST 87 assert client.port == PORT 88 } 89 90 void testParseHostAndPort_Null() { 91 shouldFail(CommandSyntaxException) { PortParser.parseHostAndPort(null) } 92 } 93 94 void testParseHostAndPort_InsufficientParameters() throws UnknownHostException { 95 shouldFail(CommandSyntaxException) { PortParser.parseHostAndPort(PARAMETERS_INSUFFICIENT) } 96 } 97 98 void testConvertHostAndPortToStringOfBytes() { 99 int port = (23 << 8) + 77 100 InetAddress host = InetAddress.getByName("196.168.44.55") 101 String result = PortParser.convertHostAndPortToCommaDelimitedBytes(host, port) 102 LOG.info("result=" + result) 103 assertEquals("result", "196,168,44,55,23,77", result) 104 } 105 106 }