Skip to content

Commit 1675bd9

Browse files
committed
remove implied org functionality from secret remove
also fill in missing test cases >_>
1 parent c036e66 commit 1675bd9

File tree

2 files changed

+23
-35
lines changed

2 files changed

+23
-35
lines changed

pkg/cmd/secret/remove/remove.go

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"net/http"
66

7-
"github.com/MakeNowJust/heredoc"
87
"github.com/cli/cli/api"
98
"github.com/cli/cli/internal/ghinstance"
109
"github.com/cli/cli/internal/ghrepo"
@@ -31,12 +30,7 @@ func NewCmdRemove(f *cmdutil.Factory, runF func(*RemoveOptions) error) *cobra.Co
3130
cmd := &cobra.Command{
3231
Use: "remove <secret name>",
3332
Short: "Remove an organization or repository secret",
34-
Example: heredoc.Doc(`
35-
$ gh secret remove REPO_SECRET
36-
$ gh secret remove --org ORG_SECRET
37-
$ gh secret remove --org="anotherOrg" ORG_SECRET
38-
`),
39-
Args: cobra.ExactArgs(1),
33+
Args: cobra.ExactArgs(1),
4034
RunE: func(cmd *cobra.Command, args []string) error {
4135
// support `-R, --repo` override
4236
opts.BaseRepo = f.BaseRepo
@@ -50,8 +44,7 @@ func NewCmdRemove(f *cmdutil.Factory, runF func(*RemoveOptions) error) *cobra.Co
5044
return removeRun(opts)
5145
},
5246
}
53-
cmd.Flags().StringVar(&opts.OrgName, "org", "", "List secrets for an organization")
54-
cmd.Flags().Lookup("org").NoOptDefVal = "@owner"
47+
cmd.Flags().StringVarP(&opts.OrgName, "org", "o", "", "List secrets for an organization")
5548

5649
return cmd
5750
}
@@ -63,27 +56,24 @@ func removeRun(opts *RemoveOptions) error {
6356
}
6457
client := api.NewClientFromHTTP(c)
6558

59+
orgName := opts.OrgName
60+
6661
var baseRepo ghrepo.Interface
67-
if opts.OrgName == "" || opts.OrgName == "@owner" {
62+
if orgName == "" {
6863
baseRepo, err = opts.BaseRepo()
6964
if err != nil {
7065
return fmt.Errorf("could not determine base repo: %w", err)
7166
}
7267
}
7368

74-
host := ghinstance.OverridableDefault()
75-
if opts.OrgName == "@owner" {
76-
opts.OrgName = baseRepo.RepoOwner()
77-
host = baseRepo.RepoHost()
78-
}
79-
8069
var path string
8170
if opts.OrgName == "" {
8271
path = fmt.Sprintf("repos/%s/actions/secrets/%s", ghrepo.FullName(baseRepo), opts.SecretName)
8372
} else {
8473
path = fmt.Sprintf("orgs/%s/actions/secrets/%s", opts.OrgName, opts.SecretName)
8574
}
8675

76+
host := ghinstance.OverridableDefault()
8777
err = client.REST(host, "DELETE", path, nil, nil)
8878
if err != nil {
8979
return fmt.Errorf("failed to delete secret %s: %w", opts.SecretName, err)

pkg/cmd/secret/remove/remove_test.go

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,15 @@ func TestNewCmdRemove(t *testing.T) {
2626
wantsErr: true,
2727
},
2828
{
29-
name: "implicit org",
30-
cli: "cool --org",
29+
name: "repo",
30+
cli: "cool",
3131
wants: RemoveOptions{
3232
SecretName: "cool",
33-
OrgName: "@owner",
3433
},
3534
},
3635
{
37-
name: "explicit org",
38-
cli: "cool --org=anOrg",
36+
name: "org",
37+
cli: "cool --org anOrg",
3938
wants: RemoveOptions{
4039
SecretName: "cool",
4140
OrgName: "anOrg",
@@ -109,13 +108,11 @@ func Test_removeRun_org(t *testing.T) {
109108
opts *RemoveOptions
110109
}{
111110
{
112-
name: "implicit org",
113-
opts: &RemoveOptions{
114-
OrgName: "@owner",
115-
},
111+
name: "repo",
112+
opts: &RemoveOptions{},
116113
},
117114
{
118-
name: "explicit org",
115+
name: "org",
119116
opts: &RemoveOptions{
120117
OrgName: "UmbrellaCorporation",
121118
},
@@ -126,21 +123,22 @@ func Test_removeRun_org(t *testing.T) {
126123
t.Run(tt.name, func(t *testing.T) {
127124
reg := &httpmock.Registry{}
128125

129-
impliedOrgName := "NeoUmbrella"
130-
131126
orgName := tt.opts.OrgName
132-
if orgName == "@owner" {
133-
orgName = impliedOrgName
134-
}
135127

136-
reg.Register(
137-
httpmock.REST("DELETE", fmt.Sprintf("orgs/%s/actions/secrets/tVirus", orgName)),
138-
httpmock.StatusStringResponse(204, "No Content"))
128+
if orgName == "" {
129+
reg.Register(
130+
httpmock.REST("DELETE", "repos/owner/repo/actions/secrets/tVirus"),
131+
httpmock.StatusStringResponse(204, "No Content"))
132+
} else {
133+
reg.Register(
134+
httpmock.REST("DELETE", fmt.Sprintf("orgs/%s/actions/secrets/tVirus", orgName)),
135+
httpmock.StatusStringResponse(204, "No Content"))
136+
}
139137

140138
io, _, _, _ := iostreams.Test()
141139

142140
tt.opts.BaseRepo = func() (ghrepo.Interface, error) {
143-
return ghrepo.FromFullName(fmt.Sprintf("%s/repo", impliedOrgName))
141+
return ghrepo.FromFullName("owner/repo")
144142
}
145143
tt.opts.HttpClient = func() (*http.Client, error) {
146144
return &http.Client{Transport: reg}, nil

0 commit comments

Comments
 (0)