mirror of
https://github.com/rancher/os.git
synced 2025-06-03 20:30:15 +00:00
93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
package tftp
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
type mockClient struct {
|
|
}
|
|
|
|
type mockReceiver struct {
|
|
}
|
|
|
|
func (r mockReceiver) WriteTo(w io.Writer) (n int64, err error) {
|
|
b := []byte("cloud-config file")
|
|
w.Write(b)
|
|
return int64(len(b)), nil
|
|
}
|
|
|
|
func (c mockClient) Receive(filename string, mode string) (io.WriterTo, error) {
|
|
if filename == "does-not-exist" {
|
|
return &mockReceiver{}, fmt.Errorf("does not exist")
|
|
}
|
|
return &mockReceiver{}, nil
|
|
}
|
|
|
|
var _ Client = (*mockClient)(nil)
|
|
|
|
func TestNewDatasource(t *testing.T) {
|
|
for _, tt := range []struct {
|
|
root string
|
|
expectHost string
|
|
expectPath string
|
|
}{
|
|
{
|
|
root: "127.0.0.1/test/file.yaml",
|
|
expectHost: "127.0.0.1:69",
|
|
expectPath: "test/file.yaml",
|
|
},
|
|
{
|
|
root: "127.0.0.1/test/file.yaml",
|
|
expectHost: "127.0.0.1:69",
|
|
expectPath: "test/file.yaml",
|
|
},
|
|
} {
|
|
ds := NewDatasource(tt.root)
|
|
if ds.host != tt.expectHost || ds.path != tt.expectPath {
|
|
t.Fatalf("bad host or path (%q): want host=%s, got %s, path=%s, got %s", tt.root, tt.expectHost, ds.host, tt.expectPath, ds.path)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestIsAvailable(t *testing.T) {
|
|
for _, tt := range []struct {
|
|
remoteFile *RemoteFile
|
|
expect bool
|
|
}{
|
|
{
|
|
remoteFile: &RemoteFile{"1.2.3.4", "test", &mockClient{}, nil, nil},
|
|
expect: true,
|
|
},
|
|
{
|
|
remoteFile: &RemoteFile{"1.2.3.4", "does-not-exist", &mockClient{}, nil, nil},
|
|
expect: false,
|
|
},
|
|
} {
|
|
if tt.remoteFile.IsAvailable() != tt.expect {
|
|
t.Fatalf("expected remote file %s to be %v", tt.remoteFile.path, tt.expect)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFetchUserdata(t *testing.T) {
|
|
rf := &RemoteFile{"1.2.3.4", "test", &mockClient{}, &mockReceiver{}, nil}
|
|
b, _ := rf.FetchUserdata()
|
|
|
|
expect := []byte("cloud-config file")
|
|
|
|
if len(b) != len(expect) || !reflect.DeepEqual(b, expect) {
|
|
t.Fatalf("expected length of buffer to be %d was %d. Expected %s, got %s", len(expect), len(b), string(expect), string(b))
|
|
}
|
|
}
|
|
|
|
func TestType(t *testing.T) {
|
|
rf := &RemoteFile{"1.2.3.4", "test", &mockClient{}, nil, nil}
|
|
|
|
if rf.Type() != "tftp" {
|
|
t.Fatalf("expected remote file Type() to return %s got %s", "tftp", rf.Type())
|
|
}
|
|
}
|