diff --git a/gpodder_sqlite/tests/auth_test.rs b/gpodder_sqlite/tests/auth_test.rs index 2fe0945..15117ed 100644 --- a/gpodder_sqlite/tests/auth_test.rs +++ b/gpodder_sqlite/tests/auth_test.rs @@ -102,3 +102,43 @@ fn test_refresh_session() { Some(new_session) ); } + +#[test] +fn remove_old_sessions() { + let (store, users) = common::setup(); + + let now = chrono::Utc::now().trunc_subsecs(0); + let timestamps = [ + now, + now - TimeDelta::seconds(1), + now - TimeDelta::seconds(2), + ]; + + for (i, ts) in timestamps.into_iter().enumerate() { + store + .insert_session(&Session { + id: i as i64, + last_seen: ts, + user: users[0].clone(), + }) + .expect("insert shouldn't fail"); + } + + assert_eq!( + store + .remove_old_sessions(now) + .expect("remove old sessions shouldn't fail"), + 2 + ); + + assert!(matches!(store.get_session(1), Ok(None))); + assert!(matches!(store.get_session(2), Ok(None))); + assert_eq!( + store.get_session(0).expect("get session shouldn't fail"), + Some(Session { + id: 0, + last_seen: now, + user: users[0].clone(), + }) + ); +}