From 350ae79d2cd815a73d8185c9d0c1d3e64a498fb8 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Fri, 10 Nov 2023 11:19:39 +0100 Subject: [PATCH] Convert audience into a drop down in interactive mode in test token cmd --- internal/cli/test.go | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/internal/cli/test.go b/internal/cli/test.go index e8f59f29f..1686900a5 100644 --- a/internal/cli/test.go +++ b/internal/cli/test.go @@ -193,7 +193,7 @@ func testTokenCmd(cli *cli) *cobra.Command { return err } - if err := testAudience.Ask(cmd, &inputs.Audience, nil); err != nil { + if err := testAudienceRequired.Pick(cmd, &inputs.Audience, cli.audiencePickerOptions); err != nil { return err } @@ -342,6 +342,33 @@ func (c *cli) appPickerWithCreateOption(ctx context.Context) (pickerOptions, err return enhancedOptions, nil } +func (c *cli) audiencePickerOptions(ctx context.Context) (pickerOptions, error) { + resourceServerList, err := c.api.ResourceServer.List(ctx, management.PerPage(100)) + if err != nil { + return nil, err + } + + var opts pickerOptions + for _, resourceServer := range resourceServerList.ResourceServers { + label := fmt.Sprintf( + "%s %s", + resourceServer.GetName(), + ansi.Faint(fmt.Sprintf("(%s)", resourceServer.GetIdentifier())), + ) + + opts = append(opts, pickerOption{ + label: label, + value: resourceServer.GetIdentifier(), + }) + } + + if len(opts) == 0 { + return nil, fmt.Errorf("no APIs found on the tenant") + } + + return opts, nil +} + func checkClientIsAuthorizedForAPI(ctx context.Context, cli *cli, client *management.Client, audience string) error { var list *management.ClientGrantList if err := ansi.Waiting(func() (err error) {