From 9a5f4bef63133cd0be672fbf1511175b43e796d5 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 3 Oct 2024 15:04:00 +0300 Subject: [PATCH] Check if root folder is not empty on files import --- .../MoveMovieFileFixture.cs | 9 +++++---- .../MediaFiles/MovieFileMovingService.cs | 14 +++++++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/MovieFileMovingServiceTests/MoveMovieFileFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/MovieFileMovingServiceTests/MoveMovieFileFixture.cs index 4af1d784c..d93dae7d7 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/MovieFileMovingServiceTests/MoveMovieFileFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/MovieFileMovingServiceTests/MoveMovieFileFixture.cs @@ -48,6 +48,11 @@ namespace NzbDrone.Core.Test.MediaFiles.MovieFileMovingServiceTests .Returns(@"C:\Test\Movies\Movie\File Name.avi".AsOsAgnostic()); var rootFolder = @"C:\Test\Movies\".AsOsAgnostic(); + + Mocker.GetMock() + .Setup(s => s.GetBestRootFolderPath(It.IsAny(), null)) + .Returns(rootFolder); + Mocker.GetMock() .Setup(s => s.FolderExists(rootFolder)) .Returns(true); @@ -55,10 +60,6 @@ namespace NzbDrone.Core.Test.MediaFiles.MovieFileMovingServiceTests Mocker.GetMock() .Setup(s => s.FileExists(It.IsAny())) .Returns(true); - - Mocker.GetMock() - .Setup(s => s.GetBestRootFolderPath(It.IsAny(), null)) - .Returns(rootFolder); } [Test] diff --git a/src/NzbDrone.Core/MediaFiles/MovieFileMovingService.cs b/src/NzbDrone.Core/MediaFiles/MovieFileMovingService.cs index b198697fd..20e91836e 100644 --- a/src/NzbDrone.Core/MediaFiles/MovieFileMovingService.cs +++ b/src/NzbDrone.Core/MediaFiles/MovieFileMovingService.cs @@ -30,9 +30,9 @@ namespace NzbDrone.Core.MediaFiles private readonly IDiskProvider _diskProvider; private readonly IMediaFileAttributeService _mediaFileAttributeService; private readonly IImportScript _scriptImportDecider; + private readonly IRootFolderService _rootFolderService; private readonly IEventAggregator _eventAggregator; private readonly IConfigService _configService; - private readonly IRootFolderService _rootFolderService; private readonly Logger _logger; public MovieFileMovingService(IUpdateMovieFileService updateMovieFileService, @@ -41,9 +41,9 @@ namespace NzbDrone.Core.MediaFiles IDiskProvider diskProvider, IMediaFileAttributeService mediaFileAttributeService, IImportScript scriptImportDecider, + IRootFolderService rootFolderService, IEventAggregator eventAggregator, IConfigService configService, - IRootFolderService rootFolderService, Logger logger) { _updateMovieFileService = updateMovieFileService; @@ -52,9 +52,9 @@ namespace NzbDrone.Core.MediaFiles _diskProvider = diskProvider; _mediaFileAttributeService = mediaFileAttributeService; _scriptImportDecider = scriptImportDecider; + _rootFolderService = rootFolderService; _eventAggregator = eventAggregator; _configService = configService; - _rootFolderService = rootFolderService; _logger = logger; } @@ -167,13 +167,17 @@ namespace NzbDrone.Core.MediaFiles private void EnsureMovieFolder(MovieFile movieFile, Movie movie, string filePath) { var movieFileFolder = Path.GetDirectoryName(filePath); - var movieFolder = movie.Path; var rootFolder = _rootFolderService.GetBestRootFolderPath(movieFolder); + if (rootFolder.IsNullOrWhiteSpace()) + { + throw new RootFolderNotFoundException($"Root folder was not found, '{movieFolder}' is not a subdirectory of a defined root folder."); + } + if (!_diskProvider.FolderExists(rootFolder)) { - throw new RootFolderNotFoundException(string.Format("Root folder '{0}' was not found.", rootFolder)); + throw new RootFolderNotFoundException($"Root folder '{rootFolder}' was not found."); } var changed = false;