...
1
2 package delete
3
4 import (
5 "context"
6 "encoding/json"
7 "strings"
8 "testing"
9 "time"
10
11 "github.com/stretchr/testify/require"
12
13 "edge-infra.dev/pkg/edge/api/fake"
14 "edge-infra.dev/pkg/edge/api/graph/model"
15 "edge-infra.dev/pkg/edge/edgecli"
16 "edge-infra.dev/pkg/edge/edgecli/flagutil"
17 "edge-infra.dev/pkg/lib/cli/rags"
18 )
19
20 type DeleteOperatorInterventionPrivilegeResponse struct {
21 DeleteOperatorInterventionPrivilege model.DeleteOperatorInterventionPrivilegeResponse `json:"deleteOperatorInterventionPrivilege"`
22 }
23
24
25
26
27 func DeleteOperatorInterventionPrivilege(body []byte) (interface{}, bool, error) {
28 if !strings.Contains(string(body), "deleteOperatorInterventionPrivilege(privilege: $privilege)") {
29 return nil, false, nil
30 }
31
32 var ok = true
33
34 var m struct {
35 Query string
36 Variables struct {
37 Privilege struct {
38 Name string
39 }
40 }
41 }
42 err := json.Unmarshal(body, &m)
43 if err != nil {
44 return DeleteOperatorInterventionPrivilegeResponse{}, ok, nil
45 }
46
47 var errors []*model.OperatorInterventionErrorResponse
48 if m.Variables.Privilege.Name == "bad-privilege" {
49 errors = []*model.OperatorInterventionErrorResponse{{
50 Type: model.OperatorInterventionErrorTypeUnknownCommand,
51 Privilege: &m.Variables.Privilege.Name,
52 }}
53 }
54 return DeleteOperatorInterventionPrivilegeResponse{
55 DeleteOperatorInterventionPrivilege: model.DeleteOperatorInterventionPrivilegeResponse{
56 Errors: errors,
57 },
58 }, ok, nil
59 }
60
61 func TestDeletePrivilege(t *testing.T) {
62 t.Parallel()
63
64 edgeAPIMockSvr := fake.GetMockAPIServer(DeleteOperatorInterventionPrivilege)
65 edgeAPIMockURL := edgeAPIMockSvr.URL + "/api/v2"
66 t.Cleanup(func() {
67 edgeAPIMockSvr.Close()
68 })
69
70 tests := map[string]struct {
71 flagsFunc func(*rags.RagSet) error
72 expError require.ErrorAssertionFunc
73 }{
74 "No Flags": {
75 flagsFunc: func(*rags.RagSet) error { return nil },
76 expError: require.Error,
77 },
78 "Empty Flag": {
79 flagsFunc: func(c *rags.RagSet) error {
80 return flagutil.SetFlag(c, flagutil.OIPrivilege, "")
81 },
82 expError: require.Error,
83 },
84 "Flag": {
85 flagsFunc: func(c *rags.RagSet) error {
86 return flagutil.SetFlag(c, flagutil.OIPrivilege, "abcd")
87 },
88 expError: require.NoError,
89 },
90 "Bad Command": {
91 flagsFunc: func(c *rags.RagSet) error {
92 return flagutil.SetFlag(c, flagutil.OIPrivilege, "bad-privilege")
93 },
94 expError: require.Error,
95 },
96 }
97
98 for name, tc := range tests {
99 tc := tc
100 t.Run(name, func(t *testing.T) {
101 t.Parallel()
102
103
104
105
106
107 future := time.Now().Add(time.Hour * 24)
108 testConfig := edgecli.Config{
109 CurrentBannerContext: "fakeBanner",
110 BannerContexts: map[string]*edgecli.BannerContext{
111 "fakeBanner": {
112 TokenTime: future.Format(time.RFC3339),
113 Token: "fakeToken",
114 Endpoint: edgeAPIMockURL,
115 },
116 },
117 }
118
119 cmd := NewDeletePrivilege(&testConfig)
120 cmd.Command()
121
122 require.NoError(t, tc.flagsFunc(cmd.Rags))
123
124 err := cmd.Command().Exec(context.Background(), []string{})
125 tc.expError(t, err)
126 })
127 }
128 }
129
View as plain text