Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e51a077

Browse files
committed
fixup! refactor: deduplicate / type license feature code
1 parent 83cd8f4 commit e51a077

21 files changed

+304
-130
lines changed

codersdk/features.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,14 @@ var FeatureNames = []FeatureName{
4646

4747
// Humanize returns the feature name in a human-readable format.
4848
func (n FeatureName) Humanize() string {
49-
return strings.Title(strings.ReplaceAll(string(n), "_", " "))
49+
switch n {
50+
case FeatureTemplateRBAC:
51+
return "Template RBAC"
52+
case FeatureSCIM:
53+
return "SCIM"
54+
default:
55+
return strings.Title(strings.ReplaceAll(string(n), "_", " "))
56+
}
5057
}
5158

5259
// AlwaysEnable returns if the feature is always enabled if entitled.

enterprise/cli/features.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,17 @@ func featuresList() *cobra.Command {
8888
}
8989

9090
type featureRow struct {
91-
Name string `table:"name"`
92-
Entitlement string `table:"entitlement"`
93-
Enabled bool `table:"enabled"`
94-
Limit *int64 `table:"limit"`
95-
Actual *int64 `table:"actual"`
91+
Name codersdk.FeatureName `table:"name"`
92+
Entitlement string `table:"entitlement"`
93+
Enabled bool `table:"enabled"`
94+
Limit *int64 `table:"limit"`
95+
Actual *int64 `table:"actual"`
9696
}
9797

9898
// displayFeatures will return a table displaying all features passed in.
9999
// filterColumns must be a subset of the feature fields and will determine which
100100
// columns to display
101-
func displayFeatures(filterColumns []string, features map[string]codersdk.Feature) (string, error) {
101+
func displayFeatures(filterColumns []string, features map[codersdk.FeatureName]codersdk.Feature) (string, error) {
102102
rows := make([]featureRow, 0, len(features))
103103
for name, feat := range features {
104104
rows = append(rows, featureRow{

enterprise/cli/groupcreate_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import (
99
"github.com/coder/coder/cli/clitest"
1010
"github.com/coder/coder/cli/cliui"
1111
"github.com/coder/coder/coderd/coderdtest"
12+
"github.com/coder/coder/codersdk"
1213
"github.com/coder/coder/enterprise/cli"
1314
"github.com/coder/coder/enterprise/coderd/coderdenttest"
15+
"github.com/coder/coder/enterprise/coderd/license"
1416
"github.com/coder/coder/pty/ptytest"
1517
)
1618

@@ -23,7 +25,9 @@ func TestCreateGroup(t *testing.T) {
2325
client := coderdenttest.New(t, nil)
2426
coderdtest.CreateFirstUser(t, client)
2527
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
26-
TemplateRBAC: true,
28+
Features: license.Features{
29+
codersdk.FeatureTemplateRBAC: 1,
30+
},
2731
})
2832

2933
var (

enterprise/cli/groupdelete_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/coder/coder/codersdk"
1313
"github.com/coder/coder/enterprise/cli"
1414
"github.com/coder/coder/enterprise/coderd/coderdenttest"
15+
"github.com/coder/coder/enterprise/coderd/license"
1516
"github.com/coder/coder/pty/ptytest"
1617
"github.com/coder/coder/testutil"
1718
)
@@ -26,7 +27,9 @@ func TestGroupDelete(t *testing.T) {
2627
admin := coderdtest.CreateFirstUser(t, client)
2728

2829
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
29-
TemplateRBAC: true,
30+
Features: license.Features{
31+
codersdk.FeatureTemplateRBAC: 1,
32+
},
3033
})
3134

3235
ctx, _ := testutil.Context(t)
@@ -57,7 +60,9 @@ func TestGroupDelete(t *testing.T) {
5760
_ = coderdtest.CreateFirstUser(t, client)
5861

5962
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
60-
TemplateRBAC: true,
63+
Features: license.Features{
64+
codersdk.FeatureTemplateRBAC: 1,
65+
},
6166
})
6267

6368
cmd, root := clitest.NewWithSubcommands(t, cli.EnterpriseSubcommands(),

enterprise/cli/groupedit_test.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/coder/coder/codersdk"
1313
"github.com/coder/coder/enterprise/cli"
1414
"github.com/coder/coder/enterprise/coderd/coderdenttest"
15+
"github.com/coder/coder/enterprise/coderd/license"
1516
"github.com/coder/coder/pty/ptytest"
1617
"github.com/coder/coder/testutil"
1718
)
@@ -26,7 +27,9 @@ func TestGroupEdit(t *testing.T) {
2627
admin := coderdtest.CreateFirstUser(t, client)
2728

2829
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
29-
TemplateRBAC: true,
30+
Features: license.Features{
31+
codersdk.FeatureTemplateRBAC: 1,
32+
},
3033
})
3134

3235
ctx, _ := testutil.Context(t)
@@ -77,7 +80,9 @@ func TestGroupEdit(t *testing.T) {
7780
admin := coderdtest.CreateFirstUser(t, client)
7881

7982
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
80-
TemplateRBAC: true,
83+
Features: license.Features{
84+
codersdk.FeatureTemplateRBAC: 1,
85+
},
8186
})
8287

8388
ctx, _ := testutil.Context(t)
@@ -106,7 +111,9 @@ func TestGroupEdit(t *testing.T) {
106111
_ = coderdtest.CreateFirstUser(t, client)
107112

108113
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
109-
TemplateRBAC: true,
114+
Features: license.Features{
115+
codersdk.FeatureTemplateRBAC: 1,
116+
},
110117
})
111118

112119
cmd, root := clitest.NewWithSubcommands(t, cli.EnterpriseSubcommands(), "groups", "edit")

enterprise/cli/grouplist_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/coder/coder/codersdk"
1111
"github.com/coder/coder/enterprise/cli"
1212
"github.com/coder/coder/enterprise/coderd/coderdenttest"
13+
"github.com/coder/coder/enterprise/coderd/license"
1314
"github.com/coder/coder/pty/ptytest"
1415
"github.com/coder/coder/testutil"
1516
)
@@ -24,7 +25,9 @@ func TestGroupList(t *testing.T) {
2425
admin := coderdtest.CreateFirstUser(t, client)
2526

2627
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
27-
TemplateRBAC: true,
28+
Features: license.Features{
29+
codersdk.FeatureTemplateRBAC: 1,
30+
},
2831
})
2932

3033
ctx, _ := testutil.Context(t)
@@ -81,7 +84,9 @@ func TestGroupList(t *testing.T) {
8184
_ = coderdtest.CreateFirstUser(t, client)
8285

8386
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
84-
TemplateRBAC: true,
87+
Features: license.Features{
88+
codersdk.FeatureTemplateRBAC: 1,
89+
},
8590
})
8691

8792
cmd, root := clitest.NewWithSubcommands(t, cli.EnterpriseSubcommands(), "groups", "list")

enterprise/cli/licenses_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func (s *fakeLicenseAPI) deleteLicense(rw http.ResponseWriter, r *http.Request)
338338
}
339339

340340
func (*fakeLicenseAPI) entitlements(rw http.ResponseWriter, r *http.Request) {
341-
features := make(map[string]codersdk.Feature)
341+
features := make(map[codersdk.FeatureName]codersdk.Feature)
342342
for _, f := range codersdk.FeatureNames {
343343
features[f] = codersdk.Feature{
344344
Entitlement: codersdk.EntitlementEntitled,

enterprise/coderd/appearance_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/coder/coder/coderd/coderdtest"
1212
"github.com/coder/coder/codersdk"
1313
"github.com/coder/coder/enterprise/coderd/coderdenttest"
14+
"github.com/coder/coder/enterprise/coderd/license"
1415
"github.com/coder/coder/testutil"
1516
)
1617

@@ -30,7 +31,9 @@ func TestServiceBanners(t *testing.T) {
3031
require.False(t, sb.ServiceBanner.Enabled)
3132

3233
coderdenttest.AddLicense(t, adminClient, coderdenttest.LicenseOptions{
33-
ServiceBanners: true,
34+
Features: license.Features{
35+
codersdk.FeatureAppearance: 1,
36+
},
3437
})
3538

3639
// Default state

enterprise/coderd/authorize_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/coder/coder/coderd/rbac"
1212
"github.com/coder/coder/codersdk"
1313
"github.com/coder/coder/enterprise/coderd/coderdenttest"
14+
"github.com/coder/coder/enterprise/coderd/license"
1415
"github.com/coder/coder/testutil"
1516
)
1617

@@ -28,7 +29,9 @@ func TestCheckACLPermissions(t *testing.T) {
2829
// Create adminClient, member, and org adminClient
2930
adminUser := coderdtest.CreateFirstUser(t, adminClient)
3031
_ = coderdenttest.AddLicense(t, adminClient, coderdenttest.LicenseOptions{
31-
TemplateRBAC: true,
32+
Features: license.Features{
33+
codersdk.FeatureTemplateRBAC: 1,
34+
},
3235
})
3336

3437
memberClient := coderdtest.CreateAnotherUser(t, adminClient, adminUser.OrganizationID)

enterprise/coderd/coderd_test.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/coder/coder/enterprise/audit"
1818
"github.com/coder/coder/enterprise/coderd"
1919
"github.com/coder/coder/enterprise/coderd/coderdenttest"
20+
"github.com/coder/coder/enterprise/coderd/license"
2021
"github.com/coder/coder/testutil"
2122
)
2223

@@ -41,10 +42,12 @@ func TestEntitlements(t *testing.T) {
4142
})
4243
_ = coderdtest.CreateFirstUser(t, client)
4344
coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
44-
UserLimit: 100,
45-
AuditLog: true,
46-
TemplateRBAC: true,
47-
ExternalProvisionerDaemons: true,
45+
Features: license.Features{
46+
codersdk.FeatureUserLimit: 100,
47+
codersdk.FeatureAuditLog: 1,
48+
codersdk.FeatureTemplateRBAC: 1,
49+
codersdk.FeatureExternalProvisionerDaemons: 1,
50+
},
4851
})
4952
res, err := client.Entitlements(context.Background())
5053
require.NoError(t, err)
@@ -68,8 +71,10 @@ func TestEntitlements(t *testing.T) {
6871
})
6972
_ = coderdtest.CreateFirstUser(t, client)
7073
license := coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
71-
UserLimit: 100,
72-
AuditLog: true,
74+
Features: license.Features{
75+
codersdk.FeatureUserLimit: 100,
76+
codersdk.FeatureAuditLog: 1,
77+
},
7378
})
7479
res, err := client.Entitlements(context.Background())
7580
require.NoError(t, err)
@@ -99,7 +104,9 @@ func TestEntitlements(t *testing.T) {
99104
UploadedAt: database.Now(),
100105
Exp: database.Now().AddDate(1, 0, 0),
101106
JWT: coderdenttest.GenerateLicense(t, coderdenttest.LicenseOptions{
102-
AuditLog: true,
107+
Features: license.Features{
108+
codersdk.FeatureAuditLog: 1,
109+
},
103110
}),
104111
})
105112
require.NoError(t, err)
@@ -125,7 +132,9 @@ func TestEntitlements(t *testing.T) {
125132
UploadedAt: database.Now(),
126133
Exp: database.Now().AddDate(1, 0, 0),
127134
JWT: coderdenttest.GenerateLicense(t, coderdenttest.LicenseOptions{
128-
AuditLog: true,
135+
Features: license.Features{
136+
codersdk.FeatureAuditLog: 1,
137+
},
129138
}),
130139
})
131140
require.NoError(t, err)
@@ -165,7 +174,9 @@ func TestAuditLogging(t *testing.T) {
165174
})
166175
coderdtest.CreateFirstUser(t, client)
167176
coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
168-
AuditLog: true,
177+
Features: license.Features{
178+
codersdk.FeatureAuditLog: 1,
179+
},
169180
})
170181
auditor := *api.AGPL.Auditor.Load()
171182
ea := audit.NewAuditor(audit.DefaultFilter)

enterprise/coderd/coderdenttest/coderdenttest_test.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/coder/coder/coderd/rbac"
1313
"github.com/coder/coder/codersdk"
1414
"github.com/coder/coder/enterprise/coderd/coderdenttest"
15+
"github.com/coder/coder/enterprise/coderd/license"
1516
"github.com/coder/coder/testutil"
1617
)
1718

@@ -32,9 +33,11 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
3233
})
3334
ctx, _ := testutil.Context(t)
3435
admin := coderdtest.CreateFirstUser(t, client)
35-
license := coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
36-
TemplateRBAC: true,
37-
ExternalProvisionerDaemons: true,
36+
lic := coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
37+
Features: license.Features{
38+
codersdk.FeatureTemplateRBAC: 1,
39+
codersdk.FeatureExternalProvisionerDaemons: 1,
40+
},
3841
})
3942
group, err := client.CreateGroup(ctx, admin.OrganizationID, codersdk.CreateGroupRequest{
4043
Name: "testgroup",
@@ -43,7 +46,7 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
4346

4447
groupObj := rbac.ResourceGroup.InOrg(admin.OrganizationID)
4548
a := coderdtest.NewAuthTester(ctx, t, client, api.AGPL, admin)
46-
a.URLParams["licenses/{id}"] = fmt.Sprintf("licenses/%d", license.ID)
49+
a.URLParams["licenses/{id}"] = fmt.Sprintf("licenses/%d", lic.ID)
4750
a.URLParams["groups/{group}"] = fmt.Sprintf("groups/%s", group.ID.String())
4851
a.URLParams["{groupName}"] = group.Name
4952

0 commit comments

Comments
 (0)