framesmith 0.1.0

A Rust library for controlling Samsung Frame TVs over the local network
Documentation
use std::path::Path;

use crate::AuthTokenStore;
use crate::FileAuthTokenStore;

#[tokio::test]
async fn test_save_and_load_token() {
    let dir = std::env::temp_dir().join("framesmith_test_token");
    let path = dir.join("token.txt");
    let _ = std::fs::remove_file(&path);
    let _ = std::fs::remove_dir(&dir);

    let store = FileAuthTokenStore::new(&path);
    assert_eq!(store.load_token().await.unwrap(), None);

    store.save_token("test-token-123").await.unwrap();
    assert_eq!(
        store.load_token().await.unwrap(),
        Some("test-token-123".to_string())
    );

    // Cleanup
    let _ = std::fs::remove_file(&path);
    let _ = std::fs::remove_dir(&dir);
}

#[tokio::test]
async fn test_load_nonexistent_file() {
    let store = FileAuthTokenStore::new(Path::new("/tmp/framesmith_nonexistent_token.txt"));
    assert_eq!(store.load_token().await.unwrap(), None);
}

#[tokio::test]
async fn test_load_empty_file() {
    let path = std::env::temp_dir().join("framesmith_empty_token.txt");
    std::fs::write(&path, "").unwrap();

    let store = FileAuthTokenStore::new(&path);
    assert_eq!(store.load_token().await.unwrap(), None);

    let _ = std::fs::remove_file(&path);
}

#[tokio::test]
async fn test_load_trimmed_token() {
    let path = std::env::temp_dir().join("framesmith_trimmed_token.txt");
    std::fs::write(&path, "  my-token  \n").unwrap();

    let store = FileAuthTokenStore::new(&path);
    assert_eq!(
        store.load_token().await.unwrap(),
        Some("my-token".to_string())
    );

    let _ = std::fs::remove_file(&path);
}