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