56 lines
1.3 KiB
Rust
56 lines
1.3 KiB
Rust
use chrono::{Duration, Utc};
|
|
use domain::entities::{LinkAccessLevel, ScopeType, ShareLink, ShareScope, ShareableType};
|
|
use domain::value_objects::{DateTimeStamp, SystemId};
|
|
|
|
// --- ShareScope ---
|
|
|
|
#[test]
|
|
fn not_expired_when_no_expiry() {
|
|
let scope = ShareScope::new(
|
|
ScopeType::Link,
|
|
ShareableType::Album,
|
|
SystemId::new(),
|
|
SystemId::new(),
|
|
);
|
|
assert!(!scope.is_expired());
|
|
}
|
|
|
|
#[test]
|
|
fn expired_when_past() {
|
|
let mut scope = ShareScope::new(
|
|
ScopeType::Link,
|
|
ShareableType::Album,
|
|
SystemId::new(),
|
|
SystemId::new(),
|
|
);
|
|
scope.expires_at = Some(DateTimeStamp::from_datetime(
|
|
Utc::now() - Duration::hours(1),
|
|
));
|
|
assert!(scope.is_expired());
|
|
}
|
|
|
|
// --- ShareLink ---
|
|
|
|
#[test]
|
|
fn new_link_is_valid() {
|
|
let link = ShareLink::new(SystemId::new(), "tok123", LinkAccessLevel::ViewOnly);
|
|
assert!(link.is_valid());
|
|
assert_eq!(link.use_count, 0);
|
|
}
|
|
|
|
#[test]
|
|
fn deactivated_invalid() {
|
|
let mut link = ShareLink::new(SystemId::new(), "tok123", LinkAccessLevel::ViewOnly);
|
|
link.deactivate();
|
|
assert!(!link.is_valid());
|
|
}
|
|
|
|
#[test]
|
|
fn max_uses_exhausted() {
|
|
let mut link = ShareLink::new(SystemId::new(), "tok123", LinkAccessLevel::ViewOnly);
|
|
link.max_uses = Some(2);
|
|
link.record_use();
|
|
link.record_use();
|
|
assert!(!link.is_valid());
|
|
}
|