From e4f18fa7f8ab8d9eca9ba07445c1b229529107d4 Mon Sep 17 00:00:00 2001 From: Gunjan Vyas Date: Tue, 20 Jul 2021 15:44:12 +0530 Subject: [PATCH] Adding tests for commands package (#1377) --- pkg/kn/commands/describe_test.go | 43 ++++++++++++++++++++++++++++++ pkg/kn/commands/namespaced_test.go | 6 +++++ pkg/kn/commands/types_test.go | 42 +++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+) diff --git a/pkg/kn/commands/describe_test.go b/pkg/kn/commands/describe_test.go index 72424848d..49a5470e7 100644 --- a/pkg/kn/commands/describe_test.go +++ b/pkg/kn/commands/describe_test.go @@ -16,12 +16,15 @@ package commands import ( "bytes" + "fmt" "regexp" "strconv" "strings" "testing" + "time" "gotest.tools/v3/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/client/pkg/printers" "knative.dev/pkg/apis" ) @@ -108,3 +111,43 @@ OK TYPE AGE REASON I Ccc Eh.`)) } } + +func TestWriteSliceDesc(t *testing.T) { + var out bytes.Buffer + pw := printers.NewBarePrefixWriter(&out) + WriteSliceDesc(pw, nil, "", false) + assert.Equal(t, "", out.String()) + + slice := []string{"val1", "val2", "val3"} + WriteSliceDesc(pw, slice, "mockLabel", false) + expected := "mockLabel:\tval1, val2, val3\n" + assert.Equal(t, expected, out.String()) + + out.Reset() + WriteSliceDesc(pw, slice, "mockLabel", true) + expected = "mockLabel:\tval1\n\tval2\n\tval3\n" + assert.Equal(t, expected, out.String()) + + for i := 4; i <= TruncateAt; i++ { + slice = append(slice, fmt.Sprintf("val%d", i)) + } + out.Reset() + joined := strings.Join(slice, ", ")[:TruncateAt-4] + expected = fmt.Sprintf("mockLabel:\t%s ...\n", joined) + WriteSliceDesc(pw, slice, "mockLabel", false) + assert.Equal(t, expected, out.String()) + +} + +func TestWriteMetadata(t *testing.T) { + var out bytes.Buffer + pw := printers.NewBarePrefixWriter(&out) + m := &metav1.ObjectMeta{ + Name: "mockName", + Namespace: "mockNamespace", + CreationTimestamp: metav1.NewTime(time.Now().Add(-5 * time.Second)), + } + WriteMetadata(pw, m, false) + expected := "Name:\tmockName\nNamespace:\tmockNamespace\nAge:\t5s\n" + assert.Equal(t, expected, out.String()) +} diff --git a/pkg/kn/commands/namespaced_test.go b/pkg/kn/commands/namespaced_test.go index e6e4973a3..33655d948 100644 --- a/pkg/kn/commands/namespaced_test.go +++ b/pkg/kn/commands/namespaced_test.go @@ -18,6 +18,7 @@ import ( "testing" "github.com/spf13/cobra" + "gotest.tools/v3/assert" ) // testCommandGenerator generates a test cobra command @@ -45,6 +46,11 @@ func TestGetNamespaceSample(t *testing.T) { if actualNamespace != expectedNamespace { t.Fatalf("Incorrect namespace retrieved: %v, expected: %v", actualNamespace, expectedNamespace) } + kp = &KnParams{} + testCmd = testCommandGenerator(false) + actualNamespace, err = kp.GetNamespace(testCmd) + assert.NilError(t, err) + assert.Equal(t, "default", actualNamespace) } // test current namespace without setting any namespace diff --git a/pkg/kn/commands/types_test.go b/pkg/kn/commands/types_test.go index d133fbb59..8216c7906 100644 --- a/pkg/kn/commands/types_test.go +++ b/pkg/kn/commands/types_test.go @@ -96,6 +96,9 @@ func TestPrepareConfig(t *testing.T) { } } } + _, err = (&KnParams{}).RestConfig() + assert.ErrorContains(t, err, "no kubeconfig") + } type typeTestCase struct { @@ -408,3 +411,42 @@ func TestNewMessagingClient(t *testing.T) { } } } + +func TestInitialize(t *testing.T) { + params := &KnParams{} + params.Initialize() + assert.Assert(t, params.NewServingClient != nil) + assert.Assert(t, params.NewServingV1alpha1Client != nil) + assert.Assert(t, params.NewGitopsServingClient != nil) + assert.Assert(t, params.NewSourcesClient != nil) + assert.Assert(t, params.NewEventingClient != nil) + assert.Assert(t, params.NewMessagingClient != nil) + assert.Assert(t, params.NewDynamicClient != nil) + + basic, err := clientcmd.NewClientConfigFromBytes([]byte(BASIC_KUBECONFIG)) + if err != nil { + t.Error(err) + } + + // Test all clients are not nil + params.ClientConfig = basic + servingClient, err := params.NewServingClient("mockNamespace") + assert.NilError(t, err) + assert.Assert(t, servingClient != nil) + + eventingClient, err := params.NewEventingClient("mockNamespace") + assert.NilError(t, err) + assert.Assert(t, eventingClient != nil) + + gitOpsClient, err := params.NewGitopsServingClient("mockNamespace", "mockDir") + assert.NilError(t, err) + assert.Assert(t, gitOpsClient != nil) + + messagingClient, err := params.NewMessagingClient("mockNamespace") + assert.NilError(t, err) + assert.Assert(t, messagingClient != nil) + + sourcesClient, err := params.NewSourcesClient("mockNamespace") + assert.NilError(t, err) + assert.Assert(t, sourcesClient != nil) +}