示例#1
0
            public void ThrowsAccessExceptionIfAccessModeIsPartyAndLockPlaylistRemovalIsTrue()
            {
                var songMock = Substitute.For<Song>("TestPath", TimeSpan.Zero);

                var settings = new CoreSettings
                {
                    LockPlaylist = true
                };

                using (Library library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    Guid token = library.LocalAccessControl.RegisterLocalAccessToken();
                    library.LocalAccessControl.SetLocalPassword(token, "Password");
                    library.LocalAccessControl.DowngradeLocalAccess(token);

                    library.AddSongToPlaylist(songMock);

                    Assert.Throws<AccessException>(() => library.RemoveFromPlaylist(new[] { 0 }, token));
                }
            }
示例#2
0
            public async Task SetsCurrentSongIndexIfChangingToOtherPlaylistAndPlayingFirstSong()
            {
                var settings = new CoreSettings
                {
                    EnablePlaylistTimeout = false
                };

                using (Library library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    var coll = library.CurrentPlaylistChanged.StartWith(library.CurrentPlaylist)
                        .Select(x => x.WhenAnyValue(y => y.CurrentSongIndex)).Switch().CreateCollection();

                    Guid token = library.LocalAccessControl.RegisterLocalAccessToken();

                    library.AddSongToPlaylist(Helpers.SetupSongMock());

                    await library.PlaySongAsync(0, token);

                    library.AddPlaylist("Playlist 2", token);
                    library.SwitchToPlaylist(library.Playlists.Last(), token);
                    library.AddSongToPlaylist(Helpers.SetupSongMock());

                    await library.PlaySongAsync(0, token);

                    Assert.Equal(new int?[] { null, 0, null, null, 0, null }, coll);
                }
            }
示例#3
0
            public async Task CallsAudioPlayerPause()
            {
                var audioPlayerCallback = Substitute.For<IMediaPlayerCallback>();

                using (Library library = new LibraryBuilder().WithPlaylist().WithAudioPlayer(audioPlayerCallback).Build())
                {
                    Song song = Helpers.SetupSongMock();

                    library.AddSongToPlaylist(song);

                    Guid token = library.LocalAccessControl.RegisterLocalAccessToken();

                    await library.PlaySongAsync(0, token);

                    await library.PauseSongAsync(token);
                }

                audioPlayerCallback.Received(1).PauseAsync();
            }
示例#4
0
            public void PlaylistTimeoutThrowsInvalidOperationException()
            {
                using (Library library = new LibraryBuilder().WithPlaylist().Build())
                {
                    Guid accessToken = library.LocalAccessControl.RegisterLocalAccessToken();
                    library.LocalAccessControl.SetLocalPassword(accessToken, "password");
                    library.LocalAccessControl.DowngradeLocalAccess(accessToken);

                    Song song = Helpers.SetupSongMock();

                    library.AddSongToPlaylist(song);
                    Assert.Throws<InvalidOperationException>(() => library.AddSongToPlaylist(song));
                }
            }
示例#5
0
            public void DisabledTimeoutSmokeTest()
            {
                var settings = new CoreSettings
                {
                    EnablePlaylistTimeout = false
                };

                using (Library library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    Guid accessToken = library.LocalAccessControl.RegisterLocalAccessToken();
                    library.LocalAccessControl.SetLocalPassword(accessToken, "password");
                    library.LocalAccessControl.DowngradeLocalAccess(accessToken);

                    Song song = Helpers.SetupSongMock();

                    library.AddSongToPlaylist(song);
                    library.AddSongToPlaylist(song);

                    Assert.Equal(2, library.CurrentPlaylist.Count());
                }
            }
示例#6
0
            public void ThrowsInvalidOperationExceptionIfVotingIsDisabled()
            {
                var settings = new CoreSettings
                {
                    EnableVotingSystem = false
                };

                using (var library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    library.Initialize();
                    library.AddSongToPlaylist(Helpers.SetupSongMock());

                    Guid accessToken = library.RemoteAccessControl.RegisterRemoteAccessToken(Guid.NewGuid());

                    Assert.Throws<InvalidOperationException>(() => library.VoteForPlaylistEntry(0, accessToken));
                }
            }
示例#7
0
            public void IgnoresAccessPermission()
            {
                var settings = new CoreSettings
                {
                    EnableVotingSystem = true,
                    LockRemoteControl = true,
                    RemoteControlPassword = "******",
                    MaxVoteCount = 2,
                    EnablePlaylistTimeout = false
                };

                using (var library = new LibraryBuilder().WithPlaylist().WithSettings(settings).Build())
                {
                    library.Initialize();
                    library.AddSongToPlaylist(Helpers.SetupSongMock());
                    library.AddSongToPlaylist(Helpers.SetupSongMock());

                    Guid accessToken = library.RemoteAccessControl.RegisterRemoteAccessToken(Guid.NewGuid());

                    // Guests can vote
                    library.VoteForPlaylistEntry(0, accessToken);

                    library.RemoteAccessControl.UpgradeRemoteAccess(accessToken, "Password");

                    // Admins can vote
                    library.VoteForPlaylistEntry(1, accessToken);
                }
            }