@@ -4349,3 +4349,51 @@ func TestWorkspaceTimings(t *testing.T) {
4349
4349
require .Contains (t , err .Error (), "not found" )
4350
4350
})
4351
4351
}
4352
+
4353
+ // TestOIDCRemoved emulates a user logging in with OIDC, then that OIDC
4354
+ // auth method being removed.
4355
+ func TestOIDCRemoved (t * testing.T ) {
4356
+ t .Parallel ()
4357
+
4358
+ owner , db := coderdtest .NewWithDatabase (t , & coderdtest.Options {
4359
+ IncludeProvisionerDaemon : true ,
4360
+ })
4361
+ first := coderdtest .CreateFirstUser (t , owner )
4362
+
4363
+ user , userData := coderdtest .CreateAnotherUser (t , owner , first .OrganizationID , rbac .ScopedRoleOrgAdmin (first .OrganizationID ))
4364
+
4365
+ ctx := testutil .Context (t , testutil .WaitMedium )
4366
+ //nolint:gocritic // unit test
4367
+ _ , err := db .UpdateUserLoginType (dbauthz .AsSystemRestricted (ctx ), database.UpdateUserLoginTypeParams {
4368
+ NewLoginType : database .LoginTypeOIDC ,
4369
+ UserID : userData .ID ,
4370
+ })
4371
+ require .NoError (t , err )
4372
+
4373
+ //nolint:gocritic // unit test
4374
+ _ , err = db .InsertUserLink (dbauthz .AsSystemRestricted (ctx ), database.InsertUserLinkParams {
4375
+ UserID : userData .ID ,
4376
+ LoginType : database .LoginTypeOIDC ,
4377
+ LinkedID : "random" ,
4378
+ OAuthAccessToken : "foobar" ,
4379
+ OAuthAccessTokenKeyID : sql.NullString {},
4380
+ OAuthRefreshToken : "refresh" ,
4381
+ OAuthRefreshTokenKeyID : sql.NullString {},
4382
+ OAuthExpiry : time .Now ().Add (time .Hour * - 1 ),
4383
+ Claims : database.UserLinkClaims {},
4384
+ })
4385
+ require .NoError (t , err )
4386
+
4387
+ version := coderdtest .CreateTemplateVersion (t , owner , first .OrganizationID , nil )
4388
+ _ = coderdtest .AwaitTemplateVersionJobCompleted (t , owner , version .ID )
4389
+ template := coderdtest .CreateTemplate (t , owner , first .OrganizationID , version .ID )
4390
+
4391
+ wrk := coderdtest .CreateWorkspace (t , user , template .ID )
4392
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , owner , wrk .LatestBuild .ID )
4393
+
4394
+ deleteBuild , err := owner .CreateWorkspaceBuild (ctx , wrk .ID , codersdk.CreateWorkspaceBuildRequest {
4395
+ Transition : codersdk .WorkspaceTransitionDelete ,
4396
+ })
4397
+ require .NoError (t , err , "delete the workspace" )
4398
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , owner , deleteBuild .ID )
4399
+ }
0 commit comments