mirror of
https://github.com/go-micro/go-micro.git
synced 2025-11-23 21:44:41 +02:00
util/addr: Fixes findIP to return public IP if present. (#2673)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package addr
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"net"
|
||||
"testing"
|
||||
)
|
||||
@@ -54,3 +55,78 @@ func TestExtractor(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestFindIP(t *testing.T) {
|
||||
localhost, _ := net.ResolveIPAddr("ip", "127.0.0.1")
|
||||
localhostIPv6, _ := net.ResolveIPAddr("ip", "::1")
|
||||
privateIP, _ := net.ResolveIPAddr("ip", "10.0.0.1")
|
||||
publicIP, _ := net.ResolveIPAddr("ip", "100.0.0.1")
|
||||
publicIPv6, _ := net.ResolveIPAddr("ip", "2001:0db8:85a3:0000:0000:8a2e:0370:7334")
|
||||
|
||||
testCases := []struct {
|
||||
addrs []net.Addr
|
||||
ip net.IP
|
||||
errMsg string
|
||||
}{
|
||||
{
|
||||
addrs: []net.Addr{},
|
||||
ip: nil,
|
||||
errMsg: ErrIPNotFound.Error(),
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{localhost},
|
||||
ip: localhost.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{localhost, localhostIPv6},
|
||||
ip: localhost.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{localhostIPv6},
|
||||
ip: localhostIPv6.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{privateIP, localhost},
|
||||
ip: privateIP.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{privateIP, publicIP, localhost},
|
||||
ip: privateIP.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{publicIP, privateIP, localhost},
|
||||
ip: privateIP.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{publicIP, localhost},
|
||||
ip: publicIP.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{publicIP, localhostIPv6},
|
||||
ip: publicIP.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{localhostIPv6, publicIP},
|
||||
ip: publicIP.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{localhostIPv6, publicIPv6, publicIP},
|
||||
ip: publicIPv6.IP,
|
||||
},
|
||||
{
|
||||
addrs: []net.Addr{publicIP, publicIPv6},
|
||||
ip: publicIP.IP,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
ip, err := findIP(tc.addrs)
|
||||
if tc.errMsg == "" {
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, tc.ip.String(), ip.String())
|
||||
} else {
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, tc.errMsg, err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user