@@ -13,7 +13,9 @@ import (
1313"github.com/stretchr/testify/assert"
1414"golang.org/x/xerrors"
1515
16+ "github.com/coder/coder/v2/coderd/coderdtest"
1617"github.com/coder/coder/v2/coderd/database/dbtime"
18+ "github.com/coder/coder/v2/coderd/files"
1719"github.com/coder/coder/v2/coderd/notifications"
1820"github.com/coder/coder/v2/coderd/notifications/notificationstest"
1921"github.com/coder/coder/v2/coderd/util/slice"
@@ -53,7 +55,8 @@ func TestNoReconciliationActionsIfNoPresets(t *testing.T) {
5355ReconciliationInterval :serpent .Duration (testutil .WaitLong ),
5456}
5557logger := testutil .Logger (t )
56- controller := prebuilds .NewStoreReconciler (db ,ps ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
58+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
59+ controller := prebuilds .NewStoreReconciler (db ,ps ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
5760
5861// given a template version with no presets
5962org := dbgen .Organization (t ,db , database.Organization {})
@@ -98,7 +101,8 @@ func TestNoReconciliationActionsIfNoPrebuilds(t *testing.T) {
98101ReconciliationInterval :serpent .Duration (testutil .WaitLong ),
99102}
100103logger := testutil .Logger (t )
101- controller := prebuilds .NewStoreReconciler (db ,ps ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
104+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
105+ controller := prebuilds .NewStoreReconciler (db ,ps ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
102106
103107// given there are presets, but no prebuilds
104108org := dbgen .Organization (t ,db , database.Organization {})
@@ -375,7 +379,8 @@ func TestPrebuildReconciliation(t *testing.T) {
375379if useBrokenPubsub {
376380pubSub = & brokenPublisher {Pubsub :pubSub }
377381}
378- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
382+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
383+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
379384
380385// Run the reconciliation multiple times to ensure idempotency
381386// 8 was arbitrary, but large enough to reasonably trust the result
@@ -452,7 +457,8 @@ func TestMultiplePresetsPerTemplateVersion(t *testing.T) {
452457t ,& slogtest.Options {IgnoreErrors :true },
453458).Leveled (slog .LevelDebug )
454459db ,pubSub := dbtestutil .NewDB (t )
455- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
460+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
461+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
456462
457463ownerID := uuid .New ()
458464dbgen .User (t ,db , database.User {
@@ -577,7 +583,8 @@ func TestPrebuildScheduling(t *testing.T) {
577583t ,& slogtest.Options {IgnoreErrors :true },
578584).Leveled (slog .LevelDebug )
579585db ,pubSub := dbtestutil .NewDB (t )
580- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
586+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
587+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
581588
582589ownerID := uuid .New ()
583590dbgen .User (t ,db , database.User {
@@ -681,7 +688,8 @@ func TestInvalidPreset(t *testing.T) {
681688t ,& slogtest.Options {IgnoreErrors :true },
682689).Leveled (slog .LevelDebug )
683690db ,pubSub := dbtestutil .NewDB (t )
684- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
691+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
692+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
685693
686694ownerID := uuid .New ()
687695dbgen .User (t ,db , database.User {
@@ -745,7 +753,8 @@ func TestDeletionOfPrebuiltWorkspaceWithInvalidPreset(t *testing.T) {
745753t ,& slogtest.Options {IgnoreErrors :true },
746754).Leveled (slog .LevelDebug )
747755db ,pubSub := dbtestutil .NewDB (t )
748- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
756+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
757+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,quartz .NewMock (t ),prometheus .NewRegistry (),newNoopEnqueuer ())
749758
750759ownerID := uuid .New ()
751760dbgen .User (t ,db , database.User {
@@ -841,7 +850,8 @@ func TestSkippingHardLimitedPresets(t *testing.T) {
841850db ,pubSub := dbtestutil .NewDB (t )
842851fakeEnqueuer := newFakeEnqueuer ()
843852registry := prometheus .NewRegistry ()
844- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
853+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
854+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
845855
846856// Template admin to receive a notification.
847857templateAdmin := dbgen .User (t ,db , database.User {
@@ -1003,7 +1013,8 @@ func TestHardLimitedPresetShouldNotBlockDeletion(t *testing.T) {
10031013db ,pubSub := dbtestutil .NewDB (t )
10041014fakeEnqueuer := newFakeEnqueuer ()
10051015registry := prometheus .NewRegistry ()
1006- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
1016+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1017+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
10071018
10081019// Template admin to receive a notification.
10091020templateAdmin := dbgen .User (t ,db , database.User {
@@ -1215,7 +1226,8 @@ func TestRunLoop(t *testing.T) {
12151226t ,& slogtest.Options {IgnoreErrors :true },
12161227).Leveled (slog .LevelDebug )
12171228db ,pubSub := dbtestutil .NewDB (t )
1218- reconciler := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
1229+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1230+ reconciler := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
12191231
12201232ownerID := uuid .New ()
12211233dbgen .User (t ,db , database.User {
@@ -1345,7 +1357,8 @@ func TestFailedBuildBackoff(t *testing.T) {
13451357t ,& slogtest.Options {IgnoreErrors :true },
13461358).Leveled (slog .LevelDebug )
13471359db ,ps := dbtestutil .NewDB (t )
1348- reconciler := prebuilds .NewStoreReconciler (db ,ps ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
1360+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
1361+ reconciler := prebuilds .NewStoreReconciler (db ,ps ,cache ,cfg ,logger ,clock ,prometheus .NewRegistry (),newNoopEnqueuer ())
13491362
13501363// Given: an active template version with presets and prebuilds configured.
13511364const desiredInstances = 2
@@ -1461,9 +1474,11 @@ func TestReconciliationLock(t *testing.T) {
14611474wg .Add (1 )
14621475go func () {
14631476defer wg .Done ()
1477+ cache := files .NewFromStore (db ,prometheus .NewRegistry (),& coderdtest.FakeAuthorizer {})
14641478reconciler := prebuilds .NewStoreReconciler (
14651479db ,
14661480ps ,
1481+ cache ,
14671482codersdk.PrebuildsConfig {},
14681483slogtest .Make (t ,& slogtest.Options {IgnoreErrors :true }).Leveled (slog .LevelDebug ),
14691484quartz .NewMock (t ),
@@ -1501,7 +1516,8 @@ func TestTrackResourceReplacement(t *testing.T) {
15011516
15021517fakeEnqueuer := newFakeEnqueuer ()
15031518registry := prometheus .NewRegistry ()
1504- reconciler := prebuilds .NewStoreReconciler (db ,ps , codersdk.PrebuildsConfig {},logger ,clock ,registry ,fakeEnqueuer )
1519+ cache := files .NewFromStore (db ,registry ,& coderdtest.FakeAuthorizer {})
1520+ reconciler := prebuilds .NewStoreReconciler (db ,ps ,cache , codersdk.PrebuildsConfig {},logger ,clock ,registry ,fakeEnqueuer )
15051521
15061522// Given: a template admin to receive a notification.
15071523templateAdmin := dbgen .User (t ,db , database.User {
@@ -1656,7 +1672,8 @@ func TestExpiredPrebuildsMultipleActions(t *testing.T) {
16561672db ,pubSub := dbtestutil .NewDB (t )
16571673fakeEnqueuer := newFakeEnqueuer ()
16581674registry := prometheus .NewRegistry ()
1659- controller := prebuilds .NewStoreReconciler (db ,pubSub ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
1675+ cache := files .NewFromStore (db ,registry ,& coderdtest.FakeAuthorizer {})
1676+ controller := prebuilds .NewStoreReconciler (db ,pubSub ,cache ,cfg ,logger ,clock ,registry ,fakeEnqueuer )
16601677
16611678// Set up test environment with a template, version, and preset
16621679ownerID := uuid .New ()