github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/utils_test.go (about) 1 package cmd 2 3 import ( 4 "bytes" 5 "os" 6 "path/filepath" 7 "testing" 8 9 drycc "github.com/drycc/controller-sdk-go" 10 "github.com/drycc/workflow-cli/pkg/git" 11 "github.com/drycc/workflow-cli/settings" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestLoad(t *testing.T) { 16 name, err := os.MkdirTemp("", "drycc-cli-unit-test-load") 17 assert.NoError(t, err) 18 defer os.RemoveAll(name) 19 20 filename := filepath.Join(name, "test.json") 21 host := "drycc.example.com" 22 client, err := drycc.New(false, host, "") 23 assert.NoError(t, err) 24 25 config := settings.Settings{ 26 Username: "test", 27 Client: client, 28 } 29 30 filename, err = config.Save(filename) 31 assert.NoError(t, err) 32 33 _, appID, err := load(filename, "test") 34 assert.NoError(t, err) 35 assert.Equal(t, appID, "test", "app") 36 37 assert.NoError(t, os.Chdir(name)) 38 39 _, appID, err = load(filename, "") 40 assert.NoError(t, err) 41 assert.Equal(t, appID, filepath.Base(name), "app") 42 43 assert.NoError(t, git.Init(git.DefaultCmd)) 44 assert.NoError(t, git.CreateRemote(git.DefaultCmd, host, "drycc", "testing")) 45 46 _, appID, err = load(filename, "") 47 assert.NoError(t, err) 48 assert.Equal(t, appID, "testing", "app") 49 } 50 51 func TestDrinkOfChoice(t *testing.T) { 52 os.Setenv("DRYCC_DRINK_OF_CHOICE", "test") 53 assert.Equal(t, drinkOfChoice(), "test", "output") 54 os.Unsetenv("DRYCC_DRINK_OF_CHOICE") 55 assert.Equal(t, drinkOfChoice(), "coffee", "output") 56 } 57 58 func TestLimitsCount(t *testing.T) { 59 t.Parallel() 60 assert.Equal(t, limitCount(1, 1), "\n", "output") 61 assert.Equal(t, limitCount(1, 2), " (1 of 2)\n", "output") 62 } 63 64 func TestAPICompatibility(t *testing.T) { 65 t.Parallel() 66 var b bytes.Buffer 67 cmdr := DryccCmd{WErr: &b, ConfigFile: ""} 68 client := drycc.Client{ControllerAPIVersion: "v1.0"} 69 70 err := cmdr.checkAPICompatibility(&client, drycc.ErrAPIMismatch) 71 assert.NoError(t, err) 72 assert.Equal(t, b.String(), `! WARNING: Client and server API versions do not match. Please consider upgrading. 73 ! Client version: 2.3 74 ! Server version: v1.0 75 `, "output") 76 77 // After being warned once, the warning should not be printed again. 78 b.Reset() 79 err = cmdr.checkAPICompatibility(&client, drycc.ErrAPIMismatch) 80 assert.NoError(t, err) 81 assert.Equal(t, b.String(), "", "output") 82 83 b.Reset() 84 err = cmdr.checkAPICompatibility(&client, drycc.ErrConflict) 85 assert.Error(t, drycc.ErrConflict, err) 86 assert.Equal(t, b.String(), "", "output") 87 }