diff --git a/NzbDrone.App.Test/EnviromentProviderTest.cs b/NzbDrone.App.Test/EnviromentProviderTest.cs deleted file mode 100644 index 3340a11d7..000000000 --- a/NzbDrone.App.Test/EnviromentProviderTest.cs +++ /dev/null @@ -1,30 +0,0 @@ -using FluentAssertions; -using NUnit.Framework; -using NzbDrone.Common; -using NzbDrone.Providers; - -namespace NzbDrone.App.Test -{ - [TestFixture] - public class EnviromentProviderTest - { - - [Test] - public void Is_user_interactive_should_be_false() - { - var enviromentController = new EnviromentProvider(); - - //Act - enviromentController.IsUserInteractive.Should().BeTrue(); - } - - [Test] - public void Log_path_should_not_be_empty() - { - var enviromentController = new EnviromentProvider(); - - //Act - enviromentController.LogPath.Should().NotBeBlank(); - } - } -} diff --git a/NzbDrone.App.Test/NzbDrone.App.Test.csproj b/NzbDrone.App.Test/NzbDrone.App.Test.csproj index df95ddc4e..515023417 100644 --- a/NzbDrone.App.Test/NzbDrone.App.Test.csproj +++ b/NzbDrone.App.Test/NzbDrone.App.Test.csproj @@ -82,7 +82,6 @@ - diff --git a/NzbDrone.Common.Test/EnviromentProviderTest.cs b/NzbDrone.Common.Test/EnviromentProviderTest.cs new file mode 100644 index 000000000..adfffb48f --- /dev/null +++ b/NzbDrone.Common.Test/EnviromentProviderTest.cs @@ -0,0 +1,44 @@ +// ReSharper disable InconsistentNaming + +using System.IO; +using FluentAssertions; +using NUnit.Framework; + +namespace NzbDrone.Common.Test +{ + [TestFixture] + public class EnviromentProviderTest + { + readonly EnviromentProvider enviromentController = new EnviromentProvider(); + + [Test] + + public void Is_user_interactive_should_be_false() + { + enviromentController.IsUserInteractive.Should().BeTrue(); + } + + [Test] + public void Log_path_should_not_be_empty() + { + enviromentController.LogPath.Should().NotBeBlank(); + Path.IsPathRooted(enviromentController.LogPath).Should().BeTrue("Path is not rooted"); + + } + + [Test] + public void StartupPath_should_not_be_empty() + { + enviromentController.StartUpPath.Should().NotBeBlank(); + Path.IsPathRooted(enviromentController.StartUpPath).Should().BeTrue("Path is not rooted"); + + } + + [Test] + public void ApplicationPath_should_not_be_empty() + { + enviromentController.ApplicationPath.Should().NotBeBlank(); + Path.IsPathRooted(enviromentController.ApplicationPath).Should().BeTrue("Path is not rooted"); + } + } +} diff --git a/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj b/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj new file mode 100644 index 000000000..d11d1784f --- /dev/null +++ b/NzbDrone.Common.Test/NzbDrone.Common.Test.csproj @@ -0,0 +1,91 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997} + Library + Properties + NzbDrone.Common.Test + NzbDrone.Common.Test + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\FluentAssertions.1.5.0.0\Lib\.NetFramework 4.0\FluentAssertions.dll + + + ..\packages\Moq.4.0.10827\lib\NET40\Moq.dll + + + ..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll + + + ..\packages\NUnit.2.5.10.11092\lib\nunit.framework.dll + + + ..\packages\NUnit.2.5.10.11092\lib\nunit.mocks.dll + + + ..\packages\NUnit.2.5.10.11092\lib\pnunit.framework.dll + + + + + + + + + + + + + + + + + + + + + + {F2BE0FDF-6E47-4827-A420-DD4EF82407F8} + NzbDrone.Common + + + {FAFB5948-A222-4CF6-AD14-026BE7564802} + NzbDrone.Test.Dummy + + + + + + + + \ No newline at end of file diff --git a/NzbDrone.Common.Test/ProcessProviderTests.cs b/NzbDrone.Common.Test/ProcessProviderTests.cs new file mode 100644 index 000000000..b3cc05b14 --- /dev/null +++ b/NzbDrone.Common.Test/ProcessProviderTests.cs @@ -0,0 +1,77 @@ +using System.Diagnostics; +using System.Linq; +using FluentAssertions; +using NUnit.Framework; + +namespace NzbDrone.Common.Test +{ + [TestFixture] + public class ProcessProviderTests + { + private const string DummyProccessName = "NzbDrone.Test.Dummy"; + ProcessProvider _processProvider; + + [SetUp] + public void Setup() + { + Process.GetProcessesByName(DummyProccessName).ToList().ForEach(c => c.Kill()); + _processProvider = new ProcessProvider(); + } + + [TearDown] + public void TearDown() + { + Process.GetProcessesByName(DummyProccessName).ToList().ForEach(c => c.Kill()); + } + + [TestCase(0)] + [TestCase(123332324)] + public void Kill_should_not_fail_on_invalid_process_is(int processId) + { + _processProvider.Kill(processId); + } + + [Test] + public void GetById_should_return_null_if_process_doesnt_exist() + { + _processProvider.GetProcessById(1234567).Should().BeNull(); + } + + [TestCase(0)] + [TestCase(-1)] + [TestCase(9999)] + public void GetProcessById_should_return_null_for_invalid_process(int processId) + { + _processProvider.GetProcessById(processId).Should().BeNull(); + } + + [Test] + public void Should_be_able_to_kill_procces() + { + var dummyProcess = StartDummyProcess(); + _processProvider.Kill(dummyProcess.Id); + dummyProcess.HasExited.Should().BeTrue(); + } + + [Test] + public void Should_be_able_to_start_process() + { + var startInfo = new ProcessStartInfo(DummyProccessName + ".exe"); + + //Act/Assert + _processProvider.GetProcessByName(DummyProccessName).Should() + .BeEmpty("Dummy process is already running"); + _processProvider.Start(startInfo).Should().NotBeNull(); + + _processProvider.GetProcessByName(DummyProccessName).Should() + .HaveCount(1, "excepted one dummy process to be already running"); + } + + public Process StartDummyProcess() + { + var startInfo = new ProcessStartInfo(DummyProccessName + ".exe"); + return _processProvider.Start(startInfo); + } + + } +} diff --git a/NzbDrone.Common.Test/Properties/AssemblyInfo.cs b/NzbDrone.Common.Test/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..0870584c0 --- /dev/null +++ b/NzbDrone.Common.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("NzbDrone.Common.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("NzbDrone.Common.Test")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("dc28491a-9f47-4823-a239-0e195d2ee42b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NzbDrone.Common.Test/ServiceControllerTests.cs b/NzbDrone.Common.Test/ServiceControllerTests.cs new file mode 100644 index 000000000..90595b837 --- /dev/null +++ b/NzbDrone.Common.Test/ServiceControllerTests.cs @@ -0,0 +1,79 @@ +// ReSharper disable InconsistentNaming + +using System.ServiceProcess; +using FluentAssertions; +using NUnit.Framework; + +namespace NzbDrone.Common.Test +{ + [TestFixture] + public class ServiceControllerTests + { + private const string ALWAYS_INSTALLED_SERVICE = "SCardSvr"; //Smart Card + private ServiceProvider serviceProvider; + + + [SetUp] + public void Setup() + { + serviceProvider = new ServiceProvider(); + } + + [Test] + public void Exists_should_find_existing_service() + { + //Act + var exists = serviceProvider.ServiceExist(ALWAYS_INSTALLED_SERVICE); + + exists.Should().BeTrue(); + } + + [Test] + public void Exists_should_not_find_random_service() + { + //Act + var exists = serviceProvider.ServiceExist("random_service_name"); + + exists.Should().BeFalse(); + } + + + [Test] + public void Service_should_be_installed_and_then_uninstalled() + { + //Act + serviceProvider.ServiceExist(ServiceProvider.NzbDroneServiceName).Should().BeFalse("Service already installed"); + serviceProvider.Install(); + serviceProvider.ServiceExist(ServiceProvider.NzbDroneServiceName).Should().BeTrue(); + serviceProvider.UnInstall(); + serviceProvider.ServiceExist(ServiceProvider.NzbDroneServiceName).Should().BeFalse(); + } + + [Test] + [Explicit] + public void UnInstallService() + { + //Act + serviceProvider.UnInstall(); + serviceProvider.ServiceExist(ServiceProvider.NzbDroneServiceName).Should().BeFalse(); + } + + [Test] + [Timeout(10000)] + public void Should_be_able_to_start_and_stop_service() + { + serviceProvider.GetService(ALWAYS_INSTALLED_SERVICE).Status + .Should().NotBe(ServiceControllerStatus.Running); + + serviceProvider.Start(ALWAYS_INSTALLED_SERVICE); + + serviceProvider.GetService(ALWAYS_INSTALLED_SERVICE).Status + .Should().Be(ServiceControllerStatus.Running); + + serviceProvider.Stop(ALWAYS_INSTALLED_SERVICE); + + serviceProvider.GetService(ALWAYS_INSTALLED_SERVICE).Status + .Should().Be(ServiceControllerStatus.Stopped); + } + } +} diff --git a/NzbDrone.Common.Test/packages.config b/NzbDrone.Common.Test/packages.config new file mode 100644 index 000000000..433116fba --- /dev/null +++ b/NzbDrone.Common.Test/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/NzbDrone.Core.Test/Framework/Fixtures.cs b/NzbDrone.Core.Test/Framework/Fixtures.cs index 8b6334262..05eb6d4a1 100644 --- a/NzbDrone.Core.Test/Framework/Fixtures.cs +++ b/NzbDrone.Core.Test/Framework/Fixtures.cs @@ -3,7 +3,6 @@ using System.IO; using NLog; using NLog.Config; using NUnit.Framework; -using NzbDrone.Core; using NzbDrone.Core.Providers; using NzbDrone.Core.Test.Framework; diff --git a/NzbDrone.Test.Dummy/Program.cs b/NzbDrone.Test.Dummy/Program.cs index c5356034a..746e7ef5c 100644 --- a/NzbDrone.Test.Dummy/Program.cs +++ b/NzbDrone.Test.Dummy/Program.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; using System.Diagnostics; -using System.Linq; -using System.Text; namespace NzbDrone.Test.Dummy { diff --git a/NzbDrone.sln b/NzbDrone.sln index 7551226fe..97196e319 100644 --- a/NzbDrone.sln +++ b/NzbDrone.sln @@ -21,6 +21,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Update.Test", "Nzb EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Common", "NzbDrone.Common\NzbDrone.Common.csproj", "{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Common.Test", "NzbDrone.Common.Test\NzbDrone.Common.Test.csproj", "{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -147,6 +149,18 @@ Global {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|x64.ActiveCfg = Release|Any CPU {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|x86.ActiveCfg = Release|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x64.ActiveCfg = Debug|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.ActiveCfg = Debug|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Any CPU.Build.0 = Release|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|x64.ActiveCfg = Release|Any CPU + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -156,6 +170,7 @@ Global {C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5} = {57A04B72-8088-4F75-A582-1158CF8291F7} {FAFB5948-A222-4CF6-AD14-026BE7564802} = {57A04B72-8088-4F75-A582-1158CF8291F7} {35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97} = {57A04B72-8088-4F75-A582-1158CF8291F7} + {BEC74619-DDBB-4FBA-B517-D3E20AFC9997} = {57A04B72-8088-4F75-A582-1158CF8291F7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35 diff --git a/packages/repositories.config b/packages/repositories.config index 5219697f0..c2c1aeb7c 100644 --- a/packages/repositories.config +++ b/packages/repositories.config @@ -8,4 +8,5 @@ + \ No newline at end of file