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)); } }
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); } }
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(); }
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)); } }
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()); } }
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)); } }
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); } }