예제 #1
0
        public async Task TransferPlayback_GetDevice1IdPlayTrue_NoException()
        {
            // arrange
            var        http        = new HttpClient();
            IPlayerApi player      = new PlayerApi(http);
            string     accessToken = await TestsHelper.GetUserAccessToken();

            var devices = await player.GetDevices(accessToken : accessToken);

            // act
            if (devices.Any())
            {
                await player.TransferPlayback(devices.Last().Id, play : true, accessToken : accessToken);
            }
        }
예제 #2
0
        public async Task GetTracks_TrackIdsMarket_AvailableMarketsIsNull()
        {
            // arrange
            string[] trackIds = new[] { "5lA3pwMkBdd24StM90QrNR", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var api      = new TracksApi(http, accounts);

            // act
            var response = await api.GetTracks(trackIds, SpotifyCountryCodes.New_Zealand);

            // assert
            Assert.IsNull(response[0].AvailableMarkets);
        }
예제 #3
0
        public async Task SearchAlbums_AlbumName_FirstAlbumNameMatches()
        {
            // arrange
            const string albumName = "Trojan Presents: Dub";
            var          http      = new HttpClient();
            var          accounts  = new AccountsService(http, TestsHelper.GetLocalConfig());

            var albums = new AlbumsApi(http, accounts);

            // act
            var result = await albums.SearchAlbums(albumName);

            // assert
            Assert.AreEqual(albumName, result.Albums.Items[0].Name);
        }
예제 #4
0
        public async Task GetRelatedArtists_When_Given_Valid_ArtistId_Returns_Artists()
        {
            // arrange
            const string artistId = "6lcwlkAjBPSKnFBZjjZFJs";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var artists  = new ArtistsApi(http, accounts);

            // act
            var result = await artists.GetRelatedArtists(artistId);

            // assert
            Assert.AreNotSame(result.Length, 0);
        }
예제 #5
0
        public async Task GetAvailableGenreSeeds_NoParams_NoError()
        {
            // arrange
            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new BrowseApi(http, accounts);

            // act
            var response = await api.GetAvailableGenreSeeds();

            string name = response[0];

            Trace.WriteLine(name);
        }
예제 #6
0
        public async Task GetNewReleases_NoParams_NoError()
        {
            // arrange
            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new BrowseApi(http, accounts);

            // act
            var response = await api.GetNewReleases();

            string name = response.Items[0].Name;

            Trace.WriteLine(name);
        }
예제 #7
0
        public async Task GetArtistsAlbums_Limit2_ItemsLength2()
        {
            // arrange
            const string artistId = "1tpXaFf2F55E7kVJON4j4G";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var artists  = new ArtistsApi(http, accounts);

            // act
            var result = await artists.GetArtistsAlbums(artistId, country : SpotifyCountryCodes.New_Zealand, limit : 2);

            // assert
            Assert.AreEqual(2, result.Items.Length);
        }
예제 #8
0
        public async Task SearchArtists_ArtistName_FirstArtistNameMatches()
        {
            // arrange
            const string artistName = "Radiohead";
            var          http       = new HttpClient();
            var          accounts   = new AccountsService(http, TestsHelper.GetLocalConfig());

            var artists = new ArtistsApi(http, accounts);

            // act
            var result = await artists.SearchArtists(artistName, 3);

            // assert
            Assert.AreEqual(artistName, result.Artists.Items[0].Name);
        }
예제 #9
0
        public async Task GetRecentlyPlayedTracks_GetNextPage_ItemsAny()
        {
            // arrange
            var        http        = new HttpClient();
            IPlayerApi player      = new PlayerApi(http);
            string     accessToken = await TestsHelper.GetUserAccessToken();

            // act
            var history = await player.GetRecentlyPlayedTracks(accessToken : accessToken);

            var moreHistory = await player.GetRecentlyPlayedTracks(before : history.Cursors.Before, accessToken : accessToken);

            // assert
            Assert.IsTrue(moreHistory.Items.Any());
        }
예제 #10
0
        public async Task GetTracksAudioFeatures_TrackIds_ThreeFeatures()
        {
            // arrange
            string[] trackIds = new[] { "5lA3pwMkBdd24StM90QrNR", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTracksAudioFeatures(trackIds);

            // assert
            Assert.IsTrue(response != null && response.Length == 3);
        }
예제 #11
0
        public async Task GetTrackAudioFeatures_TrackId_TempoNotZero()
        {
            // arrange
            const string trackId = "5lA3pwMkBdd24StM90QrNR";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTrackAudioFeatures(trackId);

            // assert
            Assert.IsTrue(response.Tempo != 0);
        }
예제 #12
0
        public async Task GetTrack_TrackId_CorrectTrackName()
        {
            // arrange
            const string trackId = "5lA3pwMkBdd24StM90QrNR";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTrack(trackId);

            // assert
            Assert.AreEqual("P.Y.T. (Pretty Young Thing)", response.Name);
        }
        public async Task GetUsersProfile_NoUserId_DeserializedResponse()
        {
            // arrange
            var config      = TestsHelper.GetLocalConfig();
            var accessToken = config["SpotifyUserBearerAccessToken"];
            var http        = new HttpClient();
            var accounts    = new UserAccountsService(http, config);

            var api = new UsersProfileApi(http, accounts);

            // act
            // must use a User Access Token for this call
            var response = await api.GetCurrentUsersProfile(accessToken : accessToken);

            Assert.IsNotNull(response);
        }
예제 #14
0
        public async Task GetTrack_TrackIdNoMarket_MarketsArrayExists()
        {
            // arrange
            const string trackId = "5lA3pwMkBdd24StM90QrNR";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTrack(trackId);

            // assert
            Assert.IsTrue(response.AvailableMarkets.Length > 0);
        }
예제 #15
0
        public async Task GetArtistsTopTracks_NZCountryCode_ArtistIdMatches()
        {
            // arrange
            const string artistId = "1tpXaFf2F55E7kVJON4j4G";
            const string market   = SpotifyCountryCodes.New_Zealand;

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var artists  = new ArtistsApi(http, accounts);

            // act
            var result = await artists.GetArtistsTopTracks(artistId, market);

            // assert
            Assert.AreEqual(artistId, result[0].Artists[0].Id);
        }
예제 #16
0
        public async Task GetArtists_2ValidArtists_ArtistIdsMatch()
        {
            // arrange
            string[] artistIds = new[] { "1tpXaFf2F55E7kVJON4j4G", "0oSGxfWSnnOXhD2fKuz2Gy" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var artists  = new ArtistsApi(http, accounts);

            // act
            var result = await artists.GetArtists(artistIds);

            // assert
            Assert.AreEqual(artistIds[0], result[0].Id);
            Assert.AreEqual(artistIds[1], result[1].Id);
        }
예제 #17
0
        public async Task SearchPlaylists_PlaylistName_AnyItems()
        {
            // arrange
            const string query = "dance";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new PlaylistsApi(http, accounts);

            // act
            var response = await api.SearchPlaylists(query);

            // assert
            Assert.IsTrue(response.Items.Any());
        }
예제 #18
0
        public async Task GetArtist_ArtistsId_CorrectArtistName()
        {
            // arrange
            const string artistId = "1tpXaFf2F55E7kVJON4j4G";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new ArtistsApi(http, accounts);

            // act
            var response = await api.GetArtist(artistId);

            // assert
            Assert.AreEqual("Black Rebel Motorcycle Club", response.Name);
        }
예제 #19
0
        public async Task GetTracks_TrackIdsNoMarket_MarketsArrayPopulated()
        {
            // arrange
            string[] trackIds = new[] { "5lA3pwMkBdd24StM90QrNR", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTracks(trackIds);

            // assert
            Assert.IsTrue(response[0].AvailableMarkets.Length > 0);
        }
예제 #20
0
        public async Task GetTrack_TrackIdMarket_AvailableMarketsIsNull()
        {
            // arrange
            const string trackId = "11dFghVXANMlKmJXsNCbd8";
            const string market  = SpotifyCountryCodes.Spain;

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTrack(trackId, market);

            // assert
            Assert.IsNull(response?.AvailableMarkets?.Length == 0 ? null : "Array not empty.");
        }
        public async Task GetTrack_TrackIdMarket_AvailableMarketsIsNull()
        {
            // arrange
            const string trackId = "5lA3pwMkBdd24StM90QrNR";
            const string market  = SpotifyCountryCodes.New_Zealand;

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTrack(trackId, market);

            // assert
            Assert.IsNull(response.AvailableMarkets);
        }
예제 #22
0
        public async Task GetRecommendations_SeedArtists_NoError()
        {
            // arrange
            string[] seedArtists = new[] { "1tpXaFf2F55E7kVJON4j4G", "4Z8W4fKeB5YxbusRsdQVPb" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new BrowseApi(http, accounts);

            // act
            var response = await api.GetRecommendations(seedArtists, null, null);

            string name = response.Tracks[0].Name;

            Trace.WriteLine(name);
        }
예제 #23
0
        public async Task ChangePlaylistDetails_NewNameDescriptionNotChanged_PlaylistDescriptionEqualsOriginalDescription()
        {
            string accessToken = await TestsHelper.GetUserAccessToken();

            string description = $"_Test{Guid.NewGuid():N}";
            string newName     = $"_Test{Guid.NewGuid():N}";
            var    playlist    = await CreatePlaylist(accessToken, description);

            // act
            await api.ChangePlaylistDetails(playlist.Id, new PlaylistDetails { Name = newName },
                                            accessToken : await TestsHelper.GetUserAccessToken());

            // assert
            var changedPlaylist = await api.GetPlaylist(playlist.Id, accessToken);

            Assert.AreEqual(description, changedPlaylist.Description);
        }
예제 #24
0
        public async Task GetAlbums_2ValidAlbums_AlbumIdsMatch()
        {
            // arrange
            // spotify:album:49PXnWG6cuZbCZSolJWrYa
            string[] albumIds = new[] { "5ObHI23lQY2S5FGizlNrob", "49PXnWG6cuZbCZSolJWrYa" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var albums   = new AlbumsApi(http, accounts);

            // act
            var result = await albums.GetAlbums(albumIds);

            // assert
            Assert.AreEqual(albumIds[0], result[0].Id);
            Assert.AreEqual(albumIds[1], result[1].Id);
        }
예제 #25
0
        public async Task SearchTracks_Isrc_CorrectResult()
        {
            // arrange
            const string isrc  = "USUM71703861";
            const string query = "isrc:" + isrc;

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.SearchTracks(query);

            // assert
            Assert.AreEqual(isrc, response.Items[0].ExternalIds.Isrc);
        }
예제 #26
0
        public async Task GetAlbum_AlbumsId_CorrectAlbumName()
        {
            // arrange
            // spotify:album:5ObHI23lQY2S5FGizlNrob
            const string albumId = "5ObHI23lQY2S5FGizlNrob";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new AlbumsApi(http, accounts);

            // act
            var response = await api.GetAlbum(albumId);

            // assert
            Assert.AreEqual("Trojan Presents: Dub", response.Name);
        }
예제 #27
0
        public async Task SearchTracks_NonExistentIsrc_ItemsZero()
        {
            // arrange
            const string isrc  = "NOPE12345678";
            const string query = "isrc:" + isrc;

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.SearchTracks(query);

            // assert
            Assert.AreEqual(0, response.Items.Length);
        }
예제 #28
0
        public async Task GetArtistsAlbums_IncludeGroupsSingles_ItemsAllSingles()
        {
            // arrange
            const string artistId = "1tpXaFf2F55E7kVJON4j4G";

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());
            var artists  = new ArtistsApi(http, accounts);

            // act
            var result = await artists.GetArtistsAlbums(
                artistId,
                country : SpotifyCountryCodes.New_Zealand,
                includeGroups : new[] { SpotifyArtistAlbumGroups.Single });

            // assert
            Assert.IsTrue(result.Items.All(a => a.AlbumType == SpotifyArtistAlbumGroups.Single));
        }
예제 #29
0
        //[TestMethod] // not a reliable test - intermittent gateway timeout on Spotify end
        public async Task GetTrackAudioAnalysis_TrackId_BarsIsNotNullOrZero()
        {
            // arrange
            const string trackId = "5lA3pwMkBdd24StM90QrNR";

            var http = new HttpClient();

            http.Timeout = TimeSpan.FromSeconds(30);
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTrackAudioAnalysis(trackId);

            // assert
            Assert.IsTrue(response.Bars != null && response.Bars.Length > 0);
        }
예제 #30
0
        public async Task GetTracks_TrackIds_CorrectTrackNames()
        {
            // arrange
            string[] trackIds = new[] { "11dFghVXANMlKmJXsNCbNl", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" };

            var http     = new HttpClient();
            var accounts = new AccountsService(http, TestsHelper.GetLocalConfig());

            var api = new TracksApi(http, accounts);

            // act
            var response = await api.GetTracks(trackIds);

            // assert
            Assert.AreEqual("Cut To The Feeling", response[0].Name);
            Assert.AreEqual("Call Me Maybe", response[1].Name);
            Assert.AreEqual("Run Away With Me", response[2].Name);
        }