2013-03-01 03:50:50 +03:00
|
|
|
using System.ServiceProcess;
|
2011-10-14 04:22:51 +03:00
|
|
|
using Moq;
|
|
|
|
using NUnit.Framework;
|
2011-10-23 08:26:43 +03:00
|
|
|
using NzbDrone.Common;
|
2013-06-28 03:04:52 +03:00
|
|
|
using NzbDrone.Common.EnvironmentInfo;
|
2013-08-07 08:32:22 +03:00
|
|
|
using NzbDrone.Host;
|
2011-11-13 21:16:31 +03:00
|
|
|
using NzbDrone.Test.Common;
|
2011-10-14 04:22:51 +03:00
|
|
|
|
|
|
|
namespace NzbDrone.App.Test
|
|
|
|
{
|
|
|
|
[TestFixture]
|
2013-04-16 07:52:41 +03:00
|
|
|
public class RouterTest : TestBase<Router>
|
2011-10-14 04:22:51 +03:00
|
|
|
{
|
2013-07-27 04:25:45 +03:00
|
|
|
[SetUp]
|
|
|
|
public void Setup()
|
|
|
|
{
|
|
|
|
WindowsOnly();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-10-14 04:22:51 +03:00
|
|
|
[Test]
|
|
|
|
public void Route_should_call_install_service_when_application_mode_is_install()
|
|
|
|
{
|
2013-05-11 02:53:50 +03:00
|
|
|
var serviceProviderMock = Mocker.GetMock<IServiceProvider>(MockBehavior.Strict);
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceProviderMock.Setup(c => c.Install(ServiceProvider.NZBDRONE_SERVICE_NAME));
|
|
|
|
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(false);
|
2012-01-17 10:12:22 +03:00
|
|
|
serviceProviderMock.Setup(c => c.Start(ServiceProvider.NZBDRONE_SERVICE_NAME));
|
2013-06-28 03:04:52 +03:00
|
|
|
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2013-04-16 07:52:41 +03:00
|
|
|
Subject.Route(ApplicationModes.InstallService);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceProviderMock.Verify(c => c.Install(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
|
2011-10-14 04:22:51 +03:00
|
|
|
}
|
|
|
|
|
2013-04-16 07:52:41 +03:00
|
|
|
|
2011-10-14 04:22:51 +03:00
|
|
|
[Test]
|
|
|
|
public void Route_should_call_uninstall_service_when_application_mode_is_uninstall()
|
|
|
|
{
|
2013-05-11 02:53:50 +03:00
|
|
|
var serviceProviderMock = Mocker.GetMock<IServiceProvider>();
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceProviderMock.Setup(c => c.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME));
|
2013-06-28 03:04:52 +03:00
|
|
|
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2013-04-16 07:52:41 +03:00
|
|
|
Subject.Route(ApplicationModes.UninstallService);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceProviderMock.Verify(c => c.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
|
2011-10-14 04:22:51 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Route_should_call_console_service_when_application_mode_is_console()
|
|
|
|
{
|
2013-06-28 03:04:52 +03:00
|
|
|
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2013-08-07 08:32:22 +03:00
|
|
|
Subject.Route(ApplicationModes.Interactive);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2013-04-16 07:52:41 +03:00
|
|
|
Mocker.GetMock<INzbDroneServiceFactory>().Verify(c => c.Start(), Times.Once());
|
2011-10-14 04:22:51 +03:00
|
|
|
}
|
|
|
|
|
2013-08-14 07:02:56 +03:00
|
|
|
[Test]
|
|
|
|
public void Route_should_call_service_start_when_run_in_service_mode()
|
2011-10-14 04:22:51 +03:00
|
|
|
{
|
2013-06-28 03:04:52 +03:00
|
|
|
var envMock = Mocker.GetMock<IRuntimeInfo>();
|
2013-05-11 02:53:50 +03:00
|
|
|
var serviceProvider = Mocker.GetMock<IServiceProvider>();
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2011-10-15 03:41:09 +03:00
|
|
|
envMock.SetupGet(c => c.IsUserInteractive).Returns(false);
|
|
|
|
|
|
|
|
serviceProvider.Setup(c => c.Run(It.IsAny<ServiceBase>()));
|
2013-08-14 06:39:50 +03:00
|
|
|
serviceProvider.Setup(c => c.ServiceExist(It.IsAny<string>())).Returns(true);
|
2013-08-14 07:02:56 +03:00
|
|
|
serviceProvider.Setup(c => c.GetStatus(It.IsAny<string>())).Returns(ServiceControllerStatus.StartPending);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2013-08-14 07:02:56 +03:00
|
|
|
Subject.Route();
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2011-10-15 03:41:09 +03:00
|
|
|
serviceProvider.Verify(c => c.Run(It.IsAny<ServiceBase>()), Times.Once());
|
2011-10-14 04:22:51 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void show_error_on_install_if_service_already_exist()
|
|
|
|
{
|
2013-04-16 07:52:41 +03:00
|
|
|
var consoleMock = Mocker.GetMock<IConsoleService>();
|
2013-05-11 02:53:50 +03:00
|
|
|
var serviceMock = Mocker.GetMock<IServiceProvider>();
|
2013-06-28 03:04:52 +03:00
|
|
|
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
|
|
|
consoleMock.Setup(c => c.PrintServiceAlreadyExist());
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
2013-04-16 07:52:41 +03:00
|
|
|
Subject.Route(ApplicationModes.InstallService);
|
2011-10-14 04:22:51 +03:00
|
|
|
|
|
|
|
}
|
2011-10-15 03:41:09 +03:00
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void show_error_on_uninstall_if_service_doesnt_exist()
|
|
|
|
{
|
2013-04-16 07:52:41 +03:00
|
|
|
var consoleMock = Mocker.GetMock<IConsoleService>();
|
2013-05-11 02:53:50 +03:00
|
|
|
var serviceMock = Mocker.GetMock<IServiceProvider>();
|
2013-06-28 03:04:52 +03:00
|
|
|
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
2011-10-15 03:41:09 +03:00
|
|
|
|
2013-07-09 03:47:09 +03:00
|
|
|
consoleMock.Setup(c => c.PrintServiceDoesNotExist());
|
2011-10-26 20:15:47 +03:00
|
|
|
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(false);
|
2011-10-15 03:41:09 +03:00
|
|
|
|
2013-04-16 07:52:41 +03:00
|
|
|
Subject.Route(ApplicationModes.UninstallService);
|
2011-10-15 03:41:09 +03:00
|
|
|
|
|
|
|
}
|
2011-10-14 04:22:51 +03:00
|
|
|
}
|
|
|
|
}
|