diff --git a/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs index 7b5b4fc1a..08204e6a7 100644 --- a/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs @@ -1,4 +1,4 @@ -using Moq; +using Moq; using NUnit.Framework; using NzbDrone.Common.Http; using NzbDrone.Core.Indexers; @@ -24,6 +24,64 @@ namespace NzbDrone.Core.Test.IndexerTests.IPTorrentsTests }; } + private void GivenOldFeedFormat() + { + Subject.Definition = new IndexerDefinition() + { + Name = "IPTorrents", + Settings = new IPTorrentsSettings() { BaseUrl = "https://iptorrents.com/torrents/rss?u=snip;tp=snip;3;80;93;37;download" } + }; + } + + private void GivenNewFeedFormat() + { + Subject.Definition = new IndexerDefinition() + { + Name = "IPTorrents", + Settings = new IPTorrentsSettings() { BaseUrl = "https://iptorrents.com/t.rss?u=USERID;tp=APIKEY;3;80;93;37;download" } + }; + } + + private void GivenFeedNoDownloadFormat() + { + Subject.Definition = new IndexerDefinition() + { + Name = "IPTorrents", + Settings = new IPTorrentsSettings() { BaseUrl = "https://iptorrents.com/t.rss?u=USERID;tp=APIKEY;3;80;93;37" } + }; + } + + [Test] + public void should_validate_old_feed_format() + { + GivenOldFeedFormat(); + var validationResult = Subject.Definition.Settings.Validate(); + validationResult.IsValid.Should().BeTrue(); + } + + [Test] + public void should_validate_new_feed_format() + { + GivenNewFeedFormat(); + var validationResult = Subject.Definition.Settings.Validate(); + validationResult.IsValid.Should().BeTrue(); + } + + [Test] + public void should_not_validate_bad_format() + { + var validationResult = Subject.Definition.Settings.Validate(); + validationResult.IsValid.Should().BeFalse(); + } + + [Test] + public void should_not_validate_no_download_format() + { + GivenFeedNoDownloadFormat(); + var validationResult = Subject.Definition.Settings.Validate(); + validationResult.IsValid.Should().BeFalse(); + } + [Test] public void should_parse_recent_feed_from_IPTorrents() { diff --git a/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs b/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs index fb300fbb4..e697e0dc9 100644 --- a/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs +++ b/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs @@ -12,11 +12,11 @@ namespace NzbDrone.Core.Indexers.IPTorrents { RuleFor(c => c.BaseUrl).ValidRootUrl(); - RuleFor(c => c.BaseUrl).Matches(@"/rss\?.+$"); + RuleFor(c => c.BaseUrl).Matches(@"(?:/|t\.)rss\?.+$"); - RuleFor(c => c.BaseUrl).Matches(@"/rss\?.+;download(?:;|$)") + RuleFor(c => c.BaseUrl).Matches(@"(?:/|t\.)rss\?.+;download(?:;|$)") .WithMessage("Use Direct Download Url (;download)") - .When(v => v.BaseUrl.IsNotNullOrWhiteSpace() && Regex.IsMatch(v.BaseUrl, @"/rss\?.+$")); + .When(v => v.BaseUrl.IsNotNullOrWhiteSpace() && Regex.IsMatch(v.BaseUrl, @"(?:/|t\.)rss\?.+$")); } }