@@ -603,6 +603,8 @@ 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.
606
608
t .Run ("ChangedEmail" , func (t * testing.T ) {
607
609
t .Parallel ()
608
610
@@ -627,7 +629,7 @@ func TestUserOAuth2Github(t *testing.T) {
627
629
coderEmail ,
628
630
}
629
631
630
- client := coderdtest .New (t , & coderdtest.Options {
632
+ owner := coderdtest .New (t , & coderdtest.Options {
631
633
Auditor : auditor ,
632
634
GithubOAuth2Config : & coderd.GithubOAuth2Config {
633
635
AllowSignups : true ,
@@ -650,9 +652,19 @@ func TestUserOAuth2Github(t *testing.T) {
650
652
},
651
653
},
652
654
})
655
+ coderdtest .CreateFirstUser (t , owner )
656
+
657
+ ctx := testutil .Context (t , testutil .WaitLong )
658
+ // Create the user, then delete the user, then create again.
659
+ // This causes the email change to fail.
660
+ client := codersdk .New (owner .URL )
653
661
654
- ctx := testutil .Context (t , testutil .WaitMedium )
655
- // This should register the user
662
+ client , _ = fake .Login (t , client , jwt.MapClaims {})
663
+ deleted , err := client .User (ctx , "me" )
664
+ err = owner .DeleteUser (ctx , deleted .ID )
665
+ require .NoError (t , err )
666
+
667
+ // Create the user again.
656
668
client , _ = fake .Login (t , client , jwt.MapClaims {})
657
669
user , err := client .User (ctx , "me" )
658
670
require .NoError (t , err )
@@ -666,7 +678,8 @@ func TestUserOAuth2Github(t *testing.T) {
666
678
client , _ = fake .Login (t , client , jwt.MapClaims {})
667
679
user , err = client .User (ctx , "me" )
668
680
require .NoError (t , err )
669
- require .Equal (t , user .ID , userID )
681
+
682
+ require .Equal (t , user .ID , userID , "user_id is different, a new user was likely created" )
670
683
require .Equal (t , user .Email , * gmailEmail .Email )
671
684
672
685
// Entirely change emails.
@@ -681,7 +694,8 @@ func TestUserOAuth2Github(t *testing.T) {
681
694
client , _ = fake .Login (t , client , jwt.MapClaims {})
682
695
user , err = client .User (ctx , "me" )
683
696
require .NoError (t , err )
684
- require .Equal (t , user .ID , userID )
697
+
698
+ require .Equal (t , user .ID , userID , "user_id is different, a new user was likely created" )
685
699
require .Equal (t , user .Email , newEmail )
686
700
})
687
701
}
0 commit comments