Skip to content

Commit 7070c14

Browse files
committed
Use GraceAt
1 parent ba7c486 commit 7070c14

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

enterprise/coderd/license/license.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"crypto/ed25519"
66
"fmt"
7+
"math"
78
"time"
89

910
"github.com/golang-jwt/jwt/v4"
@@ -71,10 +72,14 @@ func Entitlements(
7172
entitlement = codersdk.EntitlementGracePeriod
7273
}
7374

74-
// add warning if license is expiring soon
75-
if claims.LicenseExpires.Time.Sub(now) < 30*24*time.Hour {
76-
entitlements.Warnings = append(entitlements.Warnings, fmt.Sprintf(
77-
"Your license expires in %d days.", int(claims.LicenseExpires.Time.Sub(now).Hours()/24)))
75+
// Add warning if license is expiring soon
76+
daysToExpire := int(math.Ceil(claims.LicenseExpires.Sub(now).Hours() / 24))
77+
if daysToExpire > 0 && daysToExpire < 30 {
78+
day := "day"
79+
if daysToExpire > 1 {
80+
day = "days"
81+
}
82+
entitlements.Warnings = append(entitlements.Warnings, fmt.Sprintf("Your license expires in %d %s.", daysToExpire, day))
7883
}
7984

8085
for featureName, featureValue := range claims.Features {

enterprise/coderd/license/license_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ func TestEntitlements(t *testing.T) {
112112
codersdk.FeatureAuditLog: 1,
113113
},
114114

115-
GraceAt: time.Now().Add(-time.Hour),
116-
ExpiresAt: time.Now().AddDate(0, 0, 2),
115+
GraceAt: time.Now().AddDate(0, 0, 2),
116+
ExpiresAt: time.Now().AddDate(0, 0, 5),
117117
}),
118-
Exp: time.Now().Add(time.Hour),
118+
Exp: time.Now().AddDate(0, 0, 5),
119119
})
120120

121121
entitlements, err := license.Entitlements(context.Background(), db, slog.Logger{}, 1, 1, coderdenttest.Keys, all)
@@ -124,7 +124,7 @@ func TestEntitlements(t *testing.T) {
124124
require.True(t, entitlements.HasLicense)
125125
require.False(t, entitlements.Trial)
126126

127-
require.Equal(t, codersdk.EntitlementGracePeriod, entitlements.Features[codersdk.FeatureAuditLog].Entitlement)
127+
require.Equal(t, codersdk.EntitlementEntitled, entitlements.Features[codersdk.FeatureAuditLog].Entitlement)
128128
require.Contains(
129129
t, entitlements.Warnings,
130130
"Your license expires in 2 days.",
@@ -192,16 +192,18 @@ func TestEntitlements(t *testing.T) {
192192
Features: license.Features{
193193
codersdk.FeatureUserLimit: 10,
194194
},
195+
GraceAt: time.Now().Add(59 * 24 * time.Hour),
195196
}),
196-
Exp: time.Now().Add(time.Hour),
197+
Exp: time.Now().Add(60 * 24 * time.Hour),
197198
})
198199
db.InsertLicense(context.Background(), database.InsertLicenseParams{
199200
JWT: coderdenttest.GenerateLicense(t, coderdenttest.LicenseOptions{
200201
Features: license.Features{
201202
codersdk.FeatureUserLimit: 1,
202203
},
204+
GraceAt: time.Now().Add(59 * 24 * time.Hour),
203205
}),
204-
Exp: time.Now().Add(time.Hour),
206+
Exp: time.Now().Add(60 * 24 * time.Hour),
205207
})
206208
entitlements, err := license.Entitlements(context.Background(), db, slog.Logger{}, 1, 1, coderdenttest.Keys, empty)
207209
require.NoError(t, err)

0 commit comments

Comments
 (0)