Adds genre endpoint tests
This commit is contained in:
parent
7f3e091e32
commit
071aced10a
2 changed files with 170 additions and 0 deletions
src/server/test
|
@ -133,3 +133,124 @@ async fn recent_golden_path_api_v7() {
|
|||
assert_eq!(entries.len(), 3);
|
||||
assert!(entries[0].path.starts_with("collection/"));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genres_requires_auth() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
let request = protocol::genres::<V8>();
|
||||
let response = service.fetch(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genres_golden_path() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
service.complete_initial_setup().await;
|
||||
service.login_admin().await;
|
||||
service.index().await;
|
||||
service.login().await;
|
||||
|
||||
let request = protocol::genres::<V8>();
|
||||
let response = service
|
||||
.fetch_json::<_, Vec<dto::GenreHeader>>(&request)
|
||||
.await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 4);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_requires_auth() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
let request = protocol::genre::<V8>("Metal");
|
||||
let response = service.fetch(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_golden_path() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
service.complete_initial_setup().await;
|
||||
service.login_admin().await;
|
||||
service.index().await;
|
||||
service.login().await;
|
||||
|
||||
let request = protocol::genre::<V8>("Metal");
|
||||
let response = service.fetch_json::<_, dto::Genre>(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let genre = response.body();
|
||||
assert_eq!(genre.header.name, "Metal");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_albums_requires_auth() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
let request = protocol::genre_albums::<V8>("Metal");
|
||||
let response = service.fetch(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_albums_golden_path() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
service.complete_initial_setup().await;
|
||||
service.login_admin().await;
|
||||
service.index().await;
|
||||
service.login().await;
|
||||
|
||||
let request = protocol::genre_albums::<V8>("Metal");
|
||||
let response = service
|
||||
.fetch_json::<_, Vec<dto::AlbumHeader>>(&request)
|
||||
.await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 1);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_artists_requires_auth() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
let request = protocol::genre_artists::<V8>("Metal");
|
||||
let response = service.fetch(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_artists_golden_path() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
service.complete_initial_setup().await;
|
||||
service.login_admin().await;
|
||||
service.index().await;
|
||||
service.login().await;
|
||||
|
||||
let request = protocol::genre_artists::<V8>("Metal");
|
||||
let response = service
|
||||
.fetch_json::<_, Vec<dto::ArtistHeader>>(&request)
|
||||
.await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 1);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_songs_requires_auth() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
let request = protocol::genre_songs::<V8>("Metal");
|
||||
let response = service.fetch(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn genre_songs_golden_path() {
|
||||
let mut service = ServiceType::new(&test_name!()).await;
|
||||
service.complete_initial_setup().await;
|
||||
service.login_admin().await;
|
||||
service.index().await;
|
||||
service.login().await;
|
||||
|
||||
let request = protocol::genre_songs::<V8>("Metal");
|
||||
let response = service.fetch_json::<_, dto::SongList>(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let song_list = response.body();
|
||||
assert_eq!(song_list.paths.len(), 5);
|
||||
}
|
||||
|
|
|
@ -186,6 +186,55 @@ pub fn flatten<VERSION: ProtocolVersion>(path: &Path) -> Request<()> {
|
|||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn genres<VERSION: ProtocolVersion>() -> Request<()> {
|
||||
Request::builder()
|
||||
.header("Accept-Version", VERSION::header_value())
|
||||
.method(Method::GET)
|
||||
.uri("/api/genres")
|
||||
.body(())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn genre<VERSION: ProtocolVersion>(genre: &str) -> Request<()> {
|
||||
let endpoint = format!("/api/genres/{}", url_encode(genre));
|
||||
Request::builder()
|
||||
.header("Accept-Version", VERSION::header_value())
|
||||
.method(Method::GET)
|
||||
.uri(endpoint)
|
||||
.body(())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn genre_albums<VERSION: ProtocolVersion>(genre: &str) -> Request<()> {
|
||||
let endpoint = format!("/api/genres/{}/albums", url_encode(genre));
|
||||
Request::builder()
|
||||
.header("Accept-Version", VERSION::header_value())
|
||||
.method(Method::GET)
|
||||
.uri(endpoint)
|
||||
.body(())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn genre_artists<VERSION: ProtocolVersion>(genre: &str) -> Request<()> {
|
||||
let endpoint = format!("/api/genres/{}/artists", url_encode(genre));
|
||||
Request::builder()
|
||||
.header("Accept-Version", VERSION::header_value())
|
||||
.method(Method::GET)
|
||||
.uri(endpoint)
|
||||
.body(())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn genre_songs<VERSION: ProtocolVersion>(genre: &str) -> Request<()> {
|
||||
let endpoint = format!("/api/genres/{}/songs", url_encode(genre));
|
||||
Request::builder()
|
||||
.header("Accept-Version", VERSION::header_value())
|
||||
.method(Method::GET)
|
||||
.uri(endpoint)
|
||||
.body(())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn random<VERSION: ProtocolVersion>() -> Request<()> {
|
||||
Request::builder()
|
||||
.header("Accept-Version", VERSION::header_value())
|
||||
|
|
Loading…
Add table
Reference in a new issue