MCPcopy Index your code
hub / github.com/coder/coder / TestRotator

Function TestRotator

coderd/cryptokeys/rotate_test.go:17–107  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

15)
16
17func TestRotator(t *testing.T) {
18 t.Parallel()
19
20 t.Run("NoKeysOnInit", func(t *testing.T) {
21 t.Parallel()
22
23 var (
24 db, _ = dbtestutil.NewDB(t)
25 clock = quartz.NewMock(t)
26 logger = testutil.Logger(t)
27 ctx = testutil.Context(t, testutil.WaitShort)
28 )
29
30 dbkeys, err := db.GetCryptoKeys(ctx)
31 require.NoError(t, err)
32 require.Len(t, dbkeys, 0)
33
34 cryptokeys.StartRotator(ctx, logger, db, cryptokeys.WithClock(clock))
35
36 // Fetch the keys from the database and ensure they
37 // are as expected.
38 dbkeys, err = db.GetCryptoKeys(ctx)
39 require.NoError(t, err)
40 require.Len(t, dbkeys, len(database.AllCryptoKeyFeatureValues()))
41 requireContainsAllFeatures(t, dbkeys)
42 })
43
44 t.Run("RotateKeys", func(t *testing.T) {
45 t.Parallel()
46
47 var (
48 db, _ = dbtestutil.NewDB(t)
49 clock = quartz.NewMock(t)
50 logger = testutil.Logger(t)
51 ctx = testutil.Context(t, testutil.WaitShort)
52 )
53
54 now := clock.Now().UTC()
55
56 rotatingKey := dbgen.CryptoKey(t, db, database.CryptoKey{
57 Feature: database.CryptoKeyFeatureWorkspaceAppsAPIKey,
58 StartsAt: now.Add(-cryptokeys.DefaultKeyDuration + time.Hour + time.Minute),
59 Sequence: 12345,
60 })
61
62 trap := clock.Trap().TickerFunc()
63 t.Cleanup(trap.Close)
64
65 cryptokeys.StartRotator(ctx, logger, db, cryptokeys.WithClock(clock))
66
67 initialKeyLen := len(database.AllCryptoKeyFeatureValues())
68 // Fetch the keys from the database and ensure they
69 // are as expected.
70 dbkeys, err := db.GetCryptoKeys(ctx)
71 require.NoError(t, err)
72 require.Len(t, dbkeys, initialKeyLen)
73 requireContainsAllFeatures(t, dbkeys)
74

Callers

nothing calls this directly

Calls 15

NewDBFunction · 0.92
LoggerFunction · 0.92
ContextFunction · 0.92
StartRotatorFunction · 0.92
WithClockFunction · 0.92
CryptoKeyFunction · 0.92
RunMethod · 0.65
GetCryptoKeysMethod · 0.65
AddMethod · 0.65
CleanupMethod · 0.65

Tested by

no test coverage detected