@@ -406,6 +406,33 @@ func TestWorkspaceAgentConnectRPC(t *testing.T) {
406
406
require .ErrorAs (t , err , & sdkErr )
407
407
require .Equal (t , http .StatusForbidden , sdkErr .StatusCode ())
408
408
})
409
+
410
+ t .Run ("FailDeleted" , func (t * testing.T ) {
411
+ t .Parallel ()
412
+
413
+ ctx := testutil .Context (t , testutil .WaitLong )
414
+ client , db := coderdtest .NewWithDatabase (t , nil )
415
+ user := coderdtest .CreateFirstUser (t , client )
416
+ // Given: a workspace exists
417
+ seed := database.Workspace {OrganizationID : user .OrganizationID , OwnerID : user .UserID }
418
+ wsb := dbfake .WorkspaceBuild (t , db , seed ).WithAgent ().Do ()
419
+ // When: the workspace is marked as soft-deleted
420
+ // nolint:gocritic // this is a test
421
+ err := db .UpdateWorkspaceDeletedByID (
422
+ dbauthz .AsProvisionerd (ctx ),
423
+ database.UpdateWorkspaceDeletedByIDParams {ID : wsb .Workspace .ID , Deleted : true },
424
+ )
425
+ require .NoError (t , err )
426
+ // Then: the agent token should no longer be valid
427
+ agentClient := agentsdk .New (client .URL )
428
+ agentClient .SetSessionToken (wsb .AgentToken )
429
+ _ , err = agentClient .ConnectRPC (ctx )
430
+ require .Error (t , err )
431
+ var sdkErr * codersdk.Error
432
+ require .ErrorAs (t , err , & sdkErr )
433
+ // Then: we should get a 401 Unauthorized response
434
+ require .Equal (t , http .StatusUnauthorized , sdkErr .StatusCode ())
435
+ })
409
436
}
410
437
411
438
func TestWorkspaceAgentTailnet (t * testing.T ) {
0 commit comments