package externalip_test import ( "fmt" "net" "net/http" "net/http/httptest" "testing" "time" "git.narnian.us/lordwelch/externalip" ) func TestHTTPSource(t *testing.T) { server := httptest.NewUnstartedServer( http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) fmt.Fprintln(w, r.RemoteAddr[1:len(r.RemoteAddr)-7]) })) server.Listener.Close() server.Listener, _ = net.Listen("tcp6", "[::1]:0") server.Start() defer server.Close() source := externalip.NewHTTPSource("http://"+server.Listener.Addr().String(), 6) ip, _ := source.IP(time.Second*10, nil) if ip.String() != "::1" { t.Errorf("invalid ip found: expected %s recieved %s", "::1", ip) } } func TestHTTPSource2(t *testing.T) { server := httptest.NewUnstartedServer( http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) fmt.Fprintln(w, r.RemoteAddr[1:len(r.RemoteAddr)-7]) })) server.Listener.Close() server.Listener, _ = net.Listen("tcp6", "[::1]:0") server.Start() defer server.Close() source := externalip.NewHTTPSource("http://"+server.Listener.Addr().String(), 4) ip, _ := source.IP(time.Second*10, nil) if ip != nil { t.Errorf("invalid ip found: expected %s recieved %s", "nil", ip) } } func TestHTTPSource3(t *testing.T) { server := httptest.NewUnstartedServer( http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) fmt.Fprintln(w, r.RemoteAddr[:len(r.RemoteAddr)-6]) })) server.Listener.Close() server.Listener, _ = net.Listen("tcp4", "127.0.0.1:0") server.Start() defer server.Close() source := externalip.NewHTTPSource("http://"+server.Listener.Addr().String(), 4) ip, _ := source.IP(time.Second*10, nil) if ip.String() != "127.0.0.1" { t.Errorf("invalid ip found: expected %s recieved %s", "127.0.0.1", ip) } } func TestHTTPSource4(t *testing.T) { server := httptest.NewUnstartedServer( http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) fmt.Fprintln(w, r.RemoteAddr[:len(r.RemoteAddr)-6]) })) server.Listener.Close() server.Listener, _ = net.Listen("tcp4", "127.0.0.1:0") server.Start() defer server.Close() source := externalip.NewHTTPSource("http://"+server.Listener.Addr().String(), 6) ip, _ := source.IP(time.Second*10, nil) if ip != nil { t.Errorf("invalid ip found: expected %s recieved %s", "nil", ip) } }