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  }