| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package amneziawgnet
- import (
- "context"
- "errors"
- "net/netip"
- "testing"
- awgconn "github.com/amnezia-vpn/amneziawg-go/v3/conn"
- )
- func endpointAddrPort(ep awgconn.Endpoint) netip.AddrPort {
- std, ok := ep.(*awgconn.StdNetEndpoint)
- if !ok {
- panic("unexpected endpoint type")
- }
- return std.AddrPort
- }
- func TestResolvingBind_ParseEndpointIPLiteral(t *testing.T) {
- b := newResolvingBind()
- ep, err := b.ParseEndpoint("203.0.113.7:51820")
- if err != nil {
- t.Fatalf("IP endpoint rejected: %v", err)
- }
- got := endpointAddrPort(ep)
- if got.Addr().String() != "203.0.113.7" || got.Port() != 51820 {
- t.Fatalf("endpoint = %v, want 203.0.113.7:51820", got)
- }
- }
- func TestResolvingBind_ParseEndpointHostnameResolves(t *testing.T) {
- orig := lookupEndpointHost
- lookupEndpointHost = func(ctx context.Context, host string) ([]netip.Addr, error) {
- if host != "peer.example.test" {
- t.Errorf("unexpected lookup host %q", host)
- }
- return []netip.Addr{netip.MustParseAddr("198.51.100.9")}, nil
- }
- defer func() { lookupEndpointHost = orig }()
- b := newResolvingBind()
- ep, err := b.ParseEndpoint("peer.example.test:443")
- if err != nil {
- t.Fatalf("hostname endpoint rejected: %v", err)
- }
- if got := endpointAddrPort(ep); got.Addr().String() != "198.51.100.9" || got.Port() != 443 {
- t.Fatalf("endpoint = %v, want 198.51.100.9:443", got)
- }
- }
- func TestResolvingBind_ParseEndpointResolveFailureIsAnError(t *testing.T) {
- orig := lookupEndpointHost
- lookupEndpointHost = func(ctx context.Context, host string) ([]netip.Addr, error) {
- return nil, errors.New("no such host")
- }
- defer func() { lookupEndpointHost = orig }()
- b := newResolvingBind()
- if _, err := b.ParseEndpoint("missing.example.test:80"); err == nil {
- t.Fatal("expected resolve failure to surface as an error")
- }
- }
- func TestResolvingBind_ParseEndpointBadPortRejected(t *testing.T) {
- b := newResolvingBind()
- if _, err := b.ParseEndpoint("203.0.113.7:none"); err == nil {
- t.Fatal("expected bad port to be rejected")
- }
- }
|