externalip/sources_test.go
Timmy Welch 9363450cdc v0.0.1
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
2022-07-07 18:40:35 -07:00

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)
}
}