Skip to content

Commit ce4b054

Browse files
authored
[CHANGE] [BREAKING] retracts --strict-tags support (#674)
* [CHANGE] retract case-sensitive tag changes from v2.7.0 - the --strict-tags flag has been removed. This reverts commit 2931e19.
1 parent 26cd02f commit ce4b054

File tree

11 files changed

+47
-148
lines changed

11 files changed

+47
-148
lines changed

cmd/deleteimport.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package cmd
1717

1818
import (
19+
"errors"
1920
"fmt"
2021
"strings"
2122

@@ -172,7 +173,7 @@ func (p *DeleteImportParams) Validate(ctx ActionCtx) error {
172173
if p.srcAccount != "" {
173174
m = fmt.Sprintf("%s from account %s", m, p.srcAccount)
174175
}
175-
return fmt.Errorf(m)
176+
return errors.New(m)
176177
}
177178

178179
if err = p.SignerParams.Resolve(ctx); err != nil {

cmd/editaccount.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ func createEditAccount() *cobra.Command {
5757
return RunAction(cmd, args, params)
5858
},
5959
}
60-
cmd.Flags().BoolVarP(&params.strictTags, "strict-tags", "", false, "allow tags to be case-sensitive, default false")
6160
cmd.Flags().StringSliceVarP(&params.tags, "tag", "", nil, "add tags for user - comma separated list or option can be specified multiple times")
6261
cmd.Flags().StringSliceVarP(&params.rmTags, "rm-tag", "", nil, "remove tag - comma separated list or option can be specified multiple times")
6362
params.conns = -1

cmd/editaccount_test.go

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func Test_EditAccount(t *testing.T) {
3737
{createEditAccount(), []string{"edit", "account"}, nil, []string{"specify an edit option"}, true},
3838
{createEditAccount(), []string{"edit", "account", "--info-url", "http://foo/bar"}, nil, []string{"changed info url to"}, false},
3939
{createEditAccount(), []string{"edit", "account", "--description", "my account is about this"}, nil, []string{"changed description to"}, false},
40-
{createEditAccount(), []string{"edit", "account", "--tag", "a", "--name", "A"}, nil, []string{"edited account \"A\""}, false},
40+
{createEditAccount(), []string{"edit", "account", "--tag", "A", "--name", "A"}, nil, []string{"edited account \"A\""}, false},
4141
}
4242

4343
tests.Run(t, "root", "edit")
@@ -60,7 +60,7 @@ func Test_EditAccount_Tag(t *testing.T) {
6060
defer ts.Done(t)
6161

6262
ts.AddAccount(t, "A")
63-
_, _, err := ExecuteCmd(createEditAccount(), "--tag", "a,b,c")
63+
_, _, err := ExecuteCmd(createEditAccount(), "--tag", "A,B,C")
6464
require.NoError(t, err)
6565

6666
ac, err := ts.Store.ReadAccountClaim("A")
@@ -75,17 +75,17 @@ func Test_EditAccount_RmTag(t *testing.T) {
7575
defer ts.Done(t)
7676

7777
ts.AddAccount(t, "A")
78-
_, _, err := ExecuteCmd(createEditAccount(), "--tag", "A,B,C", "--strict-tags")
78+
_, _, err := ExecuteCmd(createEditAccount(), "--tag", "A,B,C")
7979
require.NoError(t, err)
8080

81-
_, _, err = ExecuteCmd(createEditAccount(), "--rm-tag", "A,B", "--strict-tags")
81+
_, _, err = ExecuteCmd(createEditAccount(), "--rm-tag", "A,B")
8282
require.NoError(t, err)
8383

8484
ac, err := ts.Store.ReadAccountClaim("A")
8585
require.NoError(t, err)
8686

8787
require.Len(t, ac.Tags, 1)
88-
require.ElementsMatch(t, ac.Tags, []string{"C"})
88+
require.ElementsMatch(t, ac.Tags, []string{"c"})
8989
}
9090

9191
func Test_EditAccount_Times(t *testing.T) {
@@ -380,17 +380,17 @@ func Test_EditSysAccount(t *testing.T) {
380380
for idx, n := range jsOptions {
381381
flag := fmt.Sprintf("--%s", n)
382382
if idx > 0 {
383-
_, _, err = ExecuteCmd(createEditAccount(), "SYS", "--tag", "a", flag, "1")
383+
_, _, err = ExecuteCmd(createEditAccount(), "SYS", "--tag", "A", flag, "1")
384384
require.Error(t, err)
385385
require.Contains(t, err.Error(), flag)
386386
} else {
387-
_, _, err = ExecuteCmd(createEditAccount(), "SYS", "--tag", "a", flag)
387+
_, _, err = ExecuteCmd(createEditAccount(), "SYS", "--tag", "A", flag)
388388
require.Error(t, err)
389389
require.Contains(t, err.Error(), flag)
390390
}
391391
}
392392
// defaults are removed automatically
393-
_, _, err = ExecuteCmd(createEditAccount(), "SYS", "--tag", "a")
393+
_, _, err = ExecuteCmd(createEditAccount(), "SYS", "--tag", "A")
394394
require.NoError(t, err)
395395
}
396396

@@ -524,28 +524,3 @@ func Test_EnableTierNoOtherFlag(t *testing.T) {
524524
require.Error(t, err)
525525
require.Equal(t, "rm-js-tier is exclusive of all other js options", err.Error())
526526
}
527-
528-
func TestEditAccountStrictTags(t *testing.T) {
529-
ts := NewTestStore(t, "O")
530-
defer ts.Done(t)
531-
532-
ts.AddAccount(t, "A")
533-
534-
_, _, err := ExecuteCmd(createEditAccount(), "--tag", "a")
535-
require.NoError(t, err)
536-
537-
_, _, err = ExecuteCmd(createEditAccount(), "--rm-tag", "A")
538-
require.Error(t, err)
539-
require.Contains(t, err.Error(), "--rm-tag \"A\" is not lowercased")
540-
541-
_, _, err = ExecuteCmd(createEditAccount(), "--rm-tag", "A", "--strict-tags")
542-
require.Error(t, err)
543-
require.Contains(t, err.Error(), "unable to remove tag: \"A\" - not found")
544-
545-
_, _, err = ExecuteCmd(createEditAccount(), "--tag", "A", "--strict-tags")
546-
require.NoError(t, err)
547-
548-
uc, err := ts.Store.ReadAccountClaim("A")
549-
require.NoError(t, err)
550-
require.True(t, uc.Tags.Equals(&jwt.TagList{"A", "a"}))
551-
}

cmd/editoperator.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ func createEditOperatorCmd() *cobra.Command {
4040
}
4141
params.signingKeys.BindFlags("sk", "", nkeys.PrefixByteOperator, cmd)
4242
cmd.Flags().StringSliceVarP(&params.rmSigningKeys, "rm-sk", "", nil, "remove signing key - comma separated list or option can be specified multiple times")
43-
cmd.Flags().BoolVarP(&params.strictTags, "strict-tags", "", false, "allow tags to be case-sensitive, default false")
4443
cmd.Flags().StringSliceVarP(&params.tags, "tag", "", nil, "add tags for user - comma separated list or option can be specified multiple times")
4544
cmd.Flags().StringSliceVarP(&params.rmTags, "rm-tag", "", nil, "remove tag - comma separated list or option can be specified multiple times")
4645
cmd.Flags().StringVarP(&params.asu, "account-jwt-server-url", "u", "", "set account jwt server url for nsc sync (only http/https or nats service (nats/tls/ws/wss) urls supported if updating with nsc)")

cmd/editoperator_test.go

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func Test_EditOperator(t *testing.T) {
4343
{createEditOperatorCmd(), []string{"edit", "operator", "--sk"}, nil, []string{"flag needs an argument"}, true},
4444
{createEditOperatorCmd(), []string{"edit", "operator", "--sk", "SAADOZRUTPZS6LIXS6CSSSW5GXY3DNMQMSDTVWHQNHQTIBPGNSADSMBPEU"}, nil, []string{"invalid operator signing key"}, true},
4545
{createEditOperatorCmd(), []string{"edit", "operator", "--sk", "OBMWGGURAFWMH3AFDX65TVIH4ZYSL7UKZ3LOH2ZRWIAU7PGZ3IJNR6W5"}, nil, []string{"edited operator"}, false},
46-
{createEditOperatorCmd(), []string{"edit", "operator", "--tag", "o", "--start", "2019-04-13", "--expiry", "2050-01-01"}, nil, []string{"edited operator"}, false},
46+
{createEditOperatorCmd(), []string{"edit", "operator", "--tag", "O", "--start", "2019-04-13", "--expiry", "2050-01-01"}, nil, []string{"edited operator"}, false},
4747
{createEditOperatorCmd(), []string{"edit", "operator", "--require-signing-keys"}, nil, []string{"needs to be issued with a signing key first"}, true},
4848
}
4949

@@ -420,29 +420,3 @@ func Test_CannotSetRequireSKWithoutSK(t *testing.T) {
420420
require.False(t, oc.StrictSigningKeyUsage)
421421
require.Empty(t, oc.SigningKeys)
422422
}
423-
424-
func TestEditOperatorStrictTags(t *testing.T) {
425-
ts := NewTestStore(t, "O")
426-
defer ts.Done(t)
427-
428-
_, _, err := ExecuteCmd(createEditOperatorCmd(), "--tag", "A")
429-
require.Error(t, err)
430-
431-
_, _, err = ExecuteCmd(createEditOperatorCmd(), "--tag", "a")
432-
require.NoError(t, err)
433-
434-
_, _, err = ExecuteCmd(createEditOperatorCmd(), "--rm-tag", "A")
435-
require.Error(t, err)
436-
require.Contains(t, err.Error(), "--rm-tag \"A\" is not lowercased")
437-
438-
_, _, err = ExecuteCmd(createEditOperatorCmd(), "--rm-tag", "A", "--strict-tags")
439-
require.Error(t, err)
440-
require.Contains(t, err.Error(), "unable to remove tag: \"A\" - not found")
441-
442-
_, _, err = ExecuteCmd(createEditOperatorCmd(), "--tag", "A", "--strict-tags")
443-
require.NoError(t, err)
444-
445-
oc, err := ts.Store.ReadOperatorClaim()
446-
require.NoError(t, err)
447-
require.True(t, oc.Tags.Equals(&jwt.TagList{"A", "a"}))
448-
}

cmd/edituser.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ nsc edit user --name <n> --rm-response-perms
7171
return RunAction(cmd, args, &params)
7272
},
7373
}
74-
cmd.Flags().BoolVarP(&params.strictTags, "strict-tags", "", false, "allow tags to be case-sensitive, default false")
7574
cmd.Flags().StringSliceVarP(&params.tags, "tag", "", nil, "add tags for user - comma separated list or option can be specified multiple times")
7675
cmd.Flags().StringSliceVarP(&params.rmTags, "rm-tag", "", nil, "remove tag - comma separated list or option can be specified multiple times")
7776
cmd.Flags().StringVarP(&params.name, "name", "n", "", "user name")

cmd/edituser_test.go

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@
1616
package cmd
1717

1818
import (
19+
"github.com/nats-io/nsc/v2/cmd/store"
1920
"strings"
2021
"testing"
2122
"time"
2223

23-
"github.com/nats-io/nsc/v2/cmd/store"
24-
2524
"github.com/nats-io/nkeys"
2625

2726
cli "github.com/nats-io/cliprompts/v2"
@@ -39,13 +38,12 @@ func Test_EditUser(t *testing.T) {
3938

4039
tests := CmdTests{
4140
{createEditUserCmd(), []string{"edit", "user"}, nil, []string{"specify an edit option"}, true},
42-
{createEditUserCmd(), []string{"edit", "user", "--tag", "A", "--account", "A"}, nil, []string{"--tag \"A\" is not lowercased"}, true},
43-
{createEditUserCmd(), []string{"edit", "user", "--tag", "a", "--account", "A"}, nil, []string{"edited user \"a\""}, false},
41+
{createEditUserCmd(), []string{"edit", "user", "--tag", "A", "--account", "A"}, nil, []string{"edited user \"a\""}, false},
4442
{createEditUserCmd(), []string{"edit", "user", "--conn-type", "MQTT", "--rm-conn-type", "LEAFNODE", "--account", "A"}, nil, []string{"added connection type MQTT", "added connection type MQTT"}, false},
4543
{createEditUserCmd(), []string{"edit", "user", "--conn-type", "LEAFNODE_WS", "--account", "A"}, nil, []string{"added connection type LEAFNODE_WS"}, false},
4644
{createEditUserCmd(), []string{"edit", "user", "--conn-type", "MQTT_WS", "--account", "A"}, nil, []string{"added connection type MQTT_WS"}, false},
47-
{createEditUserCmd(), []string{"edit", "user", "--tag", "b", "--account", "B"}, nil, []string{"user name is required"}, true},
48-
{createEditUserCmd(), []string{"edit", "user", "--tag", "b", "--account", "B", "--name", "bb"}, nil, []string{"edited user \"bb\""}, false},
45+
{createEditUserCmd(), []string{"edit", "user", "--tag", "B", "--account", "B"}, nil, []string{"user name is required"}, true},
46+
{createEditUserCmd(), []string{"edit", "user", "--tag", "B", "--account", "B", "--name", "bb"}, nil, []string{"edited user \"bb\""}, false},
4947
}
5048

5149
tests.Run(t, "root", "edit")
@@ -109,25 +107,25 @@ func Test_EditUser_Tag(t *testing.T) {
109107
defer ts.Done(t)
110108

111109
ts.AddUser(t, "A", "a")
112-
_, _, err := ExecuteCmd(createEditUserCmd(), "--tag", "A,B,C", "--strict-tags")
110+
_, _, err := ExecuteCmd(createEditUserCmd(), "--tag", "A,B,C")
113111
require.NoError(t, err)
114112

115113
cc, err := ts.Store.ReadUserClaim("A", "a")
116114
require.NoError(t, err)
117115
require.NotNil(t, cc)
118116

119117
require.Len(t, cc.Tags, 3)
120-
require.ElementsMatch(t, cc.Tags, []string{"A", "B", "C"})
118+
require.ElementsMatch(t, cc.Tags, []string{"a", "b", "c"})
121119

122-
_, _, err = ExecuteCmd(createEditUserCmd(), "--rm-tag", "A,B", "--strict-tags")
120+
_, _, err = ExecuteCmd(createEditUserCmd(), "--rm-tag", "A,B")
123121
require.NoError(t, err)
124122

125123
cc, err = ts.Store.ReadUserClaim("A", "a")
126124
require.NoError(t, err)
127125
require.NotNil(t, cc)
128126

129127
require.Len(t, cc.Tags, 1)
130-
require.ElementsMatch(t, cc.Tags, []string{"C"})
128+
require.ElementsMatch(t, cc.Tags, []string{"c"})
131129

132130
}
133131

@@ -597,29 +595,3 @@ func Test_EditUserConnectionDeleteCase(t *testing.T) {
597595
require.NoError(t, err)
598596
require.Len(t, claim.AllowedConnectionTypes, 0)
599597
}
600-
601-
func TestEditUserStrictTags(t *testing.T) {
602-
ts := NewTestStore(t, "O")
603-
defer ts.Done(t)
604-
605-
ts.AddAccount(t, "A")
606-
ts.AddUser(t, "A", "U")
607-
608-
_, _, err := ExecuteCmd(createEditUserCmd(), "--tag", "a")
609-
require.NoError(t, err)
610-
611-
_, _, err = ExecuteCmd(createEditUserCmd(), "--rm-tag", "A")
612-
require.Error(t, err)
613-
require.Contains(t, err.Error(), "--rm-tag \"A\" is not lowercased")
614-
615-
_, _, err = ExecuteCmd(createEditUserCmd(), "--rm-tag", "A", "--strict-tags")
616-
require.Error(t, err)
617-
require.Contains(t, err.Error(), "unable to remove tag: \"A\" - not found")
618-
619-
_, _, err = ExecuteCmd(createEditUserCmd(), "--tag", "A", "--strict-tags")
620-
require.NoError(t, err)
621-
622-
uc, err := ts.Store.ReadUserClaim("A", "U")
623-
require.NoError(t, err)
624-
require.True(t, uc.Tags.Equals(&jwt.TagList{"A", "a"}))
625-
}

cmd/genericclaimparams.go

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ import (
3030
// GenericClaimsParams - TimeParams and tags
3131
type GenericClaimsParams struct {
3232
TimeParams
33-
tags []string
34-
rmTags []string
35-
strictTags bool
33+
tags []string
34+
rmTags []string
3635
}
3736

3837
func (sp *GenericClaimsParams) Edit(current []string) error {
@@ -101,21 +100,6 @@ func (sp *GenericClaimsParams) Valid() error {
101100
if err := sp.TimeParams.Validate(); err != nil {
102101
return err
103102
}
104-
if !sp.strictTags {
105-
for _, t := range sp.tags {
106-
tt := strings.ToLower(t)
107-
if t != tt {
108-
return fmt.Errorf("--tag %q is not lowercased, specify option --strict-tags to honor non-lowercased values", t)
109-
}
110-
}
111-
for _, t := range sp.rmTags {
112-
tt := strings.ToLower(t)
113-
if t != tt {
114-
return fmt.Errorf("--rm-tag %q is not lowercased, specify option --strict-tags", t)
115-
}
116-
}
117-
}
118-
119103
return nil
120104
}
121105

@@ -161,19 +145,15 @@ func (sp *GenericClaimsParams) Run(ctx ActionCtx, claim jwt.Claims, r *store.Rep
161145
}
162146

163147
tags.Add(sp.tags...)
164-
if err := tags.Remove(sp.rmTags...); err != nil {
165-
return err
166-
}
148+
tags.Remove(sp.rmTags...)
167149
sort.Strings(*tags)
168150

169151
if r != nil {
170152
for _, t := range sp.tags {
171-
t = strings.TrimSpace(t)
172-
r.AddOK("added tag %q", t)
153+
r.AddOK("added tag %q", strings.ToLower(t))
173154
}
174155
for _, t := range sp.rmTags {
175-
t = strings.TrimSpace(t)
176-
r.AddOK("removed tag %q", t)
156+
r.AddOK("removed tag %q", strings.ToLower(t))
177157
}
178158
}
179159
return nil

cmd/push_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func Test_SyncOK(t *testing.T) {
4040
ts.AddAccount(t, "A")
4141

4242
// edit the jwt
43-
_, _, err = ExecuteCmd(createEditAccount(), "--tag", "A", "--strict-tags")
43+
_, _, err = ExecuteCmd(createEditAccount(), "--tag", "A")
4444
require.NoError(t, err)
4545

4646
// sync the store
@@ -50,8 +50,7 @@ func Test_SyncOK(t *testing.T) {
5050
// verify the tag was stored
5151
ac, err := ts.Store.ReadAccountClaim("A")
5252
require.NoError(t, err)
53-
require.Contains(t, ac.Tags, "A")
54-
require.True(t, ac.Tags.Contains("A"))
53+
require.Contains(t, ac.Tags, "a")
5554
}
5655

5756
func Test_SyncNoURL(t *testing.T) {
@@ -121,7 +120,7 @@ func Test_SyncManualServer(t *testing.T) {
121120
ts.AddAccount(t, "A")
122121

123122
// edit the jwt
124-
_, _, err = ExecuteCmd(createEditAccount(), "--tag", "a")
123+
_, _, err = ExecuteCmd(createEditAccount(), "--tag", "A")
125124
require.NoError(t, err)
126125

127126
// sync the store

go.mod

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module github.com/nats-io/nsc/v2
22

3-
go 1.21
3+
go 1.22
4+
5+
toolchain go1.22.5
46

57
require (
68
github.com/blang/semver v3.5.1+incompatible
@@ -9,7 +11,7 @@ require (
911
github.com/mitchellh/go-homedir v1.1.0
1012
github.com/nats-io/cliprompts/v2 v2.0.0-20231014115920-801ca035562a
1113
github.com/nats-io/jsm.go v0.1.2
12-
github.com/nats-io/jwt/v2 v2.7.0
14+
github.com/nats-io/jwt/v2 v2.7.2
1315
github.com/nats-io/nats-server/v2 v2.10.18
1416
github.com/nats-io/nats.go v1.37.0
1517
github.com/nats-io/nkeys v0.4.7
@@ -19,12 +21,12 @@ require (
1921
github.com/spf13/pflag v1.0.5
2022
github.com/stretchr/testify v1.9.0
2123
github.com/xlab/tablewriter v0.0.0-20160610135559-80b567a11ad5
22-
golang.org/x/text v0.18.0
24+
golang.org/x/text v0.19.0
2325
)
2426

2527
require (
2628
github.com/AlecAivazis/survey/v2 v2.3.7 // indirect
27-
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
29+
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
2830
github.com/davecgh/go-spew v1.1.1 // indirect
2931
github.com/fatih/color v1.17.0 // indirect
3032
github.com/google/go-github/v30 v30.1.0 // indirect
@@ -43,11 +45,11 @@ require (
4345
github.com/russross/blackfriday/v2 v2.1.0 // indirect
4446
github.com/tcnksm/go-gitconfig v0.1.2 // indirect
4547
github.com/ulikunitz/xz v0.5.12 // indirect
46-
golang.org/x/crypto v0.27.0 // indirect
48+
golang.org/x/crypto v0.28.0 // indirect
4749
golang.org/x/net v0.29.0 // indirect
4850
golang.org/x/oauth2 v0.23.0 // indirect
49-
golang.org/x/sys v0.25.0 // indirect
50-
golang.org/x/term v0.24.0 // indirect
51+
golang.org/x/sys v0.26.0 // indirect
52+
golang.org/x/term v0.25.0 // indirect
5153
golang.org/x/time v0.5.0 // indirect
5254
gopkg.in/yaml.v2 v2.4.0 // indirect
5355
gopkg.in/yaml.v3 v3.0.1 // indirect

0 commit comments

Comments
 (0)