Skip to content

Commit cbcd117

Browse files
author
dimitraz
committed
List service instances tests
1 parent d131bc7 commit cbcd117

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

pkg/cmd/services_test.go

+120
Original file line numberDiff line numberDiff line change
@@ -450,3 +450,123 @@ func TestServicesCmd_CreateServiceInstanceCmd(t *testing.T) {
450450
})
451451
}
452452
}
453+
454+
func TestServicesCmd_ListServiceInstanceCmd(t *testing.T) {
455+
cases := []struct {
456+
Name string
457+
SvcCatalogClient func() versioned.Interface
458+
K8Client func() kubernetes.Interface
459+
ExpectError bool
460+
ValidateErr func(t *testing.T, err error)
461+
ValidateOut func(t *testing.T, output []byte)
462+
Args []string
463+
Flags []string
464+
}{
465+
{
466+
Name: "test list service instances as expected",
467+
SvcCatalogClient: func() versioned.Interface {
468+
fake := &scFake.Clientset{}
469+
fake.AddReactor("list", "serviceinstances", func(action ktesting.Action) (handled bool, ret runtime.Object, err error) {
470+
return true, &v1beta1.ServiceInstanceList{
471+
Items: []v1beta1.ServiceInstance{
472+
{
473+
ObjectMeta: metav1.ObjectMeta{
474+
GenerateName: "keycloak",
475+
Name: "keycloak",
476+
Labels: map[string]string{
477+
"serviceName": "keycloak",
478+
},
479+
},
480+
},
481+
},
482+
}, nil
483+
})
484+
return fake
485+
},
486+
K8Client: func() kubernetes.Interface {
487+
return &kFake.Clientset{}
488+
},
489+
ValidateOut: func(t *testing.T, data []byte) {
490+
var list = &v1beta1.ServiceInstanceList{}
491+
492+
if err := json.Unmarshal(data, list); err != nil {
493+
t.Fatal("failed to unmarshal data", err)
494+
}
495+
if nil == list {
496+
t.Fatal("expected a list but got nil")
497+
}
498+
if len(list.Items) != 1 {
499+
t.Fatalf("expected only one item in the list but got %v", len(list.Items))
500+
}
501+
},
502+
Flags: []string{"--namespace=myproject", "-o=json"},
503+
Args: []string{"keycloak"},
504+
},
505+
{
506+
Name: "error is returned when no service name is passed",
507+
SvcCatalogClient: func() versioned.Interface {
508+
fake := &scFake.Clientset{}
509+
return fake
510+
},
511+
K8Client: func() kubernetes.Interface {
512+
return &kFake.Clientset{}
513+
},
514+
ExpectError: true,
515+
ValidateErr: func(t *testing.T, err error) {
516+
if err == nil {
517+
t.Fatalf("expected an error but did not get one")
518+
}
519+
if err.Error() != "no service name passed" {
520+
t.Fatalf("expected error to be '%s' but got '%v'", "no service name passed", err)
521+
}
522+
},
523+
},
524+
{
525+
Name: "error is returned when no namespace is set",
526+
SvcCatalogClient: func() versioned.Interface {
527+
fake := &scFake.Clientset{}
528+
return fake
529+
},
530+
K8Client: func() kubernetes.Interface {
531+
return &kFake.Clientset{}
532+
},
533+
ExpectError: true,
534+
ValidateErr: func(t *testing.T, err error) {
535+
if err == nil {
536+
t.Fatalf("expected an error but did not get one")
537+
}
538+
if err.Error() != "failed to get namespace: no namespace present. Cannot continue. Please set the --namespace flag or the KUBECTL_PLUGINS_CURRENT_NAMESPACE env var" {
539+
t.Fatalf("expected error to be '%s' but got '%v'", "failed to get namespace: no namespace present. Cannot continue. Please set the --namespace flag or the KUBECTL_PLUGINS_CURRENT_NAMESPACE env var", err)
540+
}
541+
},
542+
Flags: []string{"-o=json"},
543+
Args: []string{"keycloak"},
544+
},
545+
}
546+
547+
for _, tc := range cases {
548+
t.Run(tc.Name, func(t *testing.T) {
549+
var out bytes.Buffer
550+
root := cmd.NewRootCmd()
551+
serviceCmd := cmd.NewServicesCmd(tc.SvcCatalogClient(), tc.K8Client(), &out)
552+
listInstCmd := serviceCmd.ListServiceInstCmd()
553+
root.AddCommand(listInstCmd)
554+
if err := listInstCmd.ParseFlags(tc.Flags); err != nil {
555+
t.Fatal("failed to parse command flags", err)
556+
}
557+
err := listInstCmd.RunE(listInstCmd, tc.Args)
558+
if err != nil && !tc.ExpectError {
559+
t.Fatal("did not expect an error but gone one ", err)
560+
}
561+
if err == nil && tc.ExpectError {
562+
t.Fatal("expected an error but got none")
563+
}
564+
if tc.ValidateOut != nil {
565+
tc.ValidateOut(t, out.Bytes())
566+
}
567+
if tc.ValidateErr != nil {
568+
tc.ValidateErr(t, err)
569+
}
570+
})
571+
}
572+
}

0 commit comments

Comments
 (0)