From 877235c8a2d9a537b3a8129a93f3dc2e4288d806 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 11 Apr 2019 17:49:09 -0700 Subject: [PATCH] Fixed: Already Imported check failing for some torrent releases --- .../AlreadyImportedSpecificationFixture.cs | 32 +++++++++++++++++++ .../AlreadyImportedSpecification.cs | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs index 1821563ef..5e563e293 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/AlreadyImportedSpecificationFixture.cs @@ -128,6 +128,38 @@ namespace NzbDrone.Core.Test.DecisionEngineTests Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } + [Test] + public void should_be_accepted_if_grabbed_download_id_and_release_torrent_hash_is_unknown() + { + var downloadId = Guid.NewGuid().ToString().ToUpper(); + + GivenHistoryItem(downloadId, TITLE, _hdtv720p, HistoryEventType.Grabbed); + GivenHistoryItem(downloadId, TITLE, _hdtv1080p, HistoryEventType.DownloadFolderImported); + + _remoteEpisode.Release = Builder.CreateNew() + .With(t => t.DownloadProtocol = DownloadProtocol.Torrent) + .With(t => t.InfoHash = null) + .Build(); + + Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); + } + + [Test] + public void should_be_accepted_if_grabbed_download_does_not_have_an_id() + { + var downloadId = Guid.NewGuid().ToString().ToUpper(); + + GivenHistoryItem(null, TITLE, _hdtv720p, HistoryEventType.Grabbed); + GivenHistoryItem(downloadId, TITLE, _hdtv1080p, HistoryEventType.DownloadFolderImported); + + _remoteEpisode.Release = Builder.CreateNew() + .With(t => t.DownloadProtocol = DownloadProtocol.Torrent) + .With(t => t.InfoHash = downloadId) + .Build(); + + Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); + } + [Test] public void should_be_rejected_if_grabbed_download_id_matches_release_torrent_hash() { diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/AlreadyImportedSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/AlreadyImportedSpecification.cs index 196977bee..53cbd9abe 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/AlreadyImportedSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/AlreadyImportedSpecification.cs @@ -77,7 +77,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications { var torrentInfo = release as TorrentInfo; - if (torrentInfo != null && torrentInfo.InfoHash.ToUpper() == lastGrabbed.DownloadId) + if (torrentInfo?.InfoHash != null && torrentInfo.InfoHash.ToUpper() == lastGrabbed.DownloadId) { _logger.Debug("Has same torrent hash as a grabbed and imported release"); return Decision.Reject("Has same torrent hash as a grabbed and imported release");