Skip to content

Commit

Permalink
Exercise each scenario in its own test.
Browse files Browse the repository at this point in the history
  • Loading branch information
sbruens committed Mar 15, 2024
1 parent 00c1045 commit 7f3d9d0
Showing 1 changed file with 53 additions and 31 deletions.
84 changes: 53 additions & 31 deletions ipinfo/ipinfo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,82 +46,104 @@ func (a *badAddr) Network() string {
return "bad"
}

func TestGetIPInfoFromIP(t *testing.T) {
func TestGetIPInfoFromIPIPInfoDisabledReturnsEmptyIPInfo(t *testing.T) {
var emptyInfo IPInfo
noInfoMap := &noopMap{}

// IP info disabled
info, err := GetIPInfoFromIP(nil, nil)
info, err := GetIPInfoFromIP(nil, net.IPv4(127, 0, 0, 1))

require.Equal(t, emptyInfo, info)
require.NoError(t, err)
}

func TestGetIPInfoFromIPNilAddressReturnsError(t *testing.T) {
info, err := GetIPInfoFromIP(&noopMap{}, nil)

// Nil address
info, err = GetIPInfoFromIP(noInfoMap, nil)
require.Error(t, err)
require.Equal(t, errParseAddr, info.CountryCode)
}

func TestGetIPInfoFromIPLocalhostAddressReturnsLocalLocation(t *testing.T) {
info, err := GetIPInfoFromIP(&noopMap{}, net.IPv4(127, 0, 0, 1))

// Localhost address
info, err = GetIPInfoFromIP(noInfoMap, net.IPv4(127, 0, 0, 1))
require.NoError(t, err)
require.Equal(t, localLocation, info.CountryCode)
}

func TestGetIPInfoFromIPLocalNetworkAddressReturnsUnknownLocation(t *testing.T) {
info, err := GetIPInfoFromIP(&noopMap{}, net.IPv4(10, 0, 0, 1))

// Local network address
info, err = GetIPInfoFromIP(noInfoMap, net.IPv4(10, 0, 0, 1))
require.NoError(t, err)
require.Equal(t, unknownLocation, info.CountryCode)
}

func TestGetIPInfoFromIPNoCountryFoundReturnsUnknownLocation(t *testing.T) {
info, err := GetIPInfoFromIP(&noopMap{}, net.IPv4(8, 8, 8, 8))

// No country found
info, err = GetIPInfoFromIP(noInfoMap, net.IPv4(8, 8, 8, 8))
require.NoError(t, err)
require.Equal(t, unknownLocation, info.CountryCode)
}

func TestGetIPInfoFromIPFailedDBLookupReturnsError(t *testing.T) {
info, err := GetIPInfoFromIP(&badMap{}, net.IPv4(8, 8, 8, 8))

// Failed DB lookup
info, err = GetIPInfoFromIP(&badMap{}, net.IPv4(8, 8, 8, 8))
require.Error(t, err)
require.Equal(t, errDbLookupError, info.CountryCode)
}

func TestGetIPInfoFromAddr(t *testing.T) {
func TestGetIPInfoFromAddrIPInfoDisabledReturnsEmptyIPInfo(t *testing.T) {
var emptyInfo IPInfo
noInfoMap := &noopMap{}

// IP info disabled
info, err := GetIPInfoFromAddr(nil, &badAddr{"127.0.0.1:port"})

require.Equal(t, emptyInfo, info)
require.NoError(t, err)
}

func TestGetIPInfoFromAddrNilAddressReturnsError(t *testing.T) {
info, err := GetIPInfoFromAddr(&noopMap{}, nil)

// Nil address
info, err = GetIPInfoFromAddr(noInfoMap, nil)
require.Error(t, err)
require.Equal(t, errParseAddr, info.CountryCode)
}

func TestGetIPInfoFromAddrHostNoPortReturnsError(t *testing.T) {
info, err := GetIPInfoFromAddr(&noopMap{}, &badAddr{"host-no-port"})

// Can't split host:port in address
info, err = GetIPInfoFromAddr(noInfoMap, &badAddr{"host-no-port"})
require.Error(t, err)
require.Equal(t, errParseAddr, info.CountryCode)
}

func TestGetIPInfoFromAddrHostIsNotIPReturnsError(t *testing.T) {
info, err := GetIPInfoFromAddr(&noopMap{}, &badAddr{"host-is-not-ip:port"})

// Host is not an IP
info, err = GetIPInfoFromAddr(noInfoMap, &badAddr{"host-is-not-ip:port"})
require.Error(t, err)
require.Equal(t, errParseAddr, info.CountryCode)
}

func TestGetIPInfoFromAddrLocalhostAddressReturnsLocalLocation(t *testing.T) {
info, err := GetIPInfoFromAddr(&noopMap{}, &badAddr{"127.0.0.1:port"})

// Localhost address
info, err = GetIPInfoFromAddr(noInfoMap, &badAddr{"127.0.0.1:port"})
require.NoError(t, err)
require.Equal(t, localLocation, info.CountryCode)
}

func TestGetIPInfoFromAddrLocalNetworkAddressReturnsUnknownLocation(t *testing.T) {
info, err := GetIPInfoFromAddr(&noopMap{}, &badAddr{"10.0.0.1:port"})

// Local network address
info, err = GetIPInfoFromAddr(noInfoMap, &badAddr{"10.0.0.1:port"})
require.NoError(t, err)
require.Equal(t, unknownLocation, info.CountryCode)
}

func TestGetIPInfoFromAddrNoCountryFoundReturnsUnknownLocation(t *testing.T) {
info, err := GetIPInfoFromAddr(&noopMap{}, &badAddr{"8.8.8.8:port"})

// No country found
info, err = GetIPInfoFromAddr(noInfoMap, &badAddr{"8.8.8.8:port"})
require.NoError(t, err)
require.Equal(t, unknownLocation, info.CountryCode)
}

func TestGetIPInfoFromAddrFailedDBLookupReturnsError(t *testing.T) {
info, err := GetIPInfoFromAddr(&badMap{}, &badAddr{"8.8.8.8:port"})

// Failed DB lookup
info, err = GetIPInfoFromAddr(&badMap{}, &badAddr{"8.8.8.8:port"})
require.Error(t, err)
require.Equal(t, errDbLookupError, info.CountryCode)
}
Expand Down

0 comments on commit 7f3d9d0

Please sign in to comment.