using System ;
using FizzWare.NBuilder ;
using FluentAssertions ;
using Moq ;
using NUnit.Framework ;
using NzbDrone.Core.Model ;
using NzbDrone.Core.Providers ;
using NzbDrone.Core.Repository ;
using NzbDrone.Core.Test.Framework ;
using NzbDrone.Test.Common ;
using NzbDrone.Test.Common.AutoMoq ;
using Prowlin ;
// ReSharper disable InconsistentNaming
namespace NzbDrone.Core.Test.ProviderTests
{
[Explicit]
[TestFixture]
public class ProwlProviderTest : CoreTest
{
private const string _apiKey = "c3bdc0f48168f72d546cc6872925b160f5cbffc1" ;
private const string _apiKey2 = "46a710a46b111b0b8633819b0d8a1e0272a3affa" ;
private const string _badApiKey = "1234567890abcdefghijklmnopqrstuvwxyz1234" ;
[Test]
public void Verify_should_return_true_for_a_valid_apiKey ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . Verify ( _apiKey ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
[Test]
public void Verify_should_return_false_for_an_invalid_apiKey ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . Verify ( _badApiKey ) ;
//Assert
ExceptionVerification . ExpectedWarns ( 1 ) ;
result . Should ( ) . BeFalse ( ) ;
}
[Test]
public void SendNotification_should_return_true_for_a_valid_apiKey ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone" , _apiKey ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
[Test]
public void SendNotification_should_return_false_for_an_invalid_apiKey ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone" , _badApiKey ) ;
//Assert
ExceptionVerification . ExpectedWarns ( 1 ) ;
result . Should ( ) . BeFalse ( ) ;
}
[Test]
public void SendNotification_should_alert_with_high_priority ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone (High)" , _apiKey , NotificationPriority . High ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
[Test]
public void SendNotification_should_alert_with_VeryLow_priority ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone (VeryLow)" , _apiKey , NotificationPriority . VeryLow ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
[Test]
public void SendNotification_should_have_a_call_back_url ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone" , _apiKey , NotificationPriority . Normal , "http://www.nzbdrone.com" ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
[Test]
public void SendNotification_should_return_true_for_two_valid_apiKey ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone" , _apiKey + ", " + _apiKey2 ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
[Test]
public void SendNotification_should_return_true_for_valid_apiKey_with_bad_apiKey ( )
{
//Setup
WithStrictMocker ( ) ;
//Act
var result = Mocker . Resolve < ProwlProvider > ( ) . SendNotification ( "NzbDrone Test" , "This is a test message from NzbDrone" , _apiKey + ", " + _badApiKey ) ;
//Assert
result . Should ( ) . BeTrue ( ) ;
}
}
}