106 lines
2.3 KiB
Go
106 lines
2.3 KiB
Go
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package controlclient
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"inet.af/netaddr"
|
|
"tailscale.com/tailcfg"
|
|
"tailscale.com/types/wgkey"
|
|
)
|
|
|
|
func TestNewDirect(t *testing.T) {
|
|
hi := NewHostinfo()
|
|
ni := tailcfg.NetInfo{LinkType: "wired"}
|
|
hi.NetInfo = &ni
|
|
|
|
key, err := wgkey.NewPrivate()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
opts := Options{
|
|
ServerURL: "https://example.com",
|
|
Hostinfo: hi,
|
|
GetMachinePrivateKey: func() (wgkey.Private, error) {
|
|
return key, nil
|
|
},
|
|
}
|
|
c, err := NewDirect(opts)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if c.serverURL != opts.ServerURL {
|
|
t.Errorf("c.serverURL got %v want %v", c.serverURL, opts.ServerURL)
|
|
}
|
|
|
|
if !hi.Equal(c.hostinfo) {
|
|
t.Errorf("c.hostinfo got %v want %v", c.hostinfo, hi)
|
|
}
|
|
|
|
changed := c.SetNetInfo(&ni)
|
|
if changed {
|
|
t.Errorf("c.SetNetInfo(ni) want false got %v", changed)
|
|
}
|
|
ni = tailcfg.NetInfo{LinkType: "wifi"}
|
|
changed = c.SetNetInfo(&ni)
|
|
if !changed {
|
|
t.Errorf("c.SetNetInfo(ni) want true got %v", changed)
|
|
}
|
|
|
|
changed = c.SetHostinfo(hi)
|
|
if changed {
|
|
t.Errorf("c.SetHostinfo(hi) want false got %v", changed)
|
|
}
|
|
hi = NewHostinfo()
|
|
hi.Hostname = "different host name"
|
|
changed = c.SetHostinfo(hi)
|
|
if !changed {
|
|
t.Errorf("c.SetHostinfo(hi) want true got %v", changed)
|
|
}
|
|
|
|
endpoints := fakeEndpoints(1, 2, 3)
|
|
changed = c.newEndpoints(12, endpoints)
|
|
if !changed {
|
|
t.Errorf("c.newEndpoints(12) want true got %v", changed)
|
|
}
|
|
changed = c.newEndpoints(12, endpoints)
|
|
if changed {
|
|
t.Errorf("c.newEndpoints(12) want false got %v", changed)
|
|
}
|
|
changed = c.newEndpoints(13, endpoints)
|
|
if !changed {
|
|
t.Errorf("c.newEndpoints(13) want true got %v", changed)
|
|
}
|
|
endpoints = fakeEndpoints(4, 5, 6)
|
|
changed = c.newEndpoints(13, endpoints)
|
|
if !changed {
|
|
t.Errorf("c.newEndpoints(13) want true got %v", changed)
|
|
}
|
|
}
|
|
|
|
func fakeEndpoints(ports ...uint16) (ret []tailcfg.Endpoint) {
|
|
for _, port := range ports {
|
|
ret = append(ret, tailcfg.Endpoint{
|
|
Addr: netaddr.IPPortFrom(netaddr.IP{}, port),
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func TestNewHostinfo(t *testing.T) {
|
|
hi := NewHostinfo()
|
|
if hi == nil {
|
|
t.Fatal("no Hostinfo")
|
|
}
|
|
j, err := json.MarshalIndent(hi, " ", "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Logf("Got: %s", j)
|
|
}
|