using System.Collections.Generic; using FluentAssertions; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Eztv; using NzbDrone.Core.Indexers.Newznab; using NzbDrone.Core.Indexers.NzbClub; using NzbDrone.Core.Indexers.Wombles; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; using NUnit.Framework; using NzbDrone.Test.Common.Categories; using System.Linq; namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests { [IntegrationTest] public class IndexerIntegrationTests : CoreTest { [SetUp] public void SetUp() { UseRealHttp(); } [Test] [Explicit] public void nzbclub_rss() { var indexer = new NzbClub(); var result = Subject.FetchRss(indexer); ValidateResult(result); } [Test] public void wombles_rss() { var indexer = new Wombles(); var result = Subject.FetchRss(indexer); ValidateResult(result, skipSize: true, skipInfo: true); } [Test] public void extv_rss() { var indexer = new Eztv(); var result = Subject.FetchRss(indexer); ValidateTorrentResult(result, skipSize: false, skipInfo: true); } [Test] public void nzbsorg_rss() { var indexer = new Newznab(); indexer.Settings = new NewznabSettings { ApiKey = "64d61d3cfd4b75e51d01cbc7c6a78275", Url = "http://nzbs.org" }; indexer.InstanceDefinition = new IndexerDefinition(); indexer.InstanceDefinition.Name = "nzbs.org"; var result = Subject.FetchRss(indexer); ValidateResult(result); } private void ValidateResult(IList reports, bool skipSize = false, bool skipInfo = false) { reports.Should().NotBeEmpty(); reports.Should().NotContain(c => string.IsNullOrWhiteSpace(c.Title)); reports.Should().NotContain(c => string.IsNullOrWhiteSpace(c.DownloadUrl)); reports.Should().OnlyContain(c => c.PublishDate.Year > 2000); reports.Should().OnlyContain(c => c.DownloadUrl.StartsWith("http")); if (!skipInfo) { reports.Should().NotContain(c => string.IsNullOrWhiteSpace(c.InfoUrl)); } if (!skipSize) { reports.Should().OnlyContain(c => c.Size > 0); } } private void ValidateTorrentResult(IList reports, bool skipSize = false, bool skipInfo = false) { reports.Should().OnlyContain(c => c.GetType() == typeof(TorrentInfo)); ValidateResult(reports, skipSize, skipInfo); reports.Should().OnlyContain(c => c.DownloadUrl.EndsWith(".torrent")); reports.Cast().Should().OnlyContain(c => c.MagnetUrl.StartsWith("magnet:")); reports.Cast().Should().NotContain(c => string.IsNullOrWhiteSpace(c.InfoHash)); } } }