1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4mod error;
7mod session;
8mod status;
9mod user;
10
11pub use error::{AuthError, AuthResult};
12pub use session::{Session, SessionId};
13pub use status::AuthStatus;
14pub use user::AuthUser;
15
16#[cfg(test)]
17mod tests {
18 use super::*;
19
20 #[derive(Clone, Debug, Eq, PartialEq)]
21 struct TestUser {
22 id: u64,
23 }
24
25 impl AuthUser for TestUser {
26 type Id = u64;
27
28 fn id(&self) -> Self::Id {
29 self.id
30 }
31 }
32
33 #[test]
34 fn authenticated_status_exposes_user() {
35 let user = TestUser { id: 7 };
36 let status = AuthStatus::Authenticated(user.clone());
37
38 assert!(status.is_authenticated());
39 assert_eq!(status.user(), Some(&user));
40 }
41
42 #[test]
43 fn session_expiration_is_explicit() {
44 let session = Session::new(SessionId::new("session-1"), 7, 100, 200);
45
46 assert!(!session.is_expired_at(199));
47 assert!(session.is_expired_at(200));
48 }
49}