Skip to content

Commit 97018e6

Browse files
night556JacksonTian
authored andcommitted
fix issue: Use --force flag call unknown product always got MissingAction
1 parent eb3b003 commit 97018e6

File tree

2 files changed

+55
-28
lines changed

2 files changed

+55
-28
lines changed

openapi/commando.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ func (c *Commando) createInvoker(ctx *cli.Context, productCode string, apiOrMeth
275275
} else {
276276
return &ForceRpcInvoker{
277277
basicInvoker,
278-
method,
278+
apiOrMethod,
279279
}, nil
280280
// c.InvokeRpcForce(ctx, &product, apiOrMethod)
281281
}

openapi/commando_test.go

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -49,34 +49,41 @@ func Test_main(t *testing.T) {
4949
err = command.main(ctx, args)
5050
assert.NotNil(t, err)
5151
assert.Equal(t, "unknown profile ecs, run configure to check", err.Error())
52+
ctx.Flags().Get("region").SetAssigned(true)
53+
ctx.Flags().Get("region").SetValue("cn-hangzhou")
54+
ctx.Flags().Add(config.NewAccessKeyIdFlag())
55+
ctx.Flags().Get("access-key-id").SetAssigned(true)
56+
ctx.Flags().Get("access-key-id").SetValue("AccessKeyID")
57+
ctx.Flags().Add(config.NewAccessKeySecretFlag())
58+
ctx.Flags().Get("access-key-secret").SetAssigned(true)
59+
ctx.Flags().Get("access-key-secret").SetValue("AccessKeySecret")
60+
args = []string{"test"}
61+
profileflag.SetAssigned(false)
62+
err = command.main(ctx, args)
63+
assert.NotNil(t, err)
64+
assert.Equal(t, "'test' is not a valid command or product. See `aliyun help`.", err.Error())
65+
66+
args = []string{"aos", "test2"}
67+
err = command.main(ctx, args)
68+
assert.NotNil(t, err)
69+
assert.Equal(t, "'aos' is not a valid command or product. See `aliyun help`.", err.Error())
70+
71+
reader := &reader_test{}
72+
reader.content = `{"products":[{"code":"aos","api_style":"restful"}]}`
73+
command.library.builtinRepo = meta.LoadRepository(reader)
74+
err = command.main(ctx, args)
75+
assert.NotNil(t, err)
76+
assert.Equal(t, "missing version for product aos", err.Error())
77+
78+
args = []string{"test", "test2", "test1"}
79+
err = command.main(ctx, args)
80+
assert.NotNil(t, err)
81+
assert.Equal(t, "'test' is not a valid command or product. See `aliyun help`.", err.Error())
5282

53-
//args = []string{"test"}
54-
//profileflag.SetAssigned(false)
55-
//err = command.main(ctx, args)
56-
//assert.NotNil(t, err)
57-
//assert.Equal(t, "'test' is not a valid command or product. See `aliyun help`.", err.Error())
58-
//
59-
//args = []string{"aos", "test2"}
60-
//err = command.main(ctx, args)
61-
//assert.NotNil(t, err)
62-
//assert.Equal(t, "'aos' is not a valid command or product. See `aliyun help`.", err.Error())
63-
//
64-
//reader := &reader_test{}
65-
//reader.content = `{"products":[{"code":"aos","api_style":"restful"}]}`
66-
//command.library.builtinRepo = meta.LoadRepository(reader)
67-
//err = command.main(ctx, args)
68-
//assert.NotNil(t, err)
69-
//assert.Equal(t, "missing version for product aos", err.Error())
70-
//
71-
//args = []string{"test", "test2", "test1"}
72-
//err = command.main(ctx, args)
73-
//assert.NotNil(t, err)
74-
//assert.Equal(t, "'test' is not a valid command or product. See `aliyun help`.", err.Error())
75-
//
76-
//args = []string{"test", "test2", "test1", "test3"}
77-
//err = command.main(ctx, args)
78-
//assert.NotNil(t, err)
79-
//assert.Equal(t, "too many arguments", err.Error())
83+
args = []string{"test", "test2", "test1", "test3"}
84+
err = command.main(ctx, args)
85+
assert.NotNil(t, err)
86+
assert.Equal(t, "too many arguments", err.Error())
8087
}
8188

8289
func Test_processInvoke(t *testing.T) {
@@ -259,3 +266,23 @@ func Test_complete(t *testing.T) {
259266
str = command.complete(ctx, args)
260267
assert.Equal(t, []string{}, str)
261268
}
269+
270+
func TestCreateInvoker(t *testing.T) {
271+
profile := config.NewProfile("test")
272+
profile.AccessKeyId = "AccessKeyId"
273+
profile.AccessKeySecret = "AccessKeySecret"
274+
profile.RegionId = "cn-hangzhou"
275+
w := new(bytes.Buffer)
276+
commando := NewCommando(w, profile)
277+
278+
tempWriter := new(bytes.Buffer)
279+
ctx := cli.NewCommandContext(tempWriter)
280+
config.AddFlags(ctx.Flags())
281+
AddFlags(ctx.Flags())
282+
ctx.Flags().Get("force").SetAssigned(true)
283+
invoker, err := commando.createInvoker(ctx, "ecs", "DescribeRegions", "")
284+
rpcinvoker, ok := invoker.(*ForceRpcInvoker)
285+
assert.True(t, ok)
286+
assert.Nil(t, err)
287+
assert.Equal(t, rpcinvoker.method, "DescribeRegions")
288+
}

0 commit comments

Comments
 (0)