2020-01-09 23:09:05 +01:00
//+build linux darwin
// TODO Fix snapshot tests in Windows
// Response Snapshot tests. Only run in Linux and macOS, as they fail in Windows
// Probably because of EOL char differences
2016-03-03 02:00:55 +01:00
package responses_test
2016-03-02 23:23:26 +01:00
import (
2020-01-09 23:09:05 +01:00
"encoding/json"
"encoding/xml"
2016-03-09 16:09:15 +01:00
"time"
2020-01-30 20:43:24 +01:00
"github.com/deluan/navidrome/consts"
2020-01-24 01:44:08 +01:00
. "github.com/deluan/navidrome/server/subsonic/responses"
2020-01-09 23:09:05 +01:00
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
2016-03-02 23:23:26 +01:00
)
2020-01-09 23:09:05 +01:00
var _ = Describe ( "Responses" , func ( ) {
var response * Subsonic
BeforeEach ( func ( ) {
2020-01-30 20:43:24 +01:00
response = & Subsonic { Status : "ok" , Version : "1.8.0" , Type : consts . AppName , ServerVersion : "v0.0.0" }
2020-01-09 23:09:05 +01:00
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "EmptyResponse" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-02 23:23:26 +01:00
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "License" , func ( ) {
BeforeEach ( func ( ) {
2016-03-02 23:23:26 +01:00
response . License = & License { Valid : true }
} )
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "MusicFolders" , func ( ) {
BeforeEach ( func ( ) {
2016-03-02 23:23:26 +01:00
response . MusicFolders = & MusicFolders { }
2020-01-09 23:09:05 +01:00
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
2016-03-02 23:23:26 +01:00
folders := make ( [ ] MusicFolder , 2 )
2020-05-10 03:00:38 +02:00
folders [ 0 ] = MusicFolder { Id : 111 , Name : "aaa" }
folders [ 1 ] = MusicFolder { Id : 222 , Name : "bbb" }
2016-03-02 23:23:26 +01:00
response . MusicFolders . Folders = folders
2020-01-09 23:09:05 +01:00
} )
2016-03-02 23:23:26 +01:00
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-02 23:23:26 +01:00
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-02 23:23:26 +01:00
} )
} )
2020-01-09 23:09:05 +01:00
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "Indexes" , func ( ) {
BeforeEach ( func ( ) {
2020-05-10 03:00:38 +02:00
response . Indexes = & Indexes { LastModified : 1 , IgnoredArticles : "A" }
2020-01-09 23:09:05 +01:00
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
artists := make ( [ ] Artist , 1 )
2020-01-19 02:03:52 +01:00
t := time . Date ( 2016 , 03 , 2 , 20 , 30 , 0 , 0 , time . UTC )
artists [ 0 ] = Artist { Id : "111" , Name : "aaa" , Starred : & t }
2016-03-02 23:23:26 +01:00
index := make ( [ ] Index , 1 )
index [ 0 ] = Index { Name : "A" , Artists : artists }
response . Indexes . Index = index
} )
2020-01-09 23:09:05 +01:00
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-02 23:23:26 +01:00
} )
} )
2020-01-09 23:09:05 +01:00
} )
2016-03-02 23:23:26 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "Child" , func ( ) {
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
response . Directory = & Directory { Id : "1" , Name : "N" }
2016-03-04 15:09:16 +01:00
child := make ( [ ] Child , 1 )
t := time . Date ( 2016 , 03 , 2 , 20 , 30 , 0 , 0 , time . UTC )
child [ 0 ] = Child {
Id : "1" , IsDir : true , Title : "title" , Album : "album" , Artist : "artist" , Track : 1 ,
2020-05-20 05:50:27 +02:00
Year : 1985 , Genre : "Rock" , CoverArt : "1" , Size : 8421341 , ContentType : "audio/flac" ,
2016-03-04 15:09:16 +01:00
Suffix : "flac" , TranscodedContentType : "audio/mpeg" , TranscodedSuffix : "mp3" ,
Duration : 146 , BitRate : 320 , Starred : & t ,
}
response . Directory . Child = child
2020-01-09 23:09:05 +01:00
} )
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-04 15:09:16 +01:00
} )
} )
2020-01-09 23:09:05 +01:00
} )
2016-03-04 15:09:16 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "Directory" , func ( ) {
BeforeEach ( func ( ) {
2016-03-03 00:44:13 +01:00
response . Directory = & Directory { Id : "1" , Name : "N" }
2020-01-09 23:09:05 +01:00
} )
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
2016-03-03 04:22:31 +01:00
child := make ( [ ] Child , 1 )
2016-03-03 06:46:23 +01:00
child [ 0 ] = Child { Id : "1" , Title : "title" , IsDir : false }
2016-03-03 04:22:31 +01:00
response . Directory . Child = child
2020-01-09 23:09:05 +01:00
} )
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-03 04:22:31 +01:00
} )
2016-03-04 15:09:16 +01:00
} )
2020-01-09 23:09:05 +01:00
} )
2016-03-04 15:09:16 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "AlbumList" , func ( ) {
BeforeEach ( func ( ) {
2016-03-04 15:09:16 +01:00
response . AlbumList = & AlbumList { }
2020-01-09 23:09:05 +01:00
} )
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
2016-03-03 00:44:13 +01:00
child := make ( [ ] Child , 1 )
2016-03-04 15:09:16 +01:00
child [ 0 ] = Child { Id : "1" , Title : "title" , IsDir : false }
response . AlbumList . Album = child
2020-01-09 23:09:05 +01:00
} )
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-03 00:44:13 +01:00
} )
} )
2020-01-09 23:09:05 +01:00
} )
2016-03-03 00:44:13 +01:00
2020-01-09 23:09:05 +01:00
Describe ( "User" , func ( ) {
BeforeEach ( func ( ) {
2016-03-04 00:44:39 +01:00
response . User = & User { Username : "deluan" }
2020-01-09 23:09:05 +01:00
} )
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
2020-01-24 01:44:08 +01:00
response . User . Email = "navidrome@deluan.com"
2016-03-04 00:44:39 +01:00
response . User . Folder = [ ] int { 1 }
2020-01-09 23:09:05 +01:00
} )
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-04 00:44:39 +01:00
} )
} )
2020-01-09 23:09:05 +01:00
} )
Describe ( "Playlists" , func ( ) {
BeforeEach ( func ( ) {
2016-03-09 16:09:15 +01:00
response . Playlists = & Playlists { }
2020-01-09 23:09:05 +01:00
} )
2016-03-09 16:09:15 +01:00
2020-01-09 23:09:05 +01:00
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
2016-03-09 16:09:15 +01:00
} )
2020-01-09 23:09:05 +01:00
} )
Context ( "with data" , func ( ) {
2020-04-11 22:45:21 +02:00
timestamp , _ := time . Parse ( time . RFC3339 , "2020-04-11T16:43:00Z04:00" )
2020-01-09 23:09:05 +01:00
BeforeEach ( func ( ) {
2016-03-09 16:09:15 +01:00
pls := make ( [ ] Playlist , 2 )
2020-04-11 22:45:21 +02:00
pls [ 0 ] = Playlist {
Id : "111" ,
Name : "aaa" ,
Comment : "comment" ,
SongCount : 2 ,
Duration : 120 ,
Public : true ,
Owner : "admin" ,
2020-04-12 01:15:15 +02:00
Created : timestamp ,
Changed : timestamp ,
2020-04-11 22:45:21 +02:00
}
2016-03-09 16:09:15 +01:00
pls [ 1 ] = Playlist { Id : "222" , Name : "bbb" }
response . Playlists . Playlist = pls
2020-01-09 23:09:05 +01:00
} )
2016-03-09 16:09:15 +01:00
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-09 23:09:05 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2016-03-02 23:23:26 +01:00
} )
} )
2020-01-15 23:49:09 +01:00
Describe ( "Genres" , func ( ) {
BeforeEach ( func ( ) {
response . Genres = & Genres { }
} )
Context ( "without data" , func ( ) {
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-15 23:49:09 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-15 23:49:09 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
genres := make ( [ ] Genre , 3 )
genres [ 0 ] = Genre { SongCount : 1000 , AlbumCount : 100 , Name : "Rock" }
genres [ 1 ] = Genre { SongCount : 500 , AlbumCount : 50 , Name : "Reggae" }
genres [ 2 ] = Genre { SongCount : 0 , AlbumCount : 0 , Name : "Pop" }
response . Genres . Genre = genres
} )
2020-01-16 00:03:22 +01:00
It ( "should match .XML" , func ( ) {
2020-01-15 23:49:09 +01:00
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
2020-01-16 00:03:22 +01:00
It ( "should match .JSON" , func ( ) {
2020-01-15 23:49:09 +01:00
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
} )
2020-02-10 01:42:37 +01:00
Describe ( "ArtistInfo" , func ( ) {
BeforeEach ( func ( ) {
response . ArtistInfo = & ArtistInfo { }
} )
Context ( "without data" , func ( ) {
It ( "should match .XML" , func ( ) {
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
It ( "should match .JSON" , func ( ) {
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
Context ( "with data" , func ( ) {
BeforeEach ( func ( ) {
response . ArtistInfo . Biography = ` Black Sabbath is an English <a target='_blank' href="http://www.last.fm/tag/heavy%20metal" class="bbcode_tag" rel="tag">heavy metal</a> band `
response . ArtistInfo . MusicBrainzID = "5182c1d9-c7d2-4dad-afa0-ccfeada921a8"
response . ArtistInfo . LastFmUrl = "http://www.last.fm/music/Black+Sabbath"
response . ArtistInfo . SmallImageUrl = "http://userserve-ak.last.fm/serve/64/27904353.jpg"
response . ArtistInfo . MediumImageUrl = "http://userserve-ak.last.fm/serve/126/27904353.jpg"
response . ArtistInfo . LargeImageUrl = "http://userserve-ak.last.fm/serve/_/27904353/Black+Sabbath+sabbath+1970.jpg"
response . ArtistInfo . SimilarArtist = [ ] Artist {
{ Id : "22" , Name : "Accept" } ,
{ Id : "101" , Name : "Bruce Dickinson" } ,
{ Id : "26" , Name : "Aerosmith" } ,
}
} )
It ( "should match .XML" , func ( ) {
Expect ( xml . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
It ( "should match .JSON" , func ( ) {
Expect ( json . Marshal ( response ) ) . To ( MatchSnapshot ( ) )
} )
} )
} )
2020-01-09 23:09:05 +01:00
} )