Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita7c63df

Browse files
committed
Refactor keycache to improve error handling
- Use `cryptokeys.ErrKeyNotFound` for missing keys- Use `cryptokeys.ErrKeyInvalid` for invalid keys- Replace `xerrors` for streamlined error codes
1 parenta30b3c6 commita7c63df

File tree

2 files changed

+51
-16
lines changed

2 files changed

+51
-16
lines changed

‎enterprise/wsproxy/keycache.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (k *CryptoKeyCache) Signing(ctx context.Context) (codersdk.CryptoKey, error
6464
latest:=k.latest
6565
k.keysMu.RUnlock()
6666

67-
now:=k.Clock.Now().UTC()
67+
now:=k.Clock.Now()
6868
iflatest.CanSign(now) {
6969
returnlatest,nil
7070
}
@@ -87,14 +87,14 @@ func (k *CryptoKeyCache) Signing(ctx context.Context) (codersdk.CryptoKey, error
8787
}
8888

8989
if!k.latest.CanSign(now) {
90-
return codersdk.CryptoKey{},xerrors.Errorf("no active keys found")
90+
return codersdk.CryptoKey{},cryptokeys.ErrKeyNotFound
9191
}
9292

9393
returnk.latest,nil
9494
}
9595

9696
func (k*CryptoKeyCache)Verifying(ctx context.Context,sequenceint32) (codersdk.CryptoKey,error) {
97-
now:=k.Clock.Now().UTC()
97+
now:=k.Clock.Now()
9898
k.keysMu.RLock()
9999
ifk.closed {
100100
k.keysMu.RUnlock()
@@ -127,7 +127,7 @@ func (k *CryptoKeyCache) Verifying(ctx context.Context, sequence int32) (codersd
127127

128128
key,ok=k.keys[sequence]
129129
if!ok {
130-
return codersdk.CryptoKey{},xerrors.Errorf("key %d not found",sequence)
130+
return codersdk.CryptoKey{},cryptokeys.ErrKeyNotFound
131131
}
132132

133133
returnvalidKey(key,now)
@@ -155,7 +155,7 @@ func (k *CryptoKeyCache) fetch(ctx context.Context) (map[int32]codersdk.CryptoKe
155155
returnnil, codersdk.CryptoKey{},xerrors.Errorf("get security keys: %w",err)
156156
}
157157

158-
kmap,latest:=toKeyMap(keys.CryptoKeys,k.Clock.Now().UTC())
158+
kmap,latest:=toKeyMap(keys.CryptoKeys,k.Clock.Now())
159159
returnkmap,latest,nil
160160
}
161161

@@ -172,8 +172,8 @@ func toKeyMap(keys []codersdk.CryptoKey, now time.Time) (map[int32]codersdk.Cryp
172172
}
173173

174174
funcvalidKey(key codersdk.CryptoKey,now time.Time) (codersdk.CryptoKey,error) {
175-
if!key.CanSign(now) {
176-
return codersdk.CryptoKey{},xerrors.Errorf("key %d is invalid",key.Sequence)
175+
if!key.CanVerify(now) {
176+
return codersdk.CryptoKey{},cryptokeys.ErrKeyInvalid
177177
}
178178

179179
returnkey,nil

‎enterprise/wsproxy/keycache_test.go

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
funcTestCryptoKeyCache(t*testing.T) {
2424
t.Parallel()
2525

26-
t.Run("Latest",func(t*testing.T) {
26+
t.Run("Signing",func(t*testing.T) {
2727
t.Parallel()
2828

2929
t.Run("HitsCache",func(t*testing.T) {
@@ -138,9 +138,27 @@ func TestCryptoKeyCache(t *testing.T) {
138138
require.Equal(t,expected,got)
139139
require.Equal(t,1,fc.called)
140140
})
141+
142+
t.Run("KeyNotFound",func(t*testing.T) {
143+
t.Parallel()
144+
145+
var (
146+
ctx=testutil.Context(t,testutil.WaitShort)
147+
logger=slogtest.Make(t,nil)
148+
clock=quartz.NewMock(t)
149+
)
150+
151+
fc:=newFakeCoderd(t, []codersdk.CryptoKey{})
152+
153+
cache,err:=wsproxy.NewCryptoKeyCache(ctx,logger,wsproxysdk.New(fc.url),withClock(clock))
154+
require.NoError(t,err)
155+
156+
_,err=cache.Verifying(ctx,1)
157+
require.ErrorIs(t,err,cryptokeys.ErrKeyNotFound)
158+
})
141159
})
142160

143-
t.Run("Version",func(t*testing.T) {
161+
t.Run("Verifying",func(t*testing.T) {
144162
t.Parallel()
145163

146164
t.Run("HitsCache",func(t*testing.T) {
@@ -241,7 +259,7 @@ func TestCryptoKeyCache(t *testing.T) {
241259
require.Equal(t,1,fc.called)
242260
})
243261

244-
t.Run("NoInvalid",func(t*testing.T) {
262+
t.Run("KeyInvalid",func(t*testing.T) {
245263
t.Parallel()
246264

247265
var (
@@ -267,9 +285,27 @@ func TestCryptoKeyCache(t *testing.T) {
267285
require.NoError(t,err)
268286

269287
_,err=cache.Verifying(ctx,expected.Sequence)
270-
require.Error(t,err)
288+
require.ErrorIs(t,err,cryptokeys.ErrKeyInvalid)
271289
require.Equal(t,1,fc.called)
272290
})
291+
292+
t.Run("KeyNotFound",func(t*testing.T) {
293+
t.Parallel()
294+
295+
var (
296+
ctx=testutil.Context(t,testutil.WaitShort)
297+
logger=slogtest.Make(t,nil)
298+
clock=quartz.NewMock(t)
299+
)
300+
301+
fc:=newFakeCoderd(t, []codersdk.CryptoKey{})
302+
303+
cache,err:=wsproxy.NewCryptoKeyCache(ctx,logger,wsproxysdk.New(fc.url),withClock(clock))
304+
require.NoError(t,err)
305+
306+
_,err=cache.Verifying(ctx,1)
307+
require.ErrorIs(t,err,cryptokeys.ErrKeyNotFound)
308+
})
273309
})
274310

275311
t.Run("CacheRefreshes",func(t*testing.T) {
@@ -342,11 +378,10 @@ func TestCryptoKeyCache(t *testing.T) {
342378

343379
now:=clock.Now()
344380
expected:= codersdk.CryptoKey{
345-
Feature:codersdk.CryptoKeyFeatureWorkspaceApp,
346-
Secret:"key1",
347-
Sequence:12,
348-
StartsAt:now,
349-
DeletesAt:now.Add(time.Minute*10),
381+
Feature:codersdk.CryptoKeyFeatureWorkspaceApp,
382+
Secret:"key1",
383+
Sequence:12,
384+
StartsAt:now,
350385
}
351386
fc:=newFakeCoderd(t, []codersdk.CryptoKey{
352387
expected,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp