2023-01-27 21:37:20 +00:00
|
|
|
// Copyright (c) Tailscale Inc & AUTHORS
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
2022-09-27 23:30:39 +00:00
|
|
|
|
|
|
|
package dns
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"net/netip"
|
2024-09-05 03:10:11 +00:00
|
|
|
"reflect"
|
2022-09-27 23:30:39 +00:00
|
|
|
"testing"
|
|
|
|
|
2024-09-05 03:10:11 +00:00
|
|
|
"tailscale.com/tstest"
|
2022-09-27 23:30:39 +00:00
|
|
|
"tailscale.com/util/dnsname"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestOSConfigPrintable(t *testing.T) {
|
|
|
|
ocfg := OSConfig{
|
|
|
|
Hosts: []*HostEntry{
|
|
|
|
{
|
|
|
|
Addr: netip.AddrFrom4([4]byte{100, 1, 2, 3}),
|
|
|
|
Hosts: []string{"server", "client"},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Addr: netip.AddrFrom4([4]byte{100, 1, 2, 4}),
|
|
|
|
Hosts: []string{"otherhost"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Nameservers: []netip.Addr{
|
|
|
|
netip.AddrFrom4([4]byte{8, 8, 8, 8}),
|
|
|
|
},
|
|
|
|
SearchDomains: []dnsname.FQDN{
|
|
|
|
dnsname.FQDN("foo.beta.tailscale.net."),
|
|
|
|
dnsname.FQDN("bar.beta.tailscale.net."),
|
|
|
|
},
|
|
|
|
MatchDomains: []dnsname.FQDN{
|
|
|
|
dnsname.FQDN("ts.com."),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
s := fmt.Sprintf("%+v", ocfg)
|
|
|
|
|
|
|
|
const expected = `{Nameservers:[8.8.8.8] SearchDomains:[foo.beta.tailscale.net. bar.beta.tailscale.net.] MatchDomains:[ts.com.] Hosts:[&{Addr:100.1.2.3 Hosts:[server client]} &{Addr:100.1.2.4 Hosts:[otherhost]}]}`
|
|
|
|
if s != expected {
|
|
|
|
t.Errorf("format mismatch:\n got: %s\n want: %s", s, expected)
|
|
|
|
}
|
|
|
|
}
|
2024-09-05 03:10:11 +00:00
|
|
|
|
|
|
|
func TestIsZero(t *testing.T) {
|
|
|
|
tstest.CheckIsZero[OSConfig](t, map[reflect.Type]any{
|
|
|
|
reflect.TypeFor[dnsname.FQDN](): dnsname.FQDN("foo.bar."),
|
|
|
|
reflect.TypeFor[*HostEntry](): &HostEntry{
|
|
|
|
Addr: netip.AddrFrom4([4]byte{100, 1, 2, 3}),
|
|
|
|
Hosts: []string{"foo", "bar"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|