Skip to content

Commit 05a393c

Browse files
authored
feat: only display license warnings to privileged users (#10096)
1 parent 7e6b549 commit 05a393c

File tree

3 files changed

+61
-2
lines changed

3 files changed

+61
-2
lines changed

cli/root.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -836,10 +836,18 @@ func (r *RootCmd) checkWarnings(i *clibase.Invocation, client *codersdk.Client)
836836
ctx, cancel := context.WithTimeout(i.Context(), 10*time.Second)
837837
defer cancel()
838838

839+
user, err := client.User(ctx, codersdk.Me)
840+
if err != nil {
841+
return xerrors.Errorf("get user me: %w", err)
842+
}
843+
839844
entitlements, err := client.Entitlements(ctx)
840845
if err == nil {
841-
for _, w := range entitlements.Warnings {
842-
_, _ = fmt.Fprintln(i.Stderr, pretty.Sprint(cliui.DefaultStyles.Warn, w))
846+
// Don't show warning to regular users.
847+
if len(user.Roles) > 0 {
848+
for _, w := range entitlements.Warnings {
849+
_, _ = fmt.Fprintln(i.Stderr, pretty.Sprint(cliui.DefaultStyles.Warn, w))
850+
}
843851
}
844852
}
845853
return nil

enterprise/cli/licenses_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ func newFakeLicenseAPI(t *testing.T) http.Handler {
254254
r.Post("/api/v2/licenses", a.postLicense)
255255
r.Get("/api/v2/licenses", a.licenses)
256256
r.Get("/api/v2/buildinfo", a.noop)
257+
r.Get("/api/v2/users/me", a.noop)
257258
r.Delete("/api/v2/licenses/{id}", a.deleteLicense)
258259
r.Get("/api/v2/entitlements", a.entitlements)
259260
return r

enterprise/cli/root_test.go

+50
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package cli_test
22

33
import (
4+
"bytes"
45
"testing"
6+
"time"
57

68
"github.com/stretchr/testify/require"
79

810
"github.com/coder/coder/v2/cli/clibase"
911
"github.com/coder/coder/v2/cli/clitest"
1012
"github.com/coder/coder/v2/cli/config"
13+
"github.com/coder/coder/v2/coderd/coderdtest"
1114
"github.com/coder/coder/v2/enterprise/cli"
15+
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
1216
)
1317

1418
func newCLI(t *testing.T, args ...string) (*clibase.Invocation, config.Root) {
@@ -27,3 +31,49 @@ func TestEnterpriseHandlersOK(t *testing.T) {
2731

2832
clitest.HandlersOK(t, cmd)
2933
}
34+
35+
func TestCheckWarnings(t *testing.T) {
36+
t.Parallel()
37+
38+
t.Run("LicenseWarningForPrivilegedRoles", func(t *testing.T) {
39+
t.Parallel()
40+
client, _ := coderdenttest.New(t, &coderdenttest.Options{
41+
LicenseOptions: &coderdenttest.LicenseOptions{
42+
ExpiresAt: time.Now().Add(time.Hour * 24),
43+
},
44+
})
45+
46+
inv, conf := newCLI(t, "list")
47+
48+
var buf bytes.Buffer
49+
inv.Stderr = &buf
50+
clitest.SetupConfig(t, client, conf)
51+
52+
err := inv.Run()
53+
require.NoError(t, err)
54+
55+
require.Contains(t, buf.String(), "Your license expires in 1 day.")
56+
})
57+
58+
t.Run("NoLicenseWarningForRegularUser", func(t *testing.T) {
59+
t.Parallel()
60+
adminClient, admin := coderdenttest.New(t, &coderdenttest.Options{
61+
LicenseOptions: &coderdenttest.LicenseOptions{
62+
ExpiresAt: time.Now().Add(time.Hour * 24),
63+
},
64+
})
65+
66+
client, _ := coderdtest.CreateAnotherUser(t, adminClient, admin.OrganizationID)
67+
68+
inv, conf := newCLI(t, "list")
69+
70+
var buf bytes.Buffer
71+
inv.Stderr = &buf
72+
clitest.SetupConfig(t, client, conf)
73+
74+
err := inv.Run()
75+
require.NoError(t, err)
76+
77+
require.NotContains(t, buf.String(), "Your license expires")
78+
})
79+
}

0 commit comments

Comments
 (0)