Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/Sonarr/commit/50f97e824e1eaec864529e0f38181cbbe8b003ff?style=split&whitespace=ignore-eol You should set ROOT_URL correctly, otherwise the web may not work correctly.

Fixed Unit Test for SabController.AddByUrl

Added unit test for SabController.IsInQueue (Need to Mock SAB)
SabController uses HttpUtility.UrlEncode on Title to clean it
pull/7/merge
markus101 15 years ago
parent 67b617b950
commit 50f97e824e

@ -19,21 +19,61 @@ namespace NzbDrone.Core.Test
public void AddByUrl() public void AddByUrl()
{ {
//Setup //Setup
String key = "SabnzbdInfo"; string sabnzbdInfo = "192.168.5.55:2222";
String value = "192.168.5.55:2222"; string apikey = "5c770e3197e4fe763423ee7c392c25d1";
string username = "admin";
string password = "pass";
string priority = "0";
var repo = new Mock<IRepository>();
var config = new Mock<IConfigController>(); var config = new Mock<IConfigController>();
config.Setup(c => c.SetValue("SabnzbdInfo", "192.168.5.55:2222")); config.Setup(c => c.GetValue("SabnzbdInfo", String.Empty, false)).Returns(sabnzbdInfo);
config.Setup(c => c.GetValue("ApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("Username", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("Password", String.Empty, false)).Returns(password);
config.Setup(c => c.GetValue("Priority", String.Empty, false)).Returns(priority);
//var config = new Config() { Key = key, Value = value };
var target = new SabController(config.Object, new Mock<ILog>().Object); var target = new SabController(config.Object, new Mock<ILog>().Object);
ItemInfo nzb = new ItemInfo();
nzb.Link = new Uri("http://www.nzbclub.com/nzb_download.aspx?mid=1950232");
nzb.Title = "This is an Nzb";
//Act //Act
bool result = target.AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232"); bool result = target.AddByUrl(nzb);
//Assert //Assert
Assert.AreEqual(true, result); Assert.AreEqual(true, result);
} }
[Test]
public void IsInQueue()
{
//Setup
string sabnzbdInfo = "192.168.5.55:2222";
string apikey = "5c770e3197e4fe763423ee7c392c25d1";
string username = "admin";
string password = "pass";
string priority = "0";
var config = new Mock<IConfigController>();
config.Setup(c => c.GetValue("SabnzbdInfo", String.Empty, false)).Returns(sabnzbdInfo);
config.Setup(c => c.GetValue("ApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("Username", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("Password", String.Empty, false)).Returns(password);
config.Setup(c => c.GetValue("Priority", String.Empty, false)).Returns(priority);
var target = new SabController(config.Object, new Mock<ILog>().Object);
Episode episode = new Episode();
FeedItem item = new FeedItem();
item.TitleFix = "This is my fixed title";
episode.FeedItem = item;
//Act
bool result = target.IsInQueue(episode);
//Assert
Assert.AreEqual(false, result);
}
} }
} }

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web;
using log4net; using log4net;
using System.Xml.Linq; using System.Xml.Linq;
using System.Xml; using System.Xml;
@ -28,7 +29,7 @@ namespace NzbDrone.Core.Controllers
const string mode = "addurl"; const string mode = "addurl";
const string cat = "tv"; const string cat = "tv";
string name = nzb.Link.ToString().Replace("&", "%26"); string name = nzb.Link.ToString().Replace("&", "%26");
string nzbName = CleanUrlString(nzb.Title); string nzbName = HttpUtility.UrlEncode(nzb.Title);
string action = string.Format("mode={0}&name={1}&cat={2}&nzbname={3}", mode, name, cat, nzbName); string action = string.Format("mode={0}&name={1}&cat={2}&nzbname={3}", mode, name, cat, nzbName);
string request = GetSabRequest(action); string request = GetSabRequest(action);
@ -45,7 +46,7 @@ namespace NzbDrone.Core.Controllers
{ {
string action = "mode=queue&output=xml"; string action = "mode=queue&output=xml";
XDocument xDoc = XDocument.Load(action); XDocument xDoc = XDocument.Load(GetSabRequest(action));
//If an Error Occurred, retuyrn //If an Error Occurred, retuyrn
if (xDoc.Descendants("error").Count() != 0) if (xDoc.Descendants("error").Count() != 0)
@ -87,22 +88,5 @@ namespace NzbDrone.Core.Controllers
_logger.DebugFormat("Queue Repsonse: [{0}]", response); _logger.DebugFormat("Queue Repsonse: [{0}]", response);
return response; return response;
} }
private string CleanUrlString(string name)
{
string result = name;
string[] badCharacters =
{
"%", "<", ">", "#", "{", "}", "|", "\\", "^", "`", "[", "]", "`", ";", "/", "?",
":", "@", "=", "&", "$"
};
string[] goodCharacters =
{
"%25", "%3C", "%3E", "%23", "%7B", "%7D", "%7C", "%5C", "%5E", "%7E", "%5B",
"%5D", "%60", "%3B", "%2F", "%3F", "%3A", "%40", "%3D", "%26", "%24"
};
return result.Trim();
}
} }
} }

@ -141,6 +141,10 @@
<Compile Include="Controllers\ITvDbController.cs" /> <Compile Include="Controllers\ITvDbController.cs" />
<Compile Include="Controllers\SabController.cs" /> <Compile Include="Controllers\SabController.cs" />
<Compile Include="Repository\Config.cs" /> <Compile Include="Repository\Config.cs" />
<Compile Include="Repository\Episode.cs" />
<Compile Include="Repository\FeedItem.cs" />
<Compile Include="Repository\ItemInfo.cs" />
<Compile Include="Repository\Site.cs" />
<Compile Include="Repository\Series.cs" /> <Compile Include="Repository\Series.cs" />
<Compile Include="Main.cs" /> <Compile Include="Main.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />

Loading…
Cancel
Save