@@ -366,3 +366,60 @@ fn test_decline_invitation() {
366
366
let json = anon. show_crate_owners ( "decline_invitation" ) ;
367
367
assert_eq ! ( json. users. len( ) , 1 ) ;
368
368
}
369
+
370
+ #[ test]
371
+ fn inactive_users_dont_get_invitations ( ) {
372
+ use cargo_registry:: models:: NewUser ;
373
+ use std:: borrow:: Cow ;
374
+
375
+ let ( app, _, owner, owner_token) = TestApp :: init ( ) . with_token ( ) ;
376
+ let owner = owner. as_model ( ) ;
377
+
378
+ // An inactive user with gh_id -1 and an active user with a non-negative gh_id both exist
379
+ let invited_gh_login = "user_bar" ;
380
+ let krate_name = "inactive_test" ;
381
+
382
+ app. db ( |conn| {
383
+ NewUser {
384
+ gh_id : -1 ,
385
+ gh_login : invited_gh_login,
386
+ name : None ,
387
+ gh_avatar : None ,
388
+ gh_access_token : Cow :: Borrowed ( "some random token" ) ,
389
+ }
390
+ . create_or_update ( None , conn)
391
+ . unwrap ( ) ;
392
+ CrateBuilder :: new ( krate_name, owner. id ) . expect_build ( conn) ;
393
+ } ) ;
394
+
395
+ let invited_user = app. db_new_user ( invited_gh_login) ;
396
+
397
+ owner_token. add_user_owner ( krate_name, invited_user. as_model ( ) ) ;
398
+
399
+ let json = invited_user. list_invitations ( ) ;
400
+ assert_eq ! ( json. crate_owner_invitations. len( ) , 1 ) ;
401
+ }
402
+
403
+ #[ test]
404
+ fn highest_gh_id_is_most_recent_account_we_know_of ( ) {
405
+ let ( app, _, owner, owner_token) = TestApp :: init ( ) . with_token ( ) ;
406
+ let owner = owner. as_model ( ) ;
407
+
408
+ // An inactive user with a lower gh_id and an active user with a higher gh_id both exist
409
+ let invited_gh_login = "user_bar" ;
410
+ let krate_name = "newer_user_test" ;
411
+
412
+ // This user will get a lower gh_id, given how crate::new_user works
413
+ app. db_new_user ( invited_gh_login) ;
414
+
415
+ let invited_user = app. db_new_user ( invited_gh_login) ;
416
+
417
+ app. db ( |conn| {
418
+ CrateBuilder :: new ( krate_name, owner. id ) . expect_build ( conn) ;
419
+ } ) ;
420
+
421
+ owner_token. add_user_owner ( krate_name, invited_user. as_model ( ) ) ;
422
+
423
+ let json = invited_user. list_invitations ( ) ;
424
+ assert_eq ! ( json. crate_owner_invitations. len( ) , 1 ) ;
425
+ }
0 commit comments