feat: only display license warnings to privileged users (#10096)

This commit is contained in:
Jon Ayers
2023-10-10 12:48:51 -05:00
committed by GitHub
parent 7e6b549170
commit 05a393cd06
3 changed files with 61 additions and 2 deletions
+10 -2
View File
@@ -836,10 +836,18 @@ func (r *RootCmd) checkWarnings(i *clibase.Invocation, client *codersdk.Client)
ctx, cancel := context.WithTimeout(i.Context(), 10*time.Second)
defer cancel()
user, err := client.User(ctx, codersdk.Me)
if err != nil {
return xerrors.Errorf("get user me: %w", err)
}
entitlements, err := client.Entitlements(ctx)
if err == nil {
for _, w := range entitlements.Warnings {
_, _ = fmt.Fprintln(i.Stderr, pretty.Sprint(cliui.DefaultStyles.Warn, w))
// Don't show warning to regular users.
if len(user.Roles) > 0 {
for _, w := range entitlements.Warnings {
_, _ = fmt.Fprintln(i.Stderr, pretty.Sprint(cliui.DefaultStyles.Warn, w))
}
}
}
return nil
+1
View File
@@ -254,6 +254,7 @@ func newFakeLicenseAPI(t *testing.T) http.Handler {
r.Post("/api/v2/licenses", a.postLicense)
r.Get("/api/v2/licenses", a.licenses)
r.Get("/api/v2/buildinfo", a.noop)
r.Get("/api/v2/users/me", a.noop)
r.Delete("/api/v2/licenses/{id}", a.deleteLicense)
r.Get("/api/v2/entitlements", a.entitlements)
return r
+50
View File
@@ -1,14 +1,18 @@
package cli_test
import (
"bytes"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/cli/clibase"
"github.com/coder/coder/v2/cli/clitest"
"github.com/coder/coder/v2/cli/config"
"github.com/coder/coder/v2/coderd/coderdtest"
"github.com/coder/coder/v2/enterprise/cli"
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
)
func newCLI(t *testing.T, args ...string) (*clibase.Invocation, config.Root) {
@@ -27,3 +31,49 @@ func TestEnterpriseHandlersOK(t *testing.T) {
clitest.HandlersOK(t, cmd)
}
func TestCheckWarnings(t *testing.T) {
t.Parallel()
t.Run("LicenseWarningForPrivilegedRoles", func(t *testing.T) {
t.Parallel()
client, _ := coderdenttest.New(t, &coderdenttest.Options{
LicenseOptions: &coderdenttest.LicenseOptions{
ExpiresAt: time.Now().Add(time.Hour * 24),
},
})
inv, conf := newCLI(t, "list")
var buf bytes.Buffer
inv.Stderr = &buf
clitest.SetupConfig(t, client, conf)
err := inv.Run()
require.NoError(t, err)
require.Contains(t, buf.String(), "Your license expires in 1 day.")
})
t.Run("NoLicenseWarningForRegularUser", func(t *testing.T) {
t.Parallel()
adminClient, admin := coderdenttest.New(t, &coderdenttest.Options{
LicenseOptions: &coderdenttest.LicenseOptions{
ExpiresAt: time.Now().Add(time.Hour * 24),
},
})
client, _ := coderdtest.CreateAnotherUser(t, adminClient, admin.OrganizationID)
inv, conf := newCLI(t, "list")
var buf bytes.Buffer
inv.Stderr = &buf
clitest.SetupConfig(t, client, conf)
err := inv.Run()
require.NoError(t, err)
require.NotContains(t, buf.String(), "Your license expires")
})
}