using System.Collections.Generic; using Moq; using NLog; using NLog.Config; using NLog.Targets; using NUnit.Framework; using NzbDrone.Api; using NzbDrone.Api.Commands; using NzbDrone.Api.RootFolders; using NzbDrone.Common.Composition; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Core.Configuration; using NzbDrone.Core.Datastore; using NzbDrone.Core.Jobs; using NzbDrone.Host; using NzbDrone.Host.Owin; using NzbDrone.Host.Owin.MiddleWare; using NzbDrone.Integration.Test.Client; using NzbDrone.Test.Common.Categories; using RestSharp; namespace NzbDrone.Integration.Test { [TestFixture] [IntegrationTest] public abstract class IntegrationTest { private NancyBootstrapper _bootstrapper; private IHostController _hostController; protected RestClient RestClient { get; private set; } private static readonly Logger Logger = LogManager.GetLogger("TEST"); protected IContainer Container { get; private set; } protected SeriesClient Series; protected ClientBase RootFolders; protected ClientBase Commands; protected ReleaseClient Releases; protected IndexerClient Indexers; private static void ResetLogger() { LogManager.Configuration = new LoggingConfiguration(); var consoleTarget = new ConsoleTarget { Layout = "${time} - ${logger} - ${message} ${exception}" }; LogManager.Configuration.AddTarget(consoleTarget.GetType().Name, consoleTarget); LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, consoleTarget)); LogManager.ReconfigExistingLoggers(); } [SetUp] public void SmokeTestSetup() { ResetLogger(); Container = MainAppContainerBuilder.BuildContainer(new string[0]); Container.Register(typeof(IAppFolderInfo), new IntegrationTestFolderInfo()); DbFactory.RegisterDatabase(Container); var taskManagerMock = new Mock(); taskManagerMock.Setup(c => c.GetPending()).Returns(new List()); Container.TinyContainer.Register(taskManagerMock.Object); _bootstrapper = new NancyBootstrapper(Container.TinyContainer); var hostConfig = new Mock(); hostConfig.SetupGet(c => c.Port).Returns(1313); _hostController = new OwinHostController(hostConfig.Object, new[] { new NancyMiddleWare(_bootstrapper) }, Logger); InitRestClients(); _hostController.StartServer(); } private void InitRestClients() { RestClient = new RestClient(_hostController.AppUrl + "/api/"); Series = new SeriesClient(RestClient); Releases = new ReleaseClient(RestClient); RootFolders = new ClientBase(RestClient); Commands = new ClientBase(RestClient); Indexers = new IndexerClient(RestClient); } [TearDown] public void SmokeTestTearDown() { _hostController.StopServer(); _bootstrapper.Shutdown(); } } }