Add pre-commit config Update default consensus with more sources Move IP version spec to Source so that dual-stack sites can be used Add tests for HTTPSource and consensus
82 lines
2.3 KiB
Go
82 lines
2.3 KiB
Go
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)
|
|
}
|
|
}
|