コード例 #1
0
        public async Task InitializeAsync_WithInvalidAuthResponse_ShouldReturnUnauthorised()
        {
            // Setup
            PlexMediaServerConfig config = new PlexMediaServerConfig
            {
                ServerAddress = "http://192.168.0.5:32400",
                PlexAuthenticationRequestUser = new BasicAuth
                {
                    Username = "******",
                    Password = "******"
                }
            };
            var httpService      = Substitute.For <IHttpService>();
            var authenticator    = Substitute.For <IPlexAuthenticator>();
            var settingsProvider = Substitute.For <IPlexServerSettingsProvider>();
            var mediaProvider    = Substitute.For <IPlexMediaProvider>();
            var instance         = new PlexMediaService(config, httpService, authenticator, settingsProvider, mediaProvider);

            authenticator
            .AuthenticateAsync(Arg.Any <CancellationToken>())
            .Returns(info => new UserAuthenticationResponse());

            // Perform
            InitializationStatus actual = await instance.InitializeAsync((servers) => servers.First().PublicAddress, CancellationToken.None);

            // Assert
            Assert.Equal(InitializationStatus.Unauthorised, actual);
        }
コード例 #2
0
        public async Task GetAllLibrariesAsync_WithValidParams_ShouldCallAndReturnMediaProviderLibraries()
        {
            // Setup
            PlexMediaServerConfig config = new PlexMediaServerConfig
            {
                ServerAddress = "http://192.168.0.5:32400",
                PlexAuthenticationRequestUser = new BasicAuth
                {
                    Username = "******",
                    Password = "******"
                }
            };
            var httpService      = Substitute.For <IHttpService>();
            var authenticator    = Substitute.For <IPlexAuthenticator>();
            var settingsProvider = Substitute.For <IPlexServerSettingsProvider>();
            var mediaProvider    = Substitute.For <IPlexMediaProvider>();
            var instance         = new PlexMediaService(config, httpService, authenticator, settingsProvider, mediaProvider);

            mediaProvider
            .GetAllLibrariesAsync(Arg.Any <CancellationToken>())
            .Returns(info => new List <Library>
            {
                new Library()
            });

            // Perform
            var actual = await instance.GetAllLibrariesAsync(CancellationToken.None);

            // Assert
            Assert.True(actual.Any());
        }
コード例 #3
0
        public async Task InitializeAsync_WithSettings_ShouldSetSettings()
        {
            // Setup
            PlexMediaServerConfig config = new PlexMediaServerConfig
            {
                ServerAddress = "http://192.168.0.5:32400",
                PlexAuthenticationRequestUser = new BasicAuth
                {
                    Username = "******",
                    Password = "******"
                }
            };
            var httpService      = Substitute.For <IHttpService>();
            var authenticator    = Substitute.For <IPlexAuthenticator>();
            var settingsProvider = Substitute.For <IPlexServerSettingsProvider>();
            var mediaProvider    = Substitute.For <IPlexMediaProvider>();
            var instance         = new PlexMediaService(config, httpService, authenticator, settingsProvider, mediaProvider);
            var expectedUser     = new User
            {
                Email = "*****@*****.**"
            };

            authenticator
            .GetAllServers(Arg.Any <CancellationToken>())
            .Returns(info => new List <Device>()
            {
                new Device()
            });
            authenticator
            .AuthenticateAsync(Arg.Any <CancellationToken>())
            .Returns(info => new UserAuthenticationResponse
            {
                User = expectedUser
            });
            settingsProvider
            .GetServerSettingsAsync(Arg.Any <CancellationToken>())
            .Returns(info => new ServerPreferences
            {
                Setting = new List <Setting>()
                {
                    new Setting()
                }
            });

            // Perform
            InitializationStatus actual = await instance.InitializeAsync((servers) => servers.First().PublicAddress, CancellationToken.None);

            // Assert
            Assert.True(instance.Configuration.ServerPreferences.Setting.Any());
        }
コード例 #4
0
        public async Task InitializeAsync_WithValidServers_ShouldSetDiscoveredServersContext()
        {
            // Setup
            PlexMediaServerConfig config = new PlexMediaServerConfig
            {
                ServerAddress = "http://192.168.0.5:32400",
                PlexAuthenticationRequestUser = new BasicAuth
                {
                    Username = "******",
                    Password = "******"
                }
            };
            var httpService      = Substitute.For <IHttpService>();
            var authenticator    = Substitute.For <IPlexAuthenticator>();
            var settingsProvider = Substitute.For <IPlexServerSettingsProvider>();
            var mediaProvider    = Substitute.For <IPlexMediaProvider>();
            var instance         = new PlexMediaService(config, httpService, authenticator, settingsProvider, mediaProvider);
            var expectedUser     = new User
            {
                Email = "*****@*****.**"
            };
            var expectedDevice = new Device
            {
                Id = "some_server"
            };

            authenticator
            .GetAllServers(Arg.Any <CancellationToken>())
            .Returns(info =>
                     new List <Device>()
            {
                expectedDevice
            });
            authenticator
            .AuthenticateAsync(Arg.Any <CancellationToken>())
            .Returns(info => new UserAuthenticationResponse
            {
                User = expectedUser
            });

            // Perform
            InitializationStatus actual = await instance.InitializeAsync((servers) => servers.First().PublicAddress, CancellationToken.None);

            // Assert
            Assert.NotNull(instance.Configuration?.DiscoveredServers);
            Assert.Equal(expectedDevice.Id, instance.Configuration.DiscoveredServers.First().Id);
        }
コード例 #5
0
        public async Task GetAllLibraries_WithValidParamsAndResponse_ShouldSetMediaContainer()
        {
            // Setup
            var plexService = PlexMediaService
                              .GetDefaultInstance("USERNAME", "PASSWORD");
            Func <IEnumerable <Device>, string> serverSelectorDelegate = (servers) => servers
                                                                         .FirstOrDefault()?
                                                                         .LocalConnection?
                                                                         .Uri;

            // Perform
            await plexService.InitializeAsync(serverSelectorDelegate, CancellationToken.None);

            IEnumerable <Library> libraries = await plexService.GetAllLibrariesAsync(CancellationToken.None);

            IEnumerable <Movie> movies = await libraries.First().GetMoviesAsync;

            // Assert
            Assert.True(libraries.Any());
            Assert.True(movies.Any());
        }
コード例 #6
0
        public async Task Initialize_WithValidParamsAndResponse_ShouldSetMediaContainer()
        {
            // Setup
            var plexService = PlexMediaService
                              .GetDefaultInstance("USERNAME", "PASSWORD");
            Func <IEnumerable <Device>, string> serverSelectorDelegate = (servers) => servers
                                                                         .FirstOrDefault()?
                                                                         .LocalConnection?
                                                                         .Uri;

            // Perform action 'Initialize'
            await plexService.InitializeAsync(serverSelectorDelegate, CancellationToken.None);

            // Assert that 'ShouldSetMediaContainer' = 'WithValidParamsAndResponse'
            Assert.NotNull(plexService.Configuration.ServerPreferences);
            Assert.True(plexService.Configuration.ServerPreferences.Size > 0);
            Assert.True(plexService.Configuration.ServerPreferences.Setting.Any());

            Assert.NotNull(plexService.Configuration.DiscoveredServers);
            Assert.NotEmpty(plexService.Configuration.DiscoveredServers);
        }
コード例 #7
0
        public void Constructor_WithValidParams_ShouldConstruct()
        {
            // Setup
            PlexMediaServerConfig config = new PlexMediaServerConfig
            {
                ServerAddress = "http://192.168.0.5:32400",
                PlexAuthenticationRequestUser = new BasicAuth
                {
                    Username = "******",
                    Password = "******"
                }
            };
            var httpService      = Substitute.For <IHttpService>();
            var authenticator    = Substitute.For <IPlexAuthenticator>();;
            var settingsProvider = Substitute.For <IPlexServerSettingsProvider>();
            var mediaProvider    = Substitute.For <IPlexMediaProvider>();

            // Perform
            var actual = new PlexMediaService(config, httpService, authenticator, settingsProvider, mediaProvider);

            // Assert
            Assert.NotNull(actual);
        }