@@ -4349,3 +4349,51 @@ func TestWorkspaceTimings(t *testing.T) {
43494349 require .Contains (t , err .Error (), "not found" )
43504350 })
43514351}
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