55
crates/domain/tests/provider/provider_connection_test.rs
Normal file
55
crates/domain/tests/provider/provider_connection_test.rs
Normal file
@@ -0,0 +1,55 @@
|
||||
use domain::provider::{EncryptedCredential, ProviderConnection, ProviderName};
|
||||
use domain::user::UserId;
|
||||
|
||||
fn credential() -> EncryptedCredential {
|
||||
EncryptedCredential::from_persistence(vec![1, 2, 3, 4])
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_provider_name_is_a_lowercase_slug() {
|
||||
assert_eq!(ProviderName::new("Subsonic").unwrap().value(), "subsonic");
|
||||
assert_eq!(ProviderName::new(" spotify ").unwrap().value(), "spotify");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_blank_or_malformed_provider_name_is_rejected() {
|
||||
assert!(ProviderName::new("").is_err());
|
||||
assert!(ProviderName::new(" ").is_err());
|
||||
assert!(ProviderName::new("my provider").is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_connection_belongs_to_one_user_and_one_provider() {
|
||||
let user_id = UserId::generate();
|
||||
let provider = ProviderName::new("subsonic").unwrap();
|
||||
|
||||
let connection = ProviderConnection::new(user_id.clone(), provider.clone(), credential());
|
||||
|
||||
assert_eq!(*connection.user_id(), user_id);
|
||||
assert_eq!(connection.provider().value(), "subsonic");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_credential_never_reveals_itself_in_debug_output() {
|
||||
let user_id = UserId::generate();
|
||||
let provider = ProviderName::new("subsonic").unwrap();
|
||||
let secret = EncryptedCredential::from_persistence(b"hunter2".to_vec());
|
||||
|
||||
let connection = ProviderConnection::new(user_id, provider, secret);
|
||||
|
||||
let rendered = format!("{connection:?}");
|
||||
assert!(!rendered.contains("hunter2"));
|
||||
assert!(!rendered.contains("104, 117, 110"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn replacing_a_credential_touches_the_connection() {
|
||||
let user_id = UserId::generate();
|
||||
let provider = ProviderName::new("subsonic").unwrap();
|
||||
let mut connection = ProviderConnection::new(user_id, provider, credential());
|
||||
let before = *connection.updated_at();
|
||||
|
||||
connection.replace_credential(EncryptedCredential::from_persistence(vec![9, 9]));
|
||||
|
||||
assert!(*connection.updated_at() >= before);
|
||||
}
|
||||
Reference in New Issue
Block a user