github.com/tmsmr/k4wd@v0.9.1-0.20240220054329-da5057436901/internal/pkg/config/config_test.go (about)

     1  package config
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"reflect"
     7  	"testing"
     8  )
     9  
    10  func TestForwardfile_Validate(t *testing.T) {
    11  	type fields struct {
    12  		Forwards map[string]Forward
    13  	}
    14  	tests := []struct {
    15  		name    string
    16  		fields  fields
    17  		wantErr bool
    18  	}{
    19  		{"valid", fields{Forwards: map[string]Forward{"test": {Pod: "test", Remote: "http"}}}, false},
    20  		{"no forwards", fields{Forwards: nil}, true},
    21  		{"empty forwards", fields{Forwards: map[string]Forward{}}, true},
    22  		{"invalid forward", fields{Forwards: map[string]Forward{"test": {Pod: "test"}}}, true},
    23  	}
    24  	for _, tt := range tests {
    25  		t.Run(tt.name, func(t *testing.T) {
    26  			ff := &Forwardfile{
    27  				Forwards: tt.fields.Forwards,
    28  			}
    29  			if err := ff.Validate(); (err != nil) != tt.wantErr {
    30  				t.Errorf("Validate() error = %v, wantErr %v", err, tt.wantErr)
    31  			}
    32  		})
    33  	}
    34  }
    35  
    36  func TestLoad(t *testing.T) {
    37  	dir, err := os.MkdirTemp(os.TempDir(), "")
    38  	if err != nil {
    39  		t.Fatal(err)
    40  	}
    41  	if err := os.Chdir(dir); err != nil {
    42  		t.Fatal(err)
    43  	}
    44  	if err := os.WriteFile(path.Join(dir, "Forwardfile"), []byte(`
    45  [forwards.test]
    46  pod = "test"
    47  remote = "http"
    48  `), 0644); err != nil {
    49  		t.Fatal(err)
    50  	}
    51  	if err := os.WriteFile(path.Join(dir, "Forwardfile-invalid"), []byte("relaxed = true"), 0644); err != nil {
    52  		t.Fatal(err)
    53  	}
    54  	if err := os.WriteFile(path.Join(dir, "Forwardfile-invalid-fmt"), []byte("{}"), 0644); err != nil {
    55  		t.Fatal(err)
    56  	}
    57  	type args struct {
    58  		opts []ForwardfileOption
    59  	}
    60  	tests := []struct {
    61  		name    string
    62  		args    args
    63  		want    *Forwardfile
    64  		wantErr bool
    65  	}{
    66  		{"valid", args{}, &Forwardfile{Path: "Forwardfile", Relaxed: false, Forwards: map[string]Forward{"test": {Pod: "test", Remote: "http"}}}, false},
    67  		{"invalid", args{[]ForwardfileOption{WithPath("Forwardfile-invalid")}}, nil, true},
    68  		{"invalid fmt", args{[]ForwardfileOption{WithPath("Forwardfile-invalid-fmt")}}, nil, true},
    69  	}
    70  	for _, tt := range tests {
    71  		t.Run(tt.name, func(t *testing.T) {
    72  			got, err := Load(tt.args.opts...)
    73  			if (err != nil) != tt.wantErr {
    74  				t.Errorf("Load() error = %v, wantErr %v", err, tt.wantErr)
    75  				return
    76  			}
    77  			if !reflect.DeepEqual(got, tt.want) {
    78  				t.Errorf("Load() got = %v, want %v", got, tt.want)
    79  			}
    80  		})
    81  	}
    82  }