mirror of
https://github.com/Sonarr/Sonarr.git
synced 2024-12-12 11:15:43 +02:00
Added validation in RoodDirProvider to stop adding of invalid root folders.
This commit is contained in:
parent
8686eb5d32
commit
87079dcb52
@ -40,15 +40,14 @@ public void GetRootDirs()
|
||||
Assert.AreEqual(result.Count, 2);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AddRootDir()
|
||||
[TestCase("D:\\TV Shows\\")]
|
||||
[TestCase("//server//folder")]
|
||||
public void AddRootDir(string path)
|
||||
{
|
||||
//Setup
|
||||
var mocker = new AutoMoqer();
|
||||
mocker.SetConstant(MockLib.GetEmptyRepository());
|
||||
|
||||
const string path = @"C:\TV\";
|
||||
|
||||
//Act
|
||||
var rootDirProvider = mocker.Resolve<RootDirProvider>();
|
||||
rootDirProvider.Add(new RootDir { Path = path });
|
||||
@ -62,25 +61,26 @@ public void AddRootDir()
|
||||
Assert.AreEqual(path, rootDirs.First().Path);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UpdateRootDir()
|
||||
|
||||
[TestCase("D:\\TV Shows\\")]
|
||||
[TestCase("//server//folder")]
|
||||
public void UpdateRootDir(string newPath)
|
||||
{
|
||||
//Setup
|
||||
var mocker = new AutoMoqer();
|
||||
mocker.SetConstant(MockLib.GetEmptyRepository());
|
||||
|
||||
const string path = @"C:\TV2";
|
||||
|
||||
//Act
|
||||
var rootDirProvider = mocker.Resolve<RootDirProvider>();
|
||||
rootDirProvider.Add(new RootDir { Path = @"C:\TV" });
|
||||
rootDirProvider.Update(new RootDir { Id = 1, Path = path });
|
||||
rootDirProvider.Update(new RootDir { Id = 1, Path = newPath });
|
||||
|
||||
//Assert
|
||||
var rootDirs = rootDirProvider.GetAll();
|
||||
Assert.IsNotEmpty(rootDirs);
|
||||
rootDirs.Should().HaveCount(1);
|
||||
Assert.AreEqual(path, rootDirs.First().Path);
|
||||
Assert.AreEqual(newPath, rootDirs.First().Path);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@ -144,5 +144,25 @@ public void empty_folder_path_throws()
|
||||
var mocker = new AutoMoqer();
|
||||
mocker.Resolve<RootDirProvider>().GetUnmappedFolders("");
|
||||
}
|
||||
|
||||
[TestCase("")]
|
||||
[TestCase(null)]
|
||||
[TestCase("BAD PATH")]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void invalid_folder_path_throws_on_add(string path)
|
||||
{
|
||||
var mocker = new AutoMoqer();
|
||||
mocker.Resolve<RootDirProvider>().Add(new RootDir { Id = 0, Path = path });
|
||||
}
|
||||
|
||||
[TestCase("")]
|
||||
[TestCase(null)]
|
||||
[TestCase("BAD PATH")]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void invalid_folder_path_throws_on_update(string path)
|
||||
{
|
||||
var mocker = new AutoMoqer();
|
||||
mocker.Resolve<RootDirProvider>().Update(new RootDir { Id = 2, Path = path });
|
||||
}
|
||||
}
|
||||
}
|
@ -11,15 +11,15 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class RootDirProvider
|
||||
{
|
||||
private readonly IRepository _sonioRepo;
|
||||
private readonly IRepository _repository;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
|
||||
|
||||
public RootDirProvider(IRepository sonicRepo, SeriesProvider seriesProvider, DiskProvider diskProvider)
|
||||
public RootDirProvider(IRepository repository, SeriesProvider seriesProvider, DiskProvider diskProvider)
|
||||
{
|
||||
_sonioRepo = sonicRepo;
|
||||
_repository = repository;
|
||||
_diskProvider = diskProvider;
|
||||
_seriesProvider = seriesProvider;
|
||||
}
|
||||
@ -28,27 +28,39 @@ public RootDirProvider(IRepository sonicRepo, SeriesProvider seriesProvider, Dis
|
||||
|
||||
public virtual List<RootDir> GetAll()
|
||||
{
|
||||
return _sonioRepo.All<RootDir>().ToList();
|
||||
return _repository.All<RootDir>().ToList();
|
||||
}
|
||||
|
||||
public virtual int Add(RootDir rootDir)
|
||||
public virtual void Add(RootDir rootDir)
|
||||
{
|
||||
return Convert.ToInt32(_sonioRepo.Add(rootDir));
|
||||
ValidatePath(rootDir);
|
||||
|
||||
_repository.Add(rootDir);
|
||||
}
|
||||
|
||||
public virtual void Remove(int rootDirId)
|
||||
{
|
||||
_sonioRepo.Delete<RootDir>(rootDirId);
|
||||
_repository.Delete<RootDir>(rootDirId);
|
||||
}
|
||||
|
||||
public virtual void Update(RootDir rootDir)
|
||||
{
|
||||
_sonioRepo.Update(rootDir);
|
||||
ValidatePath(rootDir);
|
||||
|
||||
_repository.Update(rootDir);
|
||||
}
|
||||
|
||||
private static void ValidatePath(RootDir rootDir)
|
||||
{
|
||||
if (String.IsNullOrWhiteSpace(rootDir.Path) || !Path.IsPathRooted(rootDir.Path))
|
||||
{
|
||||
throw new ArgumentException("Invalid path");
|
||||
}
|
||||
}
|
||||
|
||||
public virtual RootDir GetRootDir(int rootDirId)
|
||||
{
|
||||
return _sonioRepo.Single<RootDir>(rootDirId);
|
||||
return _repository.Single<RootDir>(rootDirId);
|
||||
}
|
||||
|
||||
public List<String> GetUnmappedFolders(string path)
|
||||
|
Loading…
Reference in New Issue
Block a user