@@ -603,6 +603,11 @@ func TestUserOAuth2Github(t *testing.T) {
603
603
604
604
require .Equal (t , http .StatusUnauthorized , resp .StatusCode )
605
605
})
606
+
607
+ // The bug only is exercised when a deleted user with the same linked_id exists.
608
+ // Still related open issues:
609
+ // - https://github.com/coder/coder/issues/12116
610
+ // - https://github.com/coder/coder/issues/12115
606
611
t .Run ("ChangedEmail" , func (t * testing.T ) {
607
612
t .Parallel ()
608
613
@@ -627,7 +632,7 @@ func TestUserOAuth2Github(t *testing.T) {
627
632
coderEmail ,
628
633
}
629
634
630
- client := coderdtest .New (t , & coderdtest.Options {
635
+ owner := coderdtest .New (t , & coderdtest.Options {
631
636
Auditor : auditor ,
632
637
GithubOAuth2Config : & coderd.GithubOAuth2Config {
633
638
AllowSignups : true ,
@@ -650,9 +655,21 @@ func TestUserOAuth2Github(t *testing.T) {
650
655
},
651
656
},
652
657
})
658
+ coderdtest .CreateFirstUser (t , owner )
659
+
660
+ ctx := testutil .Context (t , testutil .WaitLong )
661
+ // Create the user, then delete the user, then create again.
662
+ // This causes the email change to fail.
663
+ client := codersdk .New (owner .URL )
653
664
654
- ctx := testutil .Context (t , testutil .WaitMedium )
655
- // This should register the user
665
+ client , _ = fake .Login (t , client , jwt.MapClaims {})
666
+ deleted , err := client .User (ctx , "me" )
667
+ require .NoError (t , err )
668
+
669
+ err = owner .DeleteUser (ctx , deleted .ID )
670
+ require .NoError (t , err )
671
+
672
+ // Create the user again.
656
673
client , _ = fake .Login (t , client , jwt.MapClaims {})
657
674
user , err := client .User (ctx , "me" )
658
675
require .NoError (t , err )
@@ -666,7 +683,8 @@ func TestUserOAuth2Github(t *testing.T) {
666
683
client , _ = fake .Login (t , client , jwt.MapClaims {})
667
684
user , err = client .User (ctx , "me" )
668
685
require .NoError (t , err )
669
- require .Equal (t , user .ID , userID )
686
+
687
+ require .Equal (t , user .ID , userID , "user_id is different, a new user was likely created" )
670
688
require .Equal (t , user .Email , * gmailEmail .Email )
671
689
672
690
// Entirely change emails.
@@ -681,7 +699,8 @@ func TestUserOAuth2Github(t *testing.T) {
681
699
client , _ = fake .Login (t , client , jwt.MapClaims {})
682
700
user , err = client .User (ctx , "me" )
683
701
require .NoError (t , err )
684
- require .Equal (t , user .ID , userID )
702
+
703
+ require .Equal (t , user .ID , userID , "user_id is different, a new user was likely created" )
685
704
require .Equal (t , user .Email , newEmail )
686
705
})
687
706
}
0 commit comments