Duplicated root folders are now blocked.

This commit is contained in:
kay.one 2012-01-18 21:04:55 -08:00
parent 3cb61e4c34
commit d967d4198c
3 changed files with 21 additions and 15 deletions

View File

@ -92,7 +92,6 @@ namespace NzbDrone.Core.Test.ProviderTests
} }
[Test] [Test]
public void None_existing_folder_returns_empty_list() public void None_existing_folder_returns_empty_list()
{ {
@ -123,5 +122,16 @@ namespace NzbDrone.Core.Test.ProviderTests
); );
} }
[Test]
public void adding_duplicated_root_folder_should_throw()
{
WithRealDb();
//Act
var rootDirProvider = Mocker.Resolve<RootDirProvider>();
rootDirProvider.Add(new RootDir { Path = @"C:\TV" });
Assert.Throws<InvalidOperationException>(() => rootDirProvider.Add(new RootDir { Path = @"C:\TV" }));
}
} }
} }

View File

@ -34,7 +34,15 @@ namespace NzbDrone.Core.Providers
public virtual void Add(RootDir rootDir) public virtual void Add(RootDir rootDir)
{ {
ValidatePath(rootDir); if (String.IsNullOrWhiteSpace(rootDir.Path) || !Path.IsPathRooted(rootDir.Path))
throw new ArgumentException("Invalid path");
if (!_diskProvider.FolderExists(rootDir.Path))
throw new DirectoryNotFoundException("Can't add root directory that doesn't exist.");
if (GetAll().Exists(r => DiskProvider.PathEquals(r.Path, rootDir.Path)))
throw new InvalidOperationException("Root directory already exist.");
_database.Insert(rootDir); _database.Insert(rootDir);
} }
@ -43,19 +51,6 @@ namespace NzbDrone.Core.Providers
_database.Delete<RootDir>(rootDirId); _database.Delete<RootDir>(rootDirId);
} }
private void ValidatePath(RootDir rootDir)
{
if (String.IsNullOrWhiteSpace(rootDir.Path) || !Path.IsPathRooted(rootDir.Path))
{
throw new ArgumentException("Invalid path");
}
if (!_diskProvider.FolderExists(rootDir.Path))
{
throw new DirectoryNotFoundException("Can't add root directory that doesn't exist.");
}
}
public List<String> GetUnmappedFolders(string path) public List<String> GetUnmappedFolders(string path)
{ {
Logger.Debug("Generating list of unmapped folders"); Logger.Debug("Generating list of unmapped folders");

View File

@ -93,6 +93,7 @@ namespace NzbDrone.Core.Providers
return Send(email, _configProvider.SmtpServer, _configProvider.SmtpPort, _configProvider.SmtpUseSsl, credentials); return Send(email, _configProvider.SmtpServer, _configProvider.SmtpPort, _configProvider.SmtpUseSsl, credentials);
} }
//TODO: make this throw instead of return false.
public virtual bool Send(MailMessage email, string server, int port, bool ssl, NetworkCredential credentials) public virtual bool Send(MailMessage email, string server, int port, bool ssl, NetworkCredential credentials)
{ {
try try