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 }