@@ -214,6 +214,7 @@ func TestUserOAuth2Github(t *testing.T) {
214
214
return & github.User {
215
215
ID : github .Int64 (100 ),
216
216
Login : github .String ("kyle" ),
217
+ Name : github .String ("Kylium Carbonate" ),
217
218
}, nil
218
219
},
219
220
TeamMembership : func (ctx context.Context , client * http.Client , org , team , username string ) (* github.Membership , error ) {
@@ -273,7 +274,9 @@ func TestUserOAuth2Github(t *testing.T) {
273
274
},
274
275
AuthenticatedUser : func (ctx context.Context , client * http.Client ) (* github.User , error ) {
275
276
return & github.User {
276
- ID : github .Int64 (100 ),
277
+ ID : github .Int64 (100 ),
278
+ Login : github .String ("testuser" ),
279
+ Name : github .String ("The Right Honorable Sir Test McUser" ),
277
280
}, nil
278
281
},
279
282
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -306,7 +309,9 @@ func TestUserOAuth2Github(t *testing.T) {
306
309
},
307
310
AuthenticatedUser : func (ctx context.Context , client * http.Client ) (* github.User , error ) {
308
311
return & github.User {
309
- ID : github .Int64 (100 ),
312
+ ID : github .Int64 (100 ),
313
+ Login : github .String ("testuser" ),
314
+ Name : github .String ("The Right Honorable Sir Test McUser" ),
310
315
}, nil
311
316
},
312
317
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -347,9 +352,10 @@ func TestUserOAuth2Github(t *testing.T) {
347
352
},
348
353
AuthenticatedUser : func (ctx context.Context , _ * http.Client ) (* github.User , error ) {
349
354
return & github.User {
350
- Login : github .String ("kyle" ),
351
- ID : i64ptr (1234 ),
352
355
AvatarURL : github .String ("/hello-world" ),
356
+ ID : i64ptr (1234 ),
357
+ Login : github .String ("kyle" ),
358
+ Name : github .String ("Kylium Carbonate" ),
353
359
}, nil
354
360
},
355
361
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -373,6 +379,7 @@ func TestUserOAuth2Github(t *testing.T) {
373
379
require .NoError (t , err )
374
380
require .Equal (t , "kyle@coder.com" , user .Email )
375
381
require .Equal (t , "kyle" , user .Username )
382
+ require .Equal (t , "Kylium Carbonate" , user .Name )
376
383
require .Equal (t , "/hello-world" , user .AvatarURL )
377
384
378
385
require .Len (t , auditor .AuditLogs (), numLogs )
@@ -402,8 +409,10 @@ func TestUserOAuth2Github(t *testing.T) {
402
409
},
403
410
AuthenticatedUser : func (ctx context.Context , client * http.Client ) (* github.User , error ) {
404
411
return & github.User {
405
- ID : github .Int64 (100 ),
406
- Login : github .String ("kyle" ),
412
+ AvatarURL : github .String ("/hello-world" ),
413
+ ID : github .Int64 (100 ),
414
+ Login : github .String ("kyle" ),
415
+ Name : github .String ("Kylium Carbonate" ),
407
416
}, nil
408
417
},
409
418
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -420,6 +429,14 @@ func TestUserOAuth2Github(t *testing.T) {
420
429
resp := oauth2Callback (t , client )
421
430
numLogs ++ // add an audit log for login
422
431
432
+ client .SetSessionToken (authCookieValue (resp .Cookies ()))
433
+ user , err := client .User (context .Background (), "me" )
434
+ require .NoError (t , err )
435
+ require .Equal (t , "kyle@coder.com" , user .Email )
436
+ require .Equal (t , "kyle" , user .Username )
437
+ require .Equal (t , "Kylium Carbonate" , user .Name )
438
+ require .Equal (t , "/hello-world" , user .AvatarURL )
439
+
423
440
require .Equal (t , http .StatusTemporaryRedirect , resp .StatusCode )
424
441
require .Len (t , auditor .AuditLogs (), numLogs )
425
442
require .Equal (t , database .AuditActionRegister , auditor .AuditLogs ()[numLogs - 1 ].Action )
@@ -457,6 +474,7 @@ func TestUserOAuth2Github(t *testing.T) {
457
474
return & github.User {
458
475
ID : github .Int64 (100 ),
459
476
Login : github .String ("mathias" ),
477
+ Name : github .String ("Mathias Mathias" ),
460
478
}, nil
461
479
},
462
480
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -473,6 +491,13 @@ func TestUserOAuth2Github(t *testing.T) {
473
491
resp := oauth2Callback (t , client )
474
492
numLogs ++ // add an audit log for login
475
493
494
+ client .SetSessionToken (authCookieValue (resp .Cookies ()))
495
+ user , err := client .User (context .Background (), "me" )
496
+ require .NoError (t , err )
497
+ require .Equal (t , "mathias@coder.com" , user .Email )
498
+ require .Equal (t , "mathias" , user .Username )
499
+ require .Equal (t , "Mathias Mathias" , user .Name )
500
+
476
501
require .Equal (t , http .StatusTemporaryRedirect , resp .StatusCode )
477
502
require .Len (t , auditor .AuditLogs (), numLogs )
478
503
require .Equal (t , database .AuditActionRegister , auditor .AuditLogs ()[numLogs - 1 ].Action )
@@ -510,6 +535,7 @@ func TestUserOAuth2Github(t *testing.T) {
510
535
return & github.User {
511
536
ID : github .Int64 (100 ),
512
537
Login : github .String ("mathias" ),
538
+ Name : github .String ("Mathias Mathias" ),
513
539
}, nil
514
540
},
515
541
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -526,6 +552,13 @@ func TestUserOAuth2Github(t *testing.T) {
526
552
resp := oauth2Callback (t , client )
527
553
numLogs ++ // add an audit log for login
528
554
555
+ client .SetSessionToken (authCookieValue (resp .Cookies ()))
556
+ user , err := client .User (context .Background (), "me" )
557
+ require .NoError (t , err )
558
+ require .Equal (t , "mathias@coder.com" , user .Email )
559
+ require .Equal (t , "mathias" , user .Username )
560
+ require .Equal (t , "Mathias Mathias" , user .Name )
561
+
529
562
require .Equal (t , http .StatusTemporaryRedirect , resp .StatusCode )
530
563
require .Len (t , auditor .AuditLogs (), numLogs )
531
564
require .Equal (t , database .AuditActionRegister , auditor .AuditLogs ()[numLogs - 1 ].Action )
@@ -549,6 +582,7 @@ func TestUserOAuth2Github(t *testing.T) {
549
582
return & github.User {
550
583
ID : github .Int64 (100 ),
551
584
Login : github .String ("mathias" ),
585
+ Name : github .String ("Mathias Mathias" ),
552
586
}, nil
553
587
},
554
588
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -565,6 +599,13 @@ func TestUserOAuth2Github(t *testing.T) {
565
599
resp := oauth2Callback (t , client )
566
600
numLogs ++ // add an audit log for login
567
601
602
+ client .SetSessionToken (authCookieValue (resp .Cookies ()))
603
+ user , err := client .User (context .Background (), "me" )
604
+ require .NoError (t , err )
605
+ require .Equal (t , "mathias@coder.com" , user .Email )
606
+ require .Equal (t , "mathias" , user .Username )
607
+ require .Equal (t , "Mathias Mathias" , user .Name )
608
+
568
609
require .Equal (t , http .StatusTemporaryRedirect , resp .StatusCode )
569
610
require .Len (t , auditor .AuditLogs (), numLogs )
570
611
require .Equal (t , database .AuditActionRegister , auditor .AuditLogs ()[numLogs - 1 ].Action )
@@ -592,6 +633,7 @@ func TestUserOAuth2Github(t *testing.T) {
592
633
return & github.User {
593
634
ID : github .Int64 (100 ),
594
635
Login : github .String ("kyle" ),
636
+ Name : github .String ("Kylium Carbonate" ),
595
637
}, nil
596
638
},
597
639
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -653,6 +695,7 @@ func TestUserOAuth2Github(t *testing.T) {
653
695
return & github.User {
654
696
Login : github .String ("alice" ),
655
697
ID : github .Int64 (ghID ),
698
+ Name : github .String ("Alice Liddell" ),
656
699
}, nil
657
700
},
658
701
ListEmails : func (ctx context.Context , client * http.Client ) ([]* github.UserEmail , error ) {
@@ -740,7 +783,7 @@ func TestUserOIDC(t *testing.T) {
740
783
UserInfoClaims jwt.MapClaims
741
784
AllowSignups bool
742
785
EmailDomain []string
743
- AssertUser func (u codersdk.User )
786
+ AssertUser func (t testing. TB , u codersdk.User )
744
787
StatusCode int
745
788
IgnoreEmailVerified bool
746
789
IgnoreUserInfo bool
@@ -752,7 +795,7 @@ func TestUserOIDC(t *testing.T) {
752
795
},
753
796
AllowSignups : true ,
754
797
StatusCode : http .StatusOK ,
755
- AssertUser : func (u codersdk.User ) {
798
+ AssertUser : func (t testing. TB , u codersdk.User ) {
756
799
assert .Equal (t , "kyle" , u .Username )
757
800
},
758
801
},
@@ -782,7 +825,7 @@ func TestUserOIDC(t *testing.T) {
782
825
},
783
826
AllowSignups : true ,
784
827
StatusCode : http .StatusOK ,
785
- AssertUser : func (u codersdk.User ) {
828
+ AssertUser : func (t testing. TB , u codersdk.User ) {
786
829
assert .Equal (t , u .Username , "kyle" )
787
830
},
788
831
IgnoreEmailVerified : true ,
@@ -806,6 +849,9 @@ func TestUserOIDC(t *testing.T) {
806
849
"email_verified" : true ,
807
850
},
808
851
AllowSignups : true ,
852
+ AssertUser : func (t testing.TB , u codersdk.User ) {
853
+ assert .Equal (t , u .Username , "kyle" )
854
+ },
809
855
EmailDomain : []string {
810
856
"kwc.io" ,
811
857
},
@@ -843,7 +889,7 @@ func TestUserOIDC(t *testing.T) {
843
889
"email" : "kyle@kwc.io" ,
844
890
"email_verified" : true ,
845
891
},
846
- AssertUser : func (u codersdk.User ) {
892
+ AssertUser : func (t testing. TB , u codersdk.User ) {
847
893
assert .Equal (t , "kyle" , u .Username )
848
894
},
849
895
AllowSignups : true ,
@@ -856,22 +902,36 @@ func TestUserOIDC(t *testing.T) {
856
902
"email_verified" : true ,
857
903
"preferred_username" : "hotdog" ,
858
904
},
859
- AssertUser : func (u codersdk.User ) {
905
+ AssertUser : func (t testing. TB , u codersdk.User ) {
860
906
assert .Equal (t , "hotdog" , u .Username )
861
907
},
862
908
AllowSignups : true ,
863
909
StatusCode : http .StatusOK ,
864
910
},
911
+ {
912
+ Name : "FullNameFromClaims" ,
913
+ IDTokenClaims : jwt.MapClaims {
914
+ "email" : "kyle@kwc.io" ,
915
+ "email_verified" : true ,
916
+ "name" : "Hot Dog" ,
917
+ },
918
+ AssertUser : func (t testing.TB , u codersdk.User ) {
919
+ assert .Equal (t , "Hot Dog" , u .Name )
920
+ },
921
+ AllowSignups : true ,
922
+ StatusCode : http .StatusOK ,
923
+ },
865
924
{
866
925
// Services like Okta return the email as the username:
867
926
// https://developer.okta.com/docs/reference/api/oidc/#base-claims-always-present
868
927
Name : "UsernameAsEmail" ,
869
928
IDTokenClaims : jwt.MapClaims {
870
929
"email" : "kyle@kwc.io" ,
871
930
"email_verified" : true ,
931
+ "name" : "Kylium Carbonate" ,
872
932
"preferred_username" : "kyle@kwc.io" ,
873
933
},
874
- AssertUser : func (u codersdk.User ) {
934
+ AssertUser : func (t testing. TB , u codersdk.User ) {
875
935
assert .Equal (t , "kyle" , u .Username )
876
936
},
877
937
AllowSignups : true ,
@@ -883,8 +943,9 @@ func TestUserOIDC(t *testing.T) {
883
943
IDTokenClaims : jwt.MapClaims {
884
944
"preferred_username" : "kyle@kwc.io" ,
885
945
},
886
- AssertUser : func (u codersdk.User ) {
946
+ AssertUser : func (t testing. TB , u codersdk.User ) {
887
947
assert .Equal (t , "kyle" , u .Username )
948
+ assert .Equal (t , "Kylium Carbonate" , u .Name )
888
949
},
889
950
AllowSignups : true ,
890
951
StatusCode : http .StatusOK ,
@@ -897,7 +958,7 @@ func TestUserOIDC(t *testing.T) {
897
958
"preferred_username" : "kyle" ,
898
959
"picture" : "/example.png" ,
899
960
},
900
- AssertUser : func (u codersdk.User ) {
961
+ AssertUser : func (t testing. TB , u codersdk.User ) {
901
962
assert .Equal (t , "/example.png" , u .AvatarURL )
902
963
assert .Equal (t , "kyle" , u .Username )
903
964
},
@@ -913,9 +974,11 @@ func TestUserOIDC(t *testing.T) {
913
974
UserInfoClaims : jwt.MapClaims {
914
975
"preferred_username" : "potato" ,
915
976
"picture" : "/example.png" ,
977
+ "name" : "Kylium Carbonate" ,
916
978
},
917
- AssertUser : func (u codersdk.User ) {
979
+ AssertUser : func (t testing. TB , u codersdk.User ) {
918
980
assert .Equal (t , "/example.png" , u .AvatarURL )
981
+ assert .Equal (t , "Kylium Carbonate" , u .Name )
919
982
assert .Equal (t , "potato" , u .Username )
920
983
},
921
984
AllowSignups : true ,
@@ -941,7 +1004,7 @@ func TestUserOIDC(t *testing.T) {
941
1004
"email_verified" : true ,
942
1005
"preferred_username" : "user" ,
943
1006
},
944
- AssertUser : func (u codersdk.User ) {
1007
+ AssertUser : func (t testing. TB , u codersdk.User ) {
945
1008
assert .Equal (t , "user" , u .Username )
946
1009
},
947
1010
AllowSignups : true ,
@@ -966,14 +1029,17 @@ func TestUserOIDC(t *testing.T) {
966
1029
IDTokenClaims : jwt.MapClaims {
967
1030
"email" : "user@internal.domain" ,
968
1031
"email_verified" : true ,
1032
+ "name" : "User McName" ,
969
1033
"preferred_username" : "user" ,
970
1034
},
971
1035
UserInfoClaims : jwt.MapClaims {
972
1036
"email" : "user.mcname@external.domain" ,
1037
+ "name" : "Mr. User McName" ,
973
1038
"preferred_username" : "Mr. User McName" ,
974
1039
},
975
- AssertUser : func (u codersdk.User ) {
1040
+ AssertUser : func (t testing. TB , u codersdk.User ) {
976
1041
assert .Equal (t , "user" , u .Username )
1042
+ assert .Equal (t , "User Name" , u .Name )
977
1043
},
978
1044
IgnoreUserInfo : true ,
979
1045
AllowSignups : true ,
@@ -985,7 +1051,7 @@ func TestUserOIDC(t *testing.T) {
985
1051
"email" : "user@domain.tld" ,
986
1052
"email_verified" : true ,
987
1053
}, 65536 ),
988
- AssertUser : func (u codersdk.User ) {
1054
+ AssertUser : func (t testing. TB , u codersdk.User ) {
989
1055
assert .Equal (t , "user" , u .Username )
990
1056
},
991
1057
AllowSignups : true ,
@@ -998,7 +1064,7 @@ func TestUserOIDC(t *testing.T) {
998
1064
"email_verified" : true ,
999
1065
},
1000
1066
UserInfoClaims : inflateClaims (t , jwt.MapClaims {}, 65536 ),
1001
- AssertUser : func (u codersdk.User ) {
1067
+ AssertUser : func (t testing. TB , u codersdk.User ) {
1002
1068
assert .Equal (t , "user" , u .Username )
1003
1069
},
1004
1070
AllowSignups : true ,
@@ -1041,7 +1107,7 @@ func TestUserOIDC(t *testing.T) {
1041
1107
user , err := client .User (ctx , "me" )
1042
1108
require .NoError (t , err )
1043
1109
1044
- tc .AssertUser (user )
1110
+ tc .AssertUser (t , user )
1045
1111
require .Len (t , auditor .AuditLogs (), numLogs )
1046
1112
require .NotEqual (t , uuid .Nil , auditor .AuditLogs ()[numLogs - 1 ].UserID )
1047
1113
require .Equal (t , database .AuditActionRegister , auditor .AuditLogs ()[numLogs - 1 ].Action )
0 commit comments