blob: 1bf5ed88f91a425c8526210a6719d33b61bbd36b [file] [log] [blame]
/*
* Copyright 2009 the original author or authors.
*
* Licensed 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 org.mockftpserver.core.util
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.mockftpserver.core.CommandSyntaxException
import org.mockftpserver.test.AbstractGroovyTestCase
/**
* Tests for the PortParser class
*
* @author Chris Mair
* @version $Revision$ - $Date$
*/
class PortParserTest extends AbstractGroovyTestCase {
static final Logger LOG = LoggerFactory.getLogger(PortParserTest.class)
static final String[] PARAMETERS = ["192", "22", "250", "44", "1", "206"]
static final String[] PARAMETERS_INSUFFICIENT = ["7", "29", "99", "11", "77"]
static final int PORT = (1 << 8) + 206
static final InetAddress HOST = inetAddress("192.22.250.44")
static final PARAMETER_IPV4 = "|1|132.235.1.2|6275|"
static final HOST_IPV4 = InetAddress.getByName("132.235.1.2")
static final PARAMETER_IPV6 = "|2|1080::8:800:200C:417A|6275|"
static final HOST_IPV6 = InetAddress.getByName("1080::8:800:200C:417A")
static final E_PORT = 6275
void testParseExtendedAddressHostAndPort_IPv4() {
def client = PortParser.parseExtendedAddressHostAndPort(PARAMETER_IPV4)
assert client.host == HOST_IPV4
assert client.port == E_PORT
}
void testParseExtendedAddressHostAndPort_IPv6() {
def client = PortParser.parseExtendedAddressHostAndPort(PARAMETER_IPV6)
assert client.host == HOST_IPV6
assert client.port == E_PORT
}
void testParseExtendedAddressHostAndPort_IPv6_CustomDelimiter() {
def client = PortParser.parseExtendedAddressHostAndPort("@2@1080::8:800:200C:417A@6275@")
assert client.host == HOST_IPV6
assert client.port == E_PORT
}
void testParseExtendedAddressHostAndPort_IllegalParameterFormat() {
final PARM = 'abcdef'
shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(PARM) }
}
void testParseExtendedAddressHostAndPort_PortMissing() {
final PARM = '|1|132.235.1.2|'
shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(PARM) }
}
void testParseExtendedAddressHostAndPort_IllegalHostName() {
final PARM = '|1|132.@|6275|'
shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(PARM) }
}
void testParseExtendedAddressHostAndPort_Null() {
shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort(null) }
}
void testParseExtendedAddressHostAndPort_Empty() {
shouldFail(CommandSyntaxException) { PortParser.parseExtendedAddressHostAndPort('') }
}
void testParseHostAndPort() {
def client = PortParser.parseHostAndPort(PARAMETERS)
assert client.host == HOST
assert client.port == PORT
}
void testParseHostAndPort_Null() {
shouldFail(CommandSyntaxException) { PortParser.parseHostAndPort(null) }
}
void testParseHostAndPort_InsufficientParameters() throws UnknownHostException {
shouldFail(CommandSyntaxException) { PortParser.parseHostAndPort(PARAMETERS_INSUFFICIENT) }
}
void testConvertHostAndPortToStringOfBytes() {
int port = (23 << 8) + 77
InetAddress host = InetAddress.getByName("196.168.44.55")
String result = PortParser.convertHostAndPortToCommaDelimitedBytes(host, port)
LOG.info("result=" + result)
assertEquals("result", "196,168,44,55,23,77", result)
}
}