polaris-mirror/src/service/test/lastfm.rs
2024-07-13 01:20:27 -07:00

63 lines
1.9 KiB
Rust

use http::StatusCode;
use std::path::PathBuf;
use crate::service::dto;
use crate::service::test::{constants::*, protocol, ServiceType, TestService};
use crate::test_name;
#[actix_web::test]
async fn lastfm_scrobble_ignores_unlinked_user() {
let mut service = ServiceType::new(&test_name!()).await;
service.complete_initial_setup().await;
service.login_admin().await;
service.index().await;
service.login().await;
let path: PathBuf = [TEST_MOUNT_NAME, "Khemmis", "Hunted", "02 - Candlelight.mp3"]
.iter()
.collect();
let request = protocol::lastfm_scrobble(&path);
let response = service.fetch(&request).await;
assert_eq!(response.status(), StatusCode::NO_CONTENT);
}
#[actix_web::test]
async fn lastfm_now_playing_ignores_unlinked_user() {
let mut service = ServiceType::new(&test_name!()).await;
service.complete_initial_setup().await;
service.login_admin().await;
service.index().await;
service.login().await;
let path: PathBuf = [TEST_MOUNT_NAME, "Khemmis", "Hunted", "02 - Candlelight.mp3"]
.iter()
.collect();
let request = protocol::lastfm_now_playing(&path);
let response = service.fetch(&request).await;
assert_eq!(response.status(), StatusCode::NO_CONTENT);
}
#[actix_web::test]
async fn lastfm_link_token_requires_auth() {
let mut service = ServiceType::new(&test_name!()).await;
let request = protocol::lastfm_link_token();
let response = service.fetch(&request).await;
assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
}
#[actix_web::test]
async fn lastfm_link_token_golden_path() {
let mut service = ServiceType::new(&test_name!()).await;
service.complete_initial_setup().await;
service.login().await;
let request = protocol::lastfm_link_token();
let response = service
.fetch_json::<_, dto::LastFMLinkToken>(&request)
.await;
assert_eq!(response.status(), StatusCode::OK);
let link_token = response.body();
assert!(!link_token.value.is_empty());
}