(t *testing.T)
| 17 | ) |
| 18 | |
| 19 | func TestPubsubWorkspaceClaimPublisher(t *testing.T) { |
| 20 | t.Parallel() |
| 21 | t.Run("published claim is received by a listener for the same workspace", func(t *testing.T) { |
| 22 | t.Parallel() |
| 23 | |
| 24 | ctx := testutil.Context(t, testutil.WaitShort) |
| 25 | logger := testutil.Logger(t) |
| 26 | ps := pubsub.NewInMemory() |
| 27 | workspaceID := uuid.New() |
| 28 | publisher := prebuilds.NewPubsubWorkspaceClaimPublisher(ps) |
| 29 | listener := prebuilds.NewPubsubWorkspaceClaimListener(ps, logger) |
| 30 | |
| 31 | events, cancel, err := listener.ListenForWorkspaceClaims(ctx, workspaceID) |
| 32 | require.NoError(t, err) |
| 33 | defer cancel() |
| 34 | |
| 35 | userID := uuid.New() |
| 36 | claim := agentsdk.ReinitializationEvent{ |
| 37 | WorkspaceID: workspaceID, |
| 38 | Reason: agentsdk.ReinitializeReasonPrebuildClaimed, |
| 39 | OwnerID: userID, |
| 40 | } |
| 41 | err = publisher.PublishWorkspaceClaim(claim) |
| 42 | require.NoError(t, err) |
| 43 | |
| 44 | gotEvent := testutil.RequireReceive(ctx, t, events) |
| 45 | require.Equal(t, workspaceID, gotEvent.WorkspaceID) |
| 46 | require.Equal(t, claim.Reason, gotEvent.Reason) |
| 47 | require.Equal(t, userID, gotEvent.OwnerID) |
| 48 | }) |
| 49 | |
| 50 | t.Run("fail to publish claim", func(t *testing.T) { |
| 51 | t.Parallel() |
| 52 | |
| 53 | ps := &brokenPubsub{} |
| 54 | |
| 55 | publisher := prebuilds.NewPubsubWorkspaceClaimPublisher(ps) |
| 56 | claim := agentsdk.ReinitializationEvent{ |
| 57 | WorkspaceID: uuid.New(), |
| 58 | Reason: agentsdk.ReinitializeReasonPrebuildClaimed, |
| 59 | } |
| 60 | |
| 61 | err := publisher.PublishWorkspaceClaim(claim) |
| 62 | require.ErrorContains(t, err, "failed to trigger prebuilt workspace agent reinitialization") |
| 63 | }) |
| 64 | } |
| 65 | |
| 66 | func TestPubsubWorkspaceClaimListener(t *testing.T) { |
| 67 | t.Parallel() |
nothing calls this directly
no test coverage detected