...
1
2
3
4 package task
5
6 import (
7 "testing"
8
9 apierrors "k8s.io/apimachinery/pkg/api/errors"
10 "k8s.io/apimachinery/pkg/runtime/schema"
11 "sigs.k8s.io/cli-utils/pkg/apply/cache"
12 "sigs.k8s.io/cli-utils/pkg/apply/event"
13 "sigs.k8s.io/cli-utils/pkg/apply/taskrunner"
14 "sigs.k8s.io/cli-utils/pkg/common"
15 "sigs.k8s.io/cli-utils/pkg/inventory"
16 "sigs.k8s.io/cli-utils/pkg/object"
17 )
18
19 func TestDeleteInvTask(t *testing.T) {
20 testCases := map[string]struct {
21 err error
22 isError bool
23 }{
24 "no error case": {
25 err: nil,
26 isError: false,
27 },
28 "error is returned in result": {
29 err: apierrors.NewResourceExpired("unused message"),
30 isError: true,
31 },
32 "inventory not found is not error and not returned": {
33 err: apierrors.NewNotFound(schema.GroupResource{Resource: "simples"},
34 "unused-resource-name"),
35 isError: false,
36 },
37 }
38 for name, tc := range testCases {
39 t.Run(name, func(t *testing.T) {
40 client := inventory.NewFakeClient(object.ObjMetadataSet{})
41 client.Err = tc.err
42 eventChannel := make(chan event.Event)
43 resourceCache := cache.NewResourceCacheMap()
44 context := taskrunner.NewTaskContext(eventChannel, resourceCache)
45
46 task := DeleteInvTask{
47 TaskName: taskName,
48 InvClient: client,
49 InvInfo: localInv,
50 DryRun: common.DryRunNone,
51 }
52 if taskName != task.Name() {
53 t.Errorf("expected task name (%s), got (%s)", taskName, task.Name())
54 }
55 task.Start(context)
56 result := <-context.TaskChannel()
57 if tc.isError {
58 if tc.err != result.Err {
59 t.Errorf("running DeleteInvTask expected error (%s), got (%s)", tc.err, result.Err)
60 }
61 } else {
62 if result.Err != nil {
63 t.Errorf("unexpected error running DeleteInvTask: %s", result.Err)
64 }
65 }
66 })
67 }
68 }
69
View as plain text