105 lines
2.5 KiB
Rust
105 lines
2.5 KiB
Rust
mod common;
|
|
|
|
use chrono::{SubsecRound, TimeDelta};
|
|
use gpodder::{AuthStore, Session};
|
|
use gpodder_sqlite::SqliteRepository;
|
|
|
|
#[test]
|
|
fn test_create_user() {
|
|
let store = SqliteRepository::in_memory().unwrap();
|
|
|
|
let user = store.get_user("test1");
|
|
assert!(user.is_ok());
|
|
assert_eq!(user.unwrap(), None);
|
|
|
|
let new_user = store.insert_user("test1", "dummyhash");
|
|
|
|
assert!(new_user.is_ok());
|
|
|
|
let new_user = new_user.unwrap();
|
|
assert_eq!(new_user.username, "test1");
|
|
assert_eq!(new_user.password_hash, "dummyhash");
|
|
|
|
let user = store.get_user("test1");
|
|
|
|
assert!(user.is_ok());
|
|
assert_eq!(user.unwrap(), Some(new_user));
|
|
}
|
|
|
|
#[test]
|
|
fn test_create_session() {
|
|
let (store, users) = common::setup();
|
|
|
|
let session = store.get_session(123).expect("operation shouldn't fail");
|
|
assert_eq!(session, None);
|
|
|
|
let new_session = Session {
|
|
id: 123,
|
|
//
|
|
last_seen: chrono::Utc::now().trunc_subsecs(0),
|
|
user: users[0].clone(),
|
|
};
|
|
|
|
store
|
|
.insert_session(&new_session)
|
|
.expect("insert session shouldn't fail");
|
|
|
|
let session = store.get_session(123).expect("operation shouldn't fail");
|
|
assert_eq!(session, Some(new_session));
|
|
}
|
|
|
|
#[test]
|
|
fn test_remove_session() {
|
|
let (store, users) = common::setup();
|
|
|
|
let new_session = Session {
|
|
id: 123,
|
|
//
|
|
last_seen: chrono::Utc::now().trunc_subsecs(0),
|
|
user: users[0].clone(),
|
|
};
|
|
|
|
store
|
|
.insert_session(&new_session)
|
|
.expect("insert session shouldn't fail");
|
|
|
|
assert!(store
|
|
.get_session(123)
|
|
.expect("get session shouldn't fail")
|
|
.is_some());
|
|
|
|
store.remove_session(123).expect("remove shouldn't fail");
|
|
|
|
assert!(store
|
|
.get_session(123)
|
|
.expect("get session shouldn't fail")
|
|
.is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn test_refresh_session() {
|
|
let (store, users) = common::setup();
|
|
|
|
let mut new_session = Session {
|
|
id: 123,
|
|
//
|
|
last_seen: chrono::Utc::now().trunc_subsecs(0) - TimeDelta::seconds(10),
|
|
user: users[0].clone(),
|
|
};
|
|
|
|
store
|
|
.insert_session(&new_session)
|
|
.expect("insert session shouldn't fail");
|
|
|
|
store
|
|
.refresh_session(&new_session, chrono::Utc::now().trunc_subsecs(0))
|
|
.expect("refresh session shouldn't fail");
|
|
|
|
new_session.last_seen = chrono::Utc::now().trunc_subsecs(0);
|
|
|
|
assert_eq!(
|
|
store.get_session(123).expect("get session shouldn't fail"),
|
|
Some(new_session)
|
|
);
|
|
}
|