Check port range. Add more unit tests for address format.

Signed-off-by: Dong Chen <dongluo.chen@docker.com>
This commit is contained in:
Dong Chen 2016-03-02 11:01:48 -08:00
parent bc27cedd8c
commit bf5c744a49
2 changed files with 8 additions and 3 deletions

View File

@ -3,7 +3,7 @@ package cli
import (
"math/rand"
"net"
"regexp"
"strconv"
"time"
log "github.com/Sirupsen/logrus"
@ -17,8 +17,8 @@ func checkAddrFormat(addr string) bool {
if err != nil {
return false
}
m, _ := regexp.MatchString("^[0-9]{1,5}$", port)
return m
portNum, err := strconv.Atoi(port)
return err == nil && portNum >= 0 && portNum <= 65535
}
func join(c *cli.Context) {

View File

@ -24,6 +24,11 @@ func TestCheckAddrFormat(t *testing.T) {
assert.True(t, checkAddrFormat("1.1.1.1:1111"))
assert.True(t, checkAddrFormat("hostname:1111"))
assert.True(t, checkAddrFormat("host-name_42:1111"))
assert.False(t, checkAddrFormat("1.1.1.1:-1"))
assert.True(t, checkAddrFormat("1.1.1.1:65535"))
assert.False(t, checkAddrFormat("1.1.1.1:65536"))
assert.False(t, checkAddrFormat("1.1.1.1: 4000"))
assert.False(t, checkAddrFormat("1.1.1.1:m2"))
assert.True(t, checkAddrFormat("[2001:db8:0:f101::3]:2375"))
assert.False(t, checkAddrFormat("2001:db8:0:f101::3:2375"))
assert.False(t, checkAddrFormat("[2001:db8:0:f101::3]:3:2375"))