github.com/release-engineering/exodus-rsync@v1.11.2/internal/cmd/cmd_bad_client_test.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/golang/mock/gomock" 8 "github.com/release-engineering/exodus-rsync/internal/gw" 9 ) 10 11 // Command fails if exodus-gw client can't be initialized. 12 func TestMainBadClient(t *testing.T) { 13 logs := CaptureLogger(t) 14 15 ctrl := MockController(t) 16 17 mockGw := gw.NewMockInterface(ctrl) 18 ext.gw = mockGw 19 20 // Set up a valid config file with a matching prefix, so it tries to use exodus-gw. 21 SetConfig(t, ` 22 gwcert: $HOME/certs/$USER.crt 23 gwkey: $HOME/certs/$USER.key 24 gwurl: https://exodus-gw.example.com/ 25 26 environments: 27 - prefix: some-dest 28 gwenv: test 29 `) 30 31 mockGw.EXPECT().NewClient(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("client error")) 32 33 got := Main([]string{ 34 "exodus-rsync", "-vvv", ".", "some-dest:/foo/bar", 35 }) 36 37 // It should exit. 38 if got != 101 { 39 t.Error("returned incorrect exit code", got) 40 } 41 42 // It should tell us why. 43 entry := FindEntry(logs, "can't initialize exodus-gw client") 44 if entry == nil { 45 t.Errorf("Missing expected log message") 46 } 47 48 if entry.Fields["error"].(error).Error() != "client error" { 49 t.Errorf("Did not get expected error, got: %v", entry.Fields["error"]) 50 } 51 }