Skip to content

Commit 231ee43

Browse files
committed
Auto merge of #2177 - integer32llc:exclude-inactive-accounts, r=jtgeibel
Fixing issues with owner invites and renamed accounts Pushing commit by commit to demonstrate test failures and fixes
2 parents 9be7706 + 61c840b commit 231ee43

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

src/models/owner.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ impl Owner {
7272
} else {
7373
users::table
7474
.filter(users::gh_login.eq(name))
75+
.filter(users::gh_id.ne(-1))
76+
.order(users::gh_id.desc())
7577
.first(conn)
7678
.map(Owner::User)
7779
.map_err(|_| cargo_err(&format_args!("could not find user with login `{}`", name)))

src/tests/owners.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,3 +366,60 @@ fn test_decline_invitation() {
366366
let json = anon.show_crate_owners("decline_invitation");
367367
assert_eq!(json.users.len(), 1);
368368
}
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

Comments
 (0)