diff --git a/enterprise/coderd/coderd.go b/enterprise/coderd/coderd.go index 34b7ccf0d7026..96e25a256ed81 100644 --- a/enterprise/coderd/coderd.go +++ b/enterprise/coderd/coderd.go @@ -267,27 +267,45 @@ func (api *API) serveEntitlements(rw http.ResponseWriter, r *http.Request) { Entitlement: entitlements.auditLogs, Enabled: api.AuditLogging, } - if entitlements.auditLogs == codersdk.EntitlementGracePeriod && api.AuditLogging { - resp.Warnings = append(resp.Warnings, - "Audit logging is enabled but your license for this feature is expired.") + if api.AuditLogging { + if entitlements.auditLogs == codersdk.EntitlementNotEntitled { + resp.Warnings = append(resp.Warnings, + "Audit logging is enabled but your license is not entitled to this feature.") + } + if entitlements.auditLogs == codersdk.EntitlementGracePeriod { + resp.Warnings = append(resp.Warnings, + "Audit logging is enabled but your license for this feature is expired.") + } } resp.Features[codersdk.FeatureBrowserOnly] = codersdk.Feature{ Entitlement: entitlements.browserOnly, Enabled: api.BrowserOnly, } - if entitlements.browserOnly == codersdk.EntitlementGracePeriod && api.BrowserOnly { - resp.Warnings = append(resp.Warnings, - "Browser only connections are enabled but your license for this feature is expired.") + if api.BrowserOnly { + if entitlements.browserOnly == codersdk.EntitlementNotEntitled { + resp.Warnings = append(resp.Warnings, + "Browser only connections are enabled but your license is not entitled to this feature.") + } + if entitlements.browserOnly == codersdk.EntitlementGracePeriod { + resp.Warnings = append(resp.Warnings, + "Browser only connections are enabled but your license for this feature is expired.") + } } resp.Features[codersdk.FeatureWorkspaceQuota] = codersdk.Feature{ Entitlement: entitlements.workspaceQuota, Enabled: api.UserWorkspaceQuota > 0, } - if entitlements.workspaceQuota == codersdk.EntitlementGracePeriod && api.UserWorkspaceQuota > 0 { - resp.Warnings = append(resp.Warnings, - "Workspace quotas are enabled but your license for this feature is expired.") + if api.UserWorkspaceQuota > 0 { + if entitlements.workspaceQuota == codersdk.EntitlementNotEntitled { + resp.Warnings = append(resp.Warnings, + "Workspace quotas are enabled but your license is not entitled to this feature.") + } + if entitlements.workspaceQuota == codersdk.EntitlementGracePeriod { + resp.Warnings = append(resp.Warnings, + "Workspace quotas are enabled but your license for this feature is expired.") + } } httpapi.Write(ctx, rw, http.StatusOK, resp) diff --git a/enterprise/coderd/coderd_test.go b/enterprise/coderd/coderd_test.go index 4f5d47ec56a23..1dfbb247f4561 100644 --- a/enterprise/coderd/coderd_test.go +++ b/enterprise/coderd/coderd_test.go @@ -36,7 +36,9 @@ func TestEntitlements(t *testing.T) { }) t.Run("FullLicense", func(t *testing.T) { t.Parallel() - client := coderdenttest.New(t, nil) + client := coderdenttest.New(t, &coderdenttest.Options{ + AuditLogging: true, + }) _ = coderdtest.CreateFirstUser(t, client) coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{ UserLimit: 100, @@ -59,7 +61,9 @@ func TestEntitlements(t *testing.T) { }) t.Run("FullLicenseToNone", func(t *testing.T) { t.Parallel() - client := coderdenttest.New(t, nil) + client := coderdenttest.New(t, &coderdenttest.Options{ + AuditLogging: true, + }) _ = coderdtest.CreateFirstUser(t, client) license := coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{ UserLimit: 100, @@ -85,7 +89,8 @@ func TestEntitlements(t *testing.T) { t.Run("Warnings", func(t *testing.T) { t.Parallel() client := coderdenttest.New(t, &coderdenttest.Options{ - BrowserOnly: true, + AuditLogging: true, + BrowserOnly: true, }) first := coderdtest.CreateFirstUser(t, client) for i := 0; i < 4; i++ { @@ -192,7 +197,9 @@ func TestAuditLogging(t *testing.T) { t.Parallel() t.Run("Enabled", func(t *testing.T) { t.Parallel() - client, _, api := coderdenttest.NewWithAPI(t, nil) + client, _, api := coderdenttest.NewWithAPI(t, &coderdenttest.Options{ + AuditLogging: true, + }) coderdtest.CreateFirstUser(t, client) coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{ AuditLog: true, @@ -200,7 +207,7 @@ func TestAuditLogging(t *testing.T) { auditor := *api.AGPL.Auditor.Load() ea := audit.NewAuditor(audit.DefaultFilter) t.Logf("%T = %T", auditor, ea) - assert.Equal(t, reflect.ValueOf(ea).Type(), reflect.ValueOf(auditor).Type()) + assert.EqualValues(t, reflect.ValueOf(ea).Type(), reflect.ValueOf(auditor).Type()) }) t.Run("Disabled", func(t *testing.T) { t.Parallel() diff --git a/enterprise/coderd/coderdenttest/coderdenttest.go b/enterprise/coderd/coderdenttest/coderdenttest.go index 912eb29090f4e..acf3a206ef04d 100644 --- a/enterprise/coderd/coderdenttest/coderdenttest.go +++ b/enterprise/coderd/coderdenttest/coderdenttest.go @@ -36,6 +36,7 @@ func init() { type Options struct { *coderdtest.Options + AuditLogging bool BrowserOnly bool EntitlementsUpdateInterval time.Duration SCIMAPIKey []byte @@ -57,7 +58,7 @@ func NewWithAPI(t *testing.T, options *Options) (*codersdk.Client, io.Closer, *c } srv, cancelFunc, oop := coderdtest.NewOptions(t, options.Options) coderAPI, err := coderd.New(context.Background(), &coderd.Options{ - AuditLogging: true, + AuditLogging: options.AuditLogging, BrowserOnly: options.BrowserOnly, SCIMAPIKey: options.SCIMAPIKey, UserWorkspaceQuota: options.UserWorkspaceQuota,